23
Oct 08

Meeting minutes of the Calendar developer status call (2008-10-22)

  • Participants: mschroeder, dbo, clarkbw, sipaq, fallen
  • Simon (sipaq):
    • sent email to gozer about l10n builds for trunk: gozer mentioned pretty near to l10n builds for sunbird, lightning more complicated. Localizers keep on asking sipaq about localized builds
    • L10n work on Thunderbird, finding unused strings.
  • Martin (mschroeder):
    • done some cleanup recently, removed gCalendarWindow
    • litmus test case cleanup with Andreas
  • Daniel (dbo):
    • has been left sick most of the week, but started working again yesterday
    • more on iTIP overhaul
    • some investigations into recent tb/ltn crasher
    • thinks about a parentless occurrences solution
  • Bryan (clarkbw):
  • Philipp (fallen):
    • getting rid of the toolbar items, either just removing or replacing them
    • posted bugs about what needs to be discussed
    • everything P1 that’s in work
    • probably after barcelona: unifinder tied to gloda/exptoolbar
  • Simon reminds of blogging!
    • Daniel will try to write something up on the iTIP overhaul
    • Philipp will try to blog about the toolbar work or on integrating into gloda
    • Martin will come up with a topic by the weekend

15
Oct 08

Calendar code moving to comm-central and status update (October 14)

It’s been a while since my last status update on September 19 and I want to give you an update on what we’ve been up to in the last four weeks.

But before I do that, I want to move your attention to the fact that all calendar code development has been moved away from the MOZILLA_1_8_BRANCH to our new repository comm-central, that we share with the Thunderbird and SeaMonkey developers.

This benefits us in various ways:

  • We get all the benefits of the Gecko platform development over the last two years (e.g. better memory management, faster javascript execution, better performance, etc.)
  • The platform is actually developed further, while only security and crash fixes were added to the 1.8 branch, which allows us to remove a lot of workarounds and ugly hacks in our codebase
  • We can now actively focus on getting Lightning in shape for the next Thunderbird release (TB 3) in early 2009. Before our move to comm-central Lightning on TB3 nightlies was broken in various ways and it’s getting better every day now

There is one major downside as well:

  • As announced earlier on various occasions, Lightning 0.9 was the last release for Thunderbird 2.0.0.x releases and Sunbird 0.9 was the last release for Windows 98, Windows ME and MacOS 10.2 and 10.3.

    The reason for this is, that with the very small development team that we are having, we can only support one platform in an optimal way. For us this is Thunderbird 3, which we hope will feature a fully integrated Lightning extension in its default install. Everything else has to come after this longstanding goal of our project. There will still be Sunbird releases of course and we are planning to release Sunbird 1.0 together with Thunderbird 3

