November 3, 2009

1.0 beta 1 is One Step Closer!

Finally! Since July, we have been working on bug 470430. After lots of testing, reviewing and frustration, we have finally checked in the bug's patch. This bug is of quite central importance since we want to make sure that calendar data is not broken on an upgrade between versions, which was sometimes the case.

I would appreciate if everyone could take a look at the current nightlys to see if anything fails. Especially if you have an old profile (i.e from Sunbird/Lightning 0.8 or earlier) around, it would be nice to find out if upgrading from that profile works flawlessly.

If you have ever used Sunbird, please also check if you have the following directory:

  • Windows Vista: C:\Users\<your username>\AppData\Roaming\Mozilla\Extensions\{718e30fb-e89b-41dd-9da7-e25a45638b28}\calendar-timezones@mozilla.org
  • Windows XP or earlier: C:\Documents and Settings\<your username>\Application Data\Mozilla\Extensions\{718e30fb-e89b-41dd-9da7-e25a45638b28}\calendar-timezones@mozilla.org
  • Linux: ~/.mozilla/extensions/{718e30fb-e89b-41dd-9da7-e25a45638b28}/calendar-timezones@mozilla.org
  • MacOS: ~/Library/Mozilla/Extensions/{718e30fb-e89b-41dd-9da7-e25a45638b28}/calendar-timezones@mozilla.org

If you do have this directory and it is empty, please report on bug 470430. Having it causes the upgrade process to fail, since the timezones files can not be found. My hopes are that this directory was created in error due to something in the development build process.

Now all we have left for our beta release is bug 494140, which will hopefully make it into the tree a bit sooner. Also, some locales need a few more strings. When all that is taken care of, then we can finally bring out release candidates for this beta release!

I'm looking forward to hearing from you and am excited that the beta is now one giant step closer.

UPDATE: We had a small regression, bug 526264. Upgrading from an older profile should work again after tomorrow's nightlys.

October 3, 2009

[October 03, 2009] Lightning/Sunbird Status Update

Ok, I have seen all the comments declaring the project is dead. Let me just say that rumours about our death are slightly exaggerated. Over the last six weeks we have fixed 31 bugs, which are listed below.

  • Bug 351321: Italic and bold font for high and low priority
  • Bug 397888: Get rid of anonymous functions
  • Bug 401032: Would be nice to be able to view calendar in a separate toplevel window
  • Bug 413387: Today-pane is broken in SeaMonkey+Lightning
  • Bug 443752: Dialog specific files should be moved into /calendar/base/content/dialogs/
  • Bug 461744: Missing icon on minimonth dropdown button in miniday in today pane
  • Bug 466288: Make use of type="number" for textboxes representing integer preferences
  • Bug 466439: calIRelation/calIAttachment need proper cloning facility
  • Bug 482131: UTF-8 encoded invitation subject not displayed correctly
  • Bug 485890: Splitter styles vary. Splitter between mini-month and calendar view is too narrow.
  • Bug 494783: Switching view range or editing events doesn't update view content and displayed events
  • Bug 500244: Update internal timezone database to version 2009l
  • Bug 502337: Menu "View > Today Pane" always disabled in Mail tab, Today Pane can't be configured
  • Bug 506322: Today pane collapse/expand buttons should always react to first click
  • Bug 507215: Creating repeating event/task fails
  • Bug 507432: Hong Kong Holidays update (2007-2010)
  • Bug 510348: Sunbird Mac l10n builds failing due to requiring license unpack
  • Bug 511246: All-day events don't get deleted from calendar-multiday-view onCalendarUnregistering
  • Bug 511412: Vietnam Holidays for 2009 - 2013
  • Bug 511476: Calendar-event-dialog-freebusy.xml: Remove obsolete range check
  • Bug 511505: SOGo not listed on the "Calendar Related" links page
  • Bug 512123: Lebanon Calendar 2009
  • Bug 512811: React to tab controller parameter change in bug 500506
  • Bug 514843: Xpcshell unittest fails in file test_relation.js line 59
  • Bug 515178: Luxembourg Calender
  • Bug 515399: Cannot add attendees to event invitation
  • Bug 516398: No Lightning pref UI in SeaMonkey
  • Bug 516405: Lightning error in SeaMonkey because of missing gFolderDisplay
  • Bug 516407: Lightning 1.0pre doesn't install in SeaMonkey 2.0b2
  • Bug 516681: Lightning disables SeaMonkey's throbber
  • Bug 517013: Package nssdbm3.chk and update the Windows packaging file

As always, our thanks go to all developers, contributors, localizers, testers, and supporters that have made this possible.

September 2, 2009

Radio interview covering the Calendar Project (in German)

Two weeks ago, I was interviewed by the Bavarian broadcasting station here in Germany for their weekly computer radio show. The interview went pretty well and we covered a lot of areas, including:

  • Current project situation
  • History of the project
  • Major pain points of radio listeners with our applications (enterprise features vs. small business feature set, mobile phone synchronization)
  • Project roadmap
  • Contributing to an open source project

You can listen to the podcast of the show by downloading the mp3 file (the interview covers the last eight minutes). As this was a German radio station, the interview was conducted in German as well. Sorry to all our non-German-speaking folks about that.

Nevertheless, this gives us some much needed publicity, for which we are grateful. We are already discussing some followup actions with the radio folks. More about this, when things get more concrete.

August 24, 2009

[August 24, 2009] Lightning/Sunbird Status Update

More than one month has gone by without a status update. Obviously it's vacation time :-)) We're hard at work to finally get our next release out of the door for Lightning and Sunbird. More on that in a separate post. Over the last six weeks we have fixed 22 bugs, which are listed below.

  • 328216: It is not possible to assign duration to a task
  • 378951: [Mac] non-functional button in About Sunbird dialog
  • 411849: Default date for add New Task is current day rather than the selected day
  • 430090: Collapsed state of Today pane is not remembered when dragging the splitter
  • 445304: Today-pane: width should be set mode-dependently
  • 459381: Calendar and task tabs should be persistent
  • 471860: Use .trim*() in Calendar
  • 483643: Strict JavaScript warnings "reference to undefined property"
  • 500718: (scalability) useless refresh of unchanged calendars in onCalendarAdded/-Removed
  • 501402: Day View not updated correctly after deleting multiple events
  • 501613: Croatia holidays
  • 506461: Change the menupopup id in messenger-overlay-toolbar.xul
  • 506608: View, task list, and toolbar broken after startup
  • 507105: Task list doesn't update correctly when adding/removing calendars
  • 507170: Removing calendar breaks unifinder
  • 507700: WARNING: Illegal character in window name calendar-properties-dialog
  • 508295: Task list: creating new task via double click or context menu entry fails
  • 509335: Make use of zoom controls for calendar views
  • 509345: US Holidays file uses inconsistent categories
  • 509405: Calendar builder tinderboxen down? starting 2009-08-10
  • 509936: Warning: undeclared variable in minimonth.xml
  • 510499: Correcting grammar on Sunbird homepage

As always, our thanks go to all developers, contributors, localizers, testers, and supporters that have made this possible.

August 6, 2009

Merike's developer comments: Writing smoketests for Calendar