With that being said, it’s time to mention the tremendous work of our developers in the last four weeks, where 63 bugs where fixed. Here’s the complete list:

  • 386432:
    Unify front-end code of Lightning and Sunbird
  • 393748:
    Active tasks are dimmed in task list while completed tasks are shown in black
  • 405196:
    Unifinder: selecting event in unifinder doesn’t select it in day or week view
  • 407961:
    Google sends Email reminders to all non-google attendees, 24 hours before the event
  • 414336:
    Last day in minimonth view is always not bold, independent whether events exist or not
  • 414957:
    Missing link on the Plugins pane of the Add-ons manager dialog
  • 419007:
    Invalid ics files don’t trigger INVALID_TIMEZONE error, times are assumed as floating
  • 428091:
    Unifinder close button icon is misaligned/misplaced
  • 431775:
    Remove unused gopher files
  • 432440:
    A new calendar file of Israel holidays – 2008-2009
  • 435166:
    Better error handling for repeating tasks without start date
  • 437418:
    Libical shouldn’t add extra linefeed after inner components of VTIMEZONE.
  • 437441:
    Finalize calendar-timezones.xpi
  • 437622:
    Upgrade via update mechanism fails, restart results in error on local calendars
  • 438807:
    Introduce “Meeting” category
  • 438964:
    Closing Edit Event window without modifications prompts Save Event dialog
  • 448753:
    Lightning and GData Provider are incompatible to Thunderbird 3.0b1pre
  • 450147:
    Some locales need to add “of” to the yearly-period-absolute-controls
  • 450391:
    Remove workaround for Task context menu
  • 451035:
    Remove the strings time.1 – time.23
  • 451912:
    Major update not offered when some language packs are installed
  • 453330:
    Make it possible to build Sunbird from comm-central
  • 453422:
    Add et (Estonian) locale for Calendar
  • 455182:
    Problems refreshing multiple Digest-authed CalDAV calendars
  • 455221:
    Graphic glitch on invitations-pane
  • 455262:
    Use PROPFIND instead of REPORT in CalDAV refresh()es
  • 455512:
    Dom_events.xpt differences bettwen ppc and i386 architectures breaks builds
  • 455728:
    Consolidate sort mechanisms in different views and trees
  • 455733:
    Consolidate filter mechanisms in different views and trees
  • 455768:
    Convert calendar/ from application/x-javascript to application/javascript
  • 455837:
    Support for re-enabling disabled calendars
  • 455863:
    Select event in unifinder scrolls multiday-view to time in its timezone
  • 455868:
    Update Sunbird and Lightning version numbers for comm-central builds
  • 455869:
    Remove MOZILLA_1_8_BRANCH ifdefs from calendar trunk code
  • 456037:
    Provide Sunbird nightly builds from comm-central
  • 456102:
    Minimonth should generally be able to show free-busy states
  • 456170:
    Cannot change authentication information for GData Provider
  • 456362:
    Thunderbird3: Move Today Pane Button into Status Bar
  • 456715:
    Remove COMM_BUILD ifdefs from calendar code
  • 456724:
    Add fy-NL to calendar all-locales list
  • 456865:
    Select Calendar dialog doesn’t show Google Calendars when accepting invitations
  • 456923:
    Add a build target to compare bin/ and the package list
  • 457078:
    Incorrect Icelandic language name on download page
  • 457692:
    Switch the invites dialog to use local Address Book autocomplete on toolkit interfaces
  • 457755:
    Add l10n.ini file for Calendar for new python-based compare-locales
  • 457830:
    Delete extended properties
  • 457854:
    Drag Shadow doesn’t disappear after event resize
  • 457890:
    Lightning 0.9/Google Calendar 0.5 do not synchronize Google Alarms anymore
  • 458078:
    Sunbird-bin shouldn’t try and link directly with libtracemalloc anymore
  • 458163:
    Lightning 0.9 source tarball is missing on FTP server
  • 458201:
    Link to 64-bit Linux version of Lightning is incorrect
  • 458368:
    Move and integrate calendar/prototypes to calendar/base
  • 458404:
    Remove -moz-pre-wrap from calendar-views.css
  • 458492:
    Llink to lightning/nightly/latest-comm-central/ builds
  • 458589:
    Drag and drop ical (.ics) attachments onto calendar icon does nothing
  • 458611:
    windows nightly build link is broken
  • 458808:
    Remove some unused entities from calendar.dtd
  • 458830:
    Lightning build instructions are obsolete
  • 458858:
    Lightning keeps asking for password on startup
  • 459107:
    Sunbird startup error (NS_ERROR_FILE_NOT_FOUND – nsIXPCComponents_Utils.import)
  • 459182:
    Syntax error in iCal file for Israeli holidays
  • 459432:
    Please move to Gecko 1.9
  • 459951:
    Update to links and description for CSV to iCal tool

Many thanks go to all developers, contributors, localizers, testers, and supporters that make this possible.


14
Oct 08

Fred’s developer comments: Cleaning up the trees – the first step

A few days ago, a new Calendar contributor, Fred Jendrzejewski, fixed bug 455728 and bug 455733. I believe that what he experienced here might be beneficial for other would-be contributors, so I asked him to write about his experience in the calendar codebase. Here is his report:

  • Some introducing things
    Few weeks ago I started to work on the mozilla calendar code. My first interesting patches became available in the nightly builds last week and I would like to report about my experience. As this is my first blog post for the mozilla community, I will introduce myself shortly. I am a German 22-year-old physic student in his last year. Since two years I have the great pleasure to live in Paris and to get to know the French way of life (I love it).

    A few months ago, I started to work on the Spicebird project, but the problems in the calendar code also catched my attention. I began working on the task / event lists and didn’t like that everything was written twice. The idea was that tasks and events are very similar. This property is used almost everywhere in the code( by the calIItemBase object), except those trees. So I decided, highly motivated, to rewrite the two trees and to work on the simpler code.

    So, I asked Philipp and Berend for there opinions and they liked it, but over time, the tree code became so complex that it was almost impossible to review the patches nicely. I had to step back and simplify the code first. Following Berends proposition, I started to sort out the hole mechanism for sorting and filtering items in the trees.

  • The new way of sorting and filtering
    So I sorted out functions, modified the code and abstracted it. If you want to sort a item array now, you don’t need to write this function completely by your own: you can use a preset of sort functions in the calUtils.js file. Even more practical is the solution for the filtering. We now have a calFilter object, which can handle the most common filtering mechanisms for you. We now have built-in solutions for property filtering and date filters.

    First, you can associate a text field for text search to the filter object, just by passing the id as a string to the text-field to the filter. Another possibility is to set a property filter out of the property filter bag (a predefined set of filter functions) in the calFilter object. This code is just one string away from usage, as the text-field filter. If you don’t like any of the built-in functions, you also can write your own filter function and set it as the property filter of the calFilter object.
    Here again, the date filter can use a predefined set of times (today, this week…). But you can also write your own date filter. To filter out the next 8 days you have to pass the string to the calFilter and it should work already. You’ll still have the possibility to set the start and the end date manually. This is done in only one line.

    Why is it nicer? I think that these are some nice functions that developers of the core code and for extensions can use. If they find other very common filter functions the filter bags can be extended easily. So actually I have cleaned up the trees now and we have created a first common set of filter and sort functions in the calendar code, that can be used as a standard implementation.

  • What will come?
    Now I started to work on a unification of observers and tree internal mechanisms. It seems possible to have only one tree implementation with only minor modifications for the event or task tree. Wait and see…


02
Oct 08

L10n dashboard now available to Calendar localizers as well

Thanks to gozer, Mozilla Messaging’s build guru, we now have a working l10n dashboard for the calendar localizations. Localizers, who also do l10n work for Firefox or Thunderbird should already be familiar with the dashboard, for the others here’s a quick explanation of the dashboard table:

  • Locale: The locale code for each calendar locale
  • Tree: The tree ID, the Mozilla Messaging dashboard currently knows two trees:
    • tb3x: Information on the localization status of the Thunderbird localization of a given locale
    • cal3x: Information on the localization status of the Sunbird/Lightning localization of a given locale
  • %: Percentage of completion of a locale (Please note, that this will probably never reach 100%, because there are some strings in each localization which shouldn’t be translated)
  • Errors: Number of localization errors
  • Missing: Number of missing strings
  • Unchanged: Number of unchanged strings excl. access- and commandkeys (this relates to the % number mentioned above)
  • Stats: Graphical history of locale status (H) and compare-locales output (C)
  • Status: Graphical indicator for the current state of the localization

I hope this helps our localizers in working even more effectively than they have already done in the past (if that’s even possible). Thanks again, gozer!


23
Sep 08

Lightning 0.9 and Sunbird 0.9 are out!

The Calendar Project is proud to report, that the 0.9 release of Lightning and Sunbird has been completed and is now available via AMO and the Calendar Project website.

Five and a half months after the 0.8 release we move one step closer to our 1.0 release, currently planned for early 2009. Notable improvements of this release are:

  • Events spanning days now have a visual indicator indicating them as connected events
  • When reloading a remote calendar a progress indicator is now shown
  • The so-called “minimonth” (small calendar month in the upper left) has been given a visual overhaul
  • The calendar views (day, week, multiweek, month) have been given a visual overhaul
  • The today pane can now be displayed in calendar mode and task mode as well [Lightning-only]
  • CalDAV support and interoperability with various CalDAV servers has been improved
  • iMip/iTip support (support for email invitations) has been greatly improved [Lightning-only]
  • The application stability and memory consumption has been greatly improved
  • Lightning 0.9 is intended to be the last release for the Thunderbird 2 series. For the future we are planning to integrate Lightning fully into the upcoming Thunderbird 3 release [Lightning-only]
  • Icelandic, Romanian and Traditional Chinese were added as new languages. Unfortunately no builds in Macedonian or Turkish are available for 0.9
  • A full list of all the 397 changes that have gone into this release can be found on the Rumbling Edge website

Lightning 0.9 and Sunbird 0.9 are available for Windows, Mac OS X (universal builds), Linux, Solaris (Intel) and Solaris (Sparc) in 31 different languages including English.

Please use the following links to download the release:

Please read the release notes for Lightning 0.9 and Sunbird 0.9 before downloading.

Thank you again to all our developers, contributors, localizers, testers, and supporters. We would not be able to do this without your assistance!


19
Sep 08

Lightning/Sunbird 0.9 RC2 is out!

The second release candidate (RC2) of our 0.9 release is available! We really think that this is it. If nothing serious shows up during the next few days, this RC will become the 0.9 final release. Here are the links:

The Lightning builds contain all available locales (30). To download a localized Sunbird build, you’ll need adjust the link and replace the “en-US” string with the locale code of your locale, e.g. “ko” for Korean.