In February 2008 I wasn't even a user of Lightning yet as it becomes obvious from looking at my home calendar. Four months later I was researching how to translate it so I could have Thunderbird and Lightning in the same language because an Estonian localization didn't exist. A year later being familiar with the localization side of Mozilla and using Lightning regularly the option to write tests for calendar looked really appealing when I noticed it in the wiki. In April I found myself participating in the testday for Mozmill 1.1. (There's another one coming where you could participate by the way!)

Now that I've written smoketests for bug #500469 I find Mozmill relatively similar to Selenium as I expected. Both of these tools test user interface functionality and therefore the basic three types of steps are common to both:

  • Locating elements to act on
  • Specifying actions to be done
  • Checking the results

Element location in a Mozilla application can be done either by using Mozmill's inspector which gives you a ready to use locator or with the help of DOM inspector if you need to access an element that is further down in the hierarchy of UI elements than what Mozmill's inspector gives you. Locators in Lightning are quite long but mostly relatively easily accessible. There are exceptions to this though: bug #505336 being an example of an element that is fighting against automation.

As UI responsiveness is always slower than script speed pauses between test actions are essential to let UI load properly. Failing to do that can result in an otherwise fine-looking test not working and once in a while I'm still able to forget that despite of knowing it. There are also some inconsistencies between platforms support of Mozmill which made it impossible to stick to the Linux environment I mostly use but it also gives both the Mozmill and Calendar development version stress on both platforms which can only make these more bulletproof.

Result checking is the most important part of functional tests even if running a test without any asserts can reveal some of the bugs too. This is also the part of Mozmill code that recently reminded me of just how quickly Mozmill is developed. I was looking for a way to assert that a certain element is not hidden and found a assertPropertyNotExist function by scrolling through the available methods on Google Code. This seemed like a good way to make sure that there's no hidden attribute attached to an element. To my surprise the first call to this method caused a failure which stated that there's no such function. It had been added only a couple of hours earlier and the version installed didn't have it yet!

Active development of Mozmill and fantastic people on both the #qa and #calendar IRC channels make the difference between a person merely checking things out and a new participant in the project. That's what it takes to get a new person to participate.

August 2, 2009

How to Save Sunbird

Since the last blog post, many people have asked what can be done to keep Sunbird alive. I'd like to attempt to answer this question, and also tell you how to bring Sunbird forward (i.e attracting new users).

What's needed to keep Sunbird alive

On the development side, whenever a Lightning bug is fixed that touches shared code, extra testing and possibly some coding is needed to make sure that the bug is also fixed in Sunbird. In most cases no additional work is necessary, but once in a while Sunbird acts a bit differently. Similarly, when a new feature is added to Lightning, some extra work may be needed to make sure Sunbird can also benefit from it.

Extra testing is also needed for Sunbird. This includes regular testing of nightly builds and writing or adapting automated tests to work with Sunbird. Also some triage work needs to be done. When a bug is filed and there is no note if the bug relates to Sunbird or Lightning, the reporter needs to be asked just this question. Appropriate bugs should then be moved into the Sunbird Only component, which should be looked after in case of duplicate or obsolete bugs.

Some release engineering work also needs to be done when nearing a release. This includes configuring the automatic update servers and moving around builds on the ftp servers.

Note however you don't necessarily have to do all of this on your own. Depending on how many people are interested in actively working on Sunbird it's quite possible that you can split the work similar to how we've been doing it (backend, frontend development, user experience, release engineering, testing).

Sunbird's possible future vision

What Sunbird needs is a vision of its own. That means, that new Lightning features should no longer be incorporated into Sunbird by default. Instead Sunbird needs to get its own identity to attract new users. If you have experience with user interfaces, Sunbird could use your help to create a new and innovative way for users to manage their appointments.

A vision we have come up with and other users have also brought up is to make Lightning modify Thunderbird so far that starting from a new profile gives you the option of either a calendar or mail account (or both). If you choose Calendar, then you will be presented with only calendar relevant UI (i.e similar to what Sunbird is today). You will not be bothered with mail features unless you need them (i.e you want to invite attendees and send invitations to them). This would have the benefit of shared features like the address book being available without much extra work.

If you would like to save Sunbird, please drop me an email and I'll help you get started. Please be sure to tell me what area you'd like to work on and if I can forward your Email address to other people interested in helping with Sunbird.

July 17, 2009

Automating Calendar Testing

As Simon noted, our esteemed Estonian localizer, Merike Sell, is working on automating testing for the Calendar Project. Specifically, she is writing Mozmill tests for Lightning.

Mozmill is a new UI automation tool for the Mozilla Platform. Mozmill can run either as an extension or as a command-line tool. So, once Merike finishes her tests, we will begin running these via command line, and having them automatically report their results either to the Calendar Tinderbox or some place else (It's up to the team).

The first step is to automate the basic smoke tests that we would normally run on a lightning build to be sure that everything is functioning properly. After that, she will move on to writing tests for more complicated scenarios such as recurring events, meeting appointments, and timezones so that we can be certain those critical areas are free from regressions.

We hope that Merike's valiant attempts to tame the uncharted jungle of calendar test automation will help others to follow in her path. Her tests are stellar examples of Mozmill tests, and they create a perfect starting point for anyone who would like to learn how to write these types of tests. We are looking forward to a great summer of automation.