Here are the fixes that went into this 2nd RC:

  • Bug 416195: Selected calendar not highlighted in import and export
  • Bug 454664: Events not displayed after opening ics file
  • Bug 454691: Exception occuring when multiple transactions are occuring
  • Bug 454757: Wrong usage of this/thisCalendar
  • Bug 454983: Error when editing repeating event with exceptions
  • Bug 454998: Free/Busy lookups don’t work
  • Bug 455049: Toggling offline results in uncaught exception
  • Bug 455128: Exception on cached caldav calendars
  • Bug 455130: Potential transaction mismatch between sqlite databases
  • Bug 455132: Pasting event to disabled calendar deletes all events
  • Bug 455133: Dragging repeating event to the date of a previous deletion deletes it too
  • Bug 455182: Problems refreshing multiple Digest-authed CalDAV calendars
  • Bug 455232: Egroupware installation gives error when querying for tasks
  • Bug 455289: Offer WCAP experimental caching
  • Bug 455298: Impossible to load remote caldav
  • Bug 455462: Hovering over event in week view causes visual bug

11
Sep 08

[September 11, 2008] Lightning/Sunbird Status Update

Now that 0.9 RC1 is out, I thought some of you might be interested in the latest news on what patches made it into the RC1. We fixed 34 bugs in the last two weeks and most of the bugs in the list below made it into the RC1 (I’m not 100% sure, which bugs didn’t make it, sorry). So that is really good news and with you guys out there testing the hell out of those builds, I’m sure we can make it to the RC2 and the final release in a very short timeframe.

Here are the 34 bugs fixed within in the last two weeks:

  • Bug 202360: Color Coding of Tasks and Events (multiple classification)
  • Bug 348009: Drag and Drop in Month view freezes Un*x desktops
  • Bug 354979: Timezone names sorted by their English names
  • Bug 363218: Migrator: migrating evolution files not working
  • Bug 392561: Need to revise provider error notifications
  • Bug 428544: Unable to dismiss reminder for repeating events that are sync’ed with Google Calendar Sync
  • Bug 428851: Accepting Meeting Invites Does Not Update Google Calendar
  • Bug 433772: Edit/New Task Dialog resets Due Date if Start Date is modified
  • Bug 437318: optimize caldav queries for “long” calendars
  • Bug 437441: Finalize calendar-timezones.xpi
  • Bug 437944: Memory leakage in the calendar Status-Observer
  • Bug 438964: Closing Event window without modifications prompts Save dialog
  • Bug 445736: Wcap event/non-server attendee -> organizer gets no Update button in reply mail
  • Bug 446002: Tooltips in calendar list always show the first readonly calendar name
  • Bug 449574: aDOMWindow errors
  • Bug 450034: Month view shows weekends like out-of-current-month days
  • Bug 450104: insertion of data is extremely slow compared to other platforms
  • Bug 452214: CalDAV provider interop issues with newer CalendarServers
  • Bug 452231: Colliding events: events collide with special invitation status;
  • Bug 452610: Disable CalDAV scheduling (make pref-based)
  • Bug 452759: bump sunbird version
  • Bug 453195: Allow providers to disable imip
  • Bug 453198: Allow arbitrary reminder times
  • Bug 453250: turning calendars off not working
  • Bug 453409: Calendar list scrollbar hides read-only icons
  • Bug 453453: Error in calAttendee.js when opening properties dialog
  • Bug 453454: Principal namespace list will always be empty with multiple home sets
  • Bug 453794: Cannot update/create any event on a Google calendar
  • Bug 454180: Support for server-based auto-scheduling
  • Bug 454195: calendar overlapp when floating timezone is involved
  • Bug 454213: Parsing errors if server doesn’t return valid XML on getetag
  • Bug 454478: No drag shadow displayed in month/multiweek view anymore
  • Bug 454540: [CalDAV] Ensuring trailing slash with replace fails
  • Bug 454637: firstInRealm always false

Many thanks go to all developers, contributors, localizers, testers, and supporters that make this possible.


11
Sep 08

0.9 RC1 Available – We Need You!

Finally! The first release candidate (RC!) of our 0.9 release is available! I know you’ve been waiting a long time for it, so grab yourself a build. Here are the links:

The Lightning builds contain all available locales (30). To download a localized Sunbird build, you’ll need adjust the link and replace the “en-US” string with the locale code of your locale, e.g. “ko” for Korean.

We really need your help to complete the rest of the L10N Checks and the Update testing, as you can see from our Test Plan.

The Update Testing is of special concern to us, because historically this has always been where we have found critical issues in our release candidate builds. So, please take a look. Feel free to update the test plan wiki or leave a comment on this post with what you tested, so we can track what has been done versus what is still remaining to do.

If you have problems or questions, please drop by #calendar-qa on IRC.

Happy Testing!


31
Aug 08

Berend’s developer notes: My XBL adventures in the calendar views

I recently fixed some issues around the event boxes in the calendar views (see calendar-multiday-view.xml and calendar-view-core.xml). They are implemented by means of XBL and although they are certainly a very sophisticated use case I found that the implemented bindings do not always utilize all features of this markup language. Probably some of these features are also missing in many other bindings around the world and so I thought this is worth a blog entry :)

Basically an XBL binding contains several elements: One ‘content’ element where the structure of the binding is defined, one ‘implementation’ element, that controls the behavior and one ‘handlers’ element that listens to events.

For the maintenance of an arbitrary XBL binding it is imperative to keep as much information as possible within its ‘content’ element. This way it is far easier for the developer to perceive the structure and logic of the binding and it also helps to avoid redundant information that may lead to bugs during the development process. If the developer should decide to modify the structure of a binding binding he will most likely run into problems when he then has to adjust the ‘implementation’ code at many places, too. In this context the ‘attribute inheritance’ feature executed by the ‘xbl:inherits’ attribute proves to be very helpful. This
attribute takes care that modifications are forwarded down to the appropriate child elements. When it is done like this, attributes may be directly set at the binding without any internal knowledge about it.

In some cases anonymous elements were added unnecessarily to the bindings. For example quite often one box element can be removed just by extending a binding to a ‘xul:box’ or whatever. ‘Spacer’ elements may be exchanged by setting the ‘pack’ or ‘align’ attribute to the parental element.

I observed that there is also some redundancy in the code. I remember that this has not been resolved with regards to the possible performance loss. From all I have read and heard about XBL this argument is to be taken seriously, but I believe that the use of the ‘children’ tag within a binding could be an elegant solution, because it allows to add various anonymous content at a defined insertion point.

XBL goes hand in hand with cascading stylesheets – whereupon one should pay close attention to move all style settings to ‘.css’ files. In my struggle with the calendar views I was frequently confronted with completely unexpected problems and side effects caused by seemingly harmless style attributes. For example I could see that setting attributes at certain elements seem to force a distinctive relayout and consequently trash the whole view because of too many other ‘compact’ widgets involved. This and some other side-effects have made me occasionally become anxious to destroy the layout by merely looking at the .css files!

Last but not least I certainly don’t get around to admit that the views have always run quite reliable and offer a vast functionality with an appealing design! As we all know a lot of blood, sweat and tears have accompanied their implementation…

I hope that we will find some time to give the code its finishing touch at the beginning of the next release cycle so that we have time to react to the inescapable regressions that will come up.


29
Aug 08

[August 29, 2008] 0.9 release status update

I guess it’s time to give you an update on our efforts to finally nail down the 0.9 release.

The major newsitem is, that we have decided on our last developer conference call that we will cut CalDAV scheduling from the list of 0.9 features. The reason behind this is, that we have found that this feature is still too immature for wide-spread consumption and the list of regressions would likely put the release date a few weeks (or even months) in the future. Therefore CalDAV scheduling will be disabled by default in 0.9, but interested users can enable it, by setting a hidden preference via about:config.

With that out of the way, we are now down to nine release blockers, where only four of the nine blockers will require code changes and the other five covering tasks to be done during the release preparation process by our build and documentation crew.

So hopefully, we can fix the four remaining code issues during the next week and give you first release candidate (0.9 RC1) shortly thereafter. We also have fixed some other bugs (15) during the last week. Here’s a list of last week’s bug fixes:

  • Bug 326792: ‘Next’ button doesn’t change to active when dragging URL into text field
  • Bug 366482: “Edit as new” for opened eml files results in a broken compose window
  • Bug 409166: Missing crop attribute in agenda checkbox
  • Bug 437412: Zero-length and short events are shown at the wrong times in timegrid
  • Bug 446303: Use the “RELATED-TO” property
  • Bug 447800: Month View is missing a right border
  • Bug 447814: Reloading remote calendars shows wrong progress in status bar
  • Bug 449449: Invitations Link: CPU usage every three minutes
  • Bug 450563: Attendee gets organizer alarm setting if he accepts iTip/iMip invitation
  • Bug 451585: Use ICS service for ics parsing in CalDAV
  • Bug 451827: no local storage calendar, error at startup
  • Bug 451937: Titlebar changes to text of Calendar Mode at midnight
  • Bug 452379: Accepting an invitation on caldav (Bedework) doesn’t work (regression)
  • Bug 452392: Minimum height of eventboxes is too little
  • Bug 452417: Readonly events should not show grippies on hover event

Many thanks go to all developers, contributors, localizers, testers, and supporters that make this possible.