In the spirit of Twitter I will keep this blog post down to 140 characters. Check out @mozcalendar for more frequent updates on the project.
Together with Thunderbird 38, we will be releasing Lightning 4.0. Both of these releases are not beta versions, but similarly major releases like Lightning 3.3, Lightning 2.6 and their respective Thunderbird counterparts.
We have about 11 weeks left until the release will be final, and while the developers are doing their best to make sure features are stable and there are no regressions, its time to do some translation work.
If you have been missing your language in Lighting in the past, maybe this is a good time to contact the l10n team of your language and express interest to translate Lightning. While the initial hurdle may be large, there are usually not many changes in strings between Lightning releases. If you are lucky, someone had already translated part of Lightning in the past and all you have to do is update your locales. The translation process is fairly simple and can be done using your favorite browser.
If you are already part of the Localization teams, this is the time to head over to mozilla.locamotion.org and translate the remaining Lightning strings. Once you are done translating and the changes have been pushed to the localization repositories, please head over to the Thunderbird l10n dashboard (not the Calendar Dashboard) and sign-off the latest change. Make sure you are signing off the later changeset of Thunderbird and Lightning, as only the newest sign-off will be used.
Should you have any questions, please feel free to send me an email or comment on this post and I will get back to you as soon as possible.
The one thing I like best about the Google Summer of Code is that it gives us an opportunity work on cool new features I never have time for on my own. Also, its a great opportunity for students to learn about working on a large-scale project and prepare for real life work, which is very much different than the smaller projects I remember from my university. Students that have stayed with us even after the Summer of Code have proven themselves invaluable, showing spirit and enthusiasm for an open source project like the Mozilla Calendar Project gives me a warm feeling in my heart.
This year, we have proposed two projects: Introducing Calendar Accounts and Resource Booking Improvements. As the projects have been available on the wiki for a while (sorry for not blogging about this earlier!), we’ve already had the one or other student interested in applying. However, that doesn’t mean there isn’t any room left for a fine candidate like you!
In the first project, Introducing Calendar Accounts, the goal is to improve our backend layer to move from a flat list of calendars to a hierarchical list with calendars grouped by the accounts they belong to. Aside from the benefits this gives us w.r.t. avoiding code duplication and ugly hacks, it will open Lightning to a load of new features related to accounts, for example notifications if a new calendars was added to the account or improved support for authenticating to calendars on one server with different credentials.
Second, we have proposed a project on Resource Booking Improvements. Right now, our invite attendees dialog is fairly simple and only allows entering email addresses and seeing their free/busy status. What is missing is an easy way to invite resources and rooms, for example when you want to book a conference room for your meeting. There is an inconspicuous feature that allows changing an attendee to a resource entry, although there is no real value in doing this aside from sending more correct data to the calendar server. The user still has to remember the virtual email address associate with the conference room. With this Summer of Code project we want to allow any kind of calendar provider to be able to specify how to search for rooms and resources. Certain CalDAV servers support searching for these entries using custom queries, the goal for this project is mostly to support those servers.
If you are interested, please do get in touch with me, either via email or on irc.mozilla.org, where my nickname is
Fallen and I usually hang around in
#calendar. Should I not be around,
redDragon (a former GSoC Student, by the way!) will be there to help you.
First of all, I’d like to apologize for not adding in new blog posts once in a while. There have been a few topics I could have written about, but I never got around to it. The consequence is that there will be a few posts in succession now, I hope to be better about this in the future.
In this post, I’d like to tell you a little bit about the changes to the Provider for Google Calendar that have taken place in the last months. With due prior notice, Google has shut down version 1 and version 2 of the Google Calendar API. The previous version of the Provider for Google Calendar, version 0.32, was still using the API v1.
- Support for tasks using the Google Tasks API
- A very user friendly new calendar wizard, no need to enter the XML url.
- Offline support by default, with no need to disable it.
- Support for the activity manager, sync progress is now shown in status bar
- Better (albeit not perfect) support for accepting invitations
- Allow setting default reminders
- Compatibility to Postbox 3
As such drastic changes are a common source for regressions, I went through 10 rounds of pre-release testing and got some very helpful input from those who commented on the bug or sent me an email. There would have been substantially more issues without these folks, so thank you very much! In the last round the amount of issues was down to a level where I felt comfortable releasing the Provider to the world.
When I release version 1.0, something inevitable happened: nearly 300,000 users find more issues than 140, so I had to do a few additional releases to fix more major issues. The new API version imposes limits on the number of requests being made, so one of the first issues I had to overcome was gaining more quota. Thanks to the fantastic folks at Google I was able to solve this issue using a combination of code changes to reduce the number of requests and also higher quota limits. Here is a roundup of the other issues:
- Version 1.0.1
- Calendars were incorrectly migrated from 0.32 to 1.0
- Users who disabled cookies could not use the login dialog
- Attendees added from Hangouts were incorrectly shown
- Version 1.0.2
- Added descriptive text to the new calendar wizard to make it easier to understand for users who were used to entering the XML url.
- Refresh intervals smaller than 30 minutes were prohibited due to quota issues
- Calendar is no longer refreshed when user is idle
- Bumped number of results per request from 50 to 1000
- Various issues w.r.t. showing correct messages on quota or login errors
- Version 1.0.3
- Postbox 3 support, which essentially means backwards compatibility to various older Mozilla Platform versions
- Recurring events no longer disappear when modified
- Recurring alarms are correctly snoozed.
- Fixed error “this.mDeferred is null” when login fails
- Removed lots of debugging messages
- Back button in new calendar wizard no longer causes double-subscriptions
- Synchronizing no longer blocks UI thread
- Calendars no longer get disabled when in offline mode
- Use application locale when showing OAuth window
- Fixed an invalid timezone definition for the start time
- Provider no longer ignores default reminder settings
- Version 1.0.4
- Notifications are now correctly sent when modifying events
- Fixed creating events without an organizer but with attendees
- Fixed an error in the attendees dialog with “entry.interval is undefined”
- Correctly create events in UTC timezone
- Wait for parsing to complete before completing synchronization
- Fix some internal issues and a compatibility issue with Thunderbird 24
- Improve invitations handling
- Google login popup now has a description as to why its required
- Fixed setting default alarm props on calendars without default alarm
- Task lists now work for calendar entries without a calendar (regression)
- Outdated client message shown when using obsolete token
In retrospect, there have been a lot of complaints, but on the other hand a lot of people have noticed how important this addon has become for them. Many have shown their gratitude by sending a donation via the addons page. I hope that version 1.0.4 fixes most of the issues, there are just a few more issues reported. If you continue to experience difficulties, please send me an email or visit the support forum.
Thanks to the wonderful folks at Linagora, I was able to spend the last three days at the Calconnect XXXI meeting in Bedford, England. The goal of this meeting is to get server and client vendors together in a room both for ad-hoc testing and discussions on calendaring standards.
Before arriving, I’ve set myself the goal to go through a big list of bugs that have been sitting around in our CalDAV component to see if they can be resolved. It turns out that I was able to close 48 of the 76 bugs I had picked out:
A good amount of the bugs I’ve resolved were sitting and waiting for any one of our contributors to reproduce with a specific server. This is often a problem because the time it takes to set up and configure the servers is time consuming. The great thing about being here at Calconnect is having a testing instance most of the reported servers readily set up. Not only that, but engineers from the respective servers are sitting together at a table and can answer any questions that may arise, or comment on potential bugs that have been fixed in later versions.
The other category of bugs are support issues, duplicates and bugs that haven’t received an answer from the reporter. These could have been found outside of Calconnect, but its still a good opportunity to take the time to handle these.
Eight of the remaining bugs already have a patch attached, four of them were created while I was here. There is also a new feature coming up that makes it easy to share calendars with other users directly from Lightning. This requires the server to support caldav-sharing, for example the Apple Calendar and Contacts Server and fruux.com.
Note: The ugly add button will be replaced by an icon. The email addresses are editable.
In the next few days we will be going on to the standards discussions. I am actively involved as the chair to TC-API, a technical committee dedicated to producing an abstract calendaring model that ensures that vendors integrating calendaring into their products are aware of the implications of calendaring and scheduling, hopefully resulting in better interoperability in the future. Another goal we have is to find a common understanding for a REST API that is geared towards webpages, which may become a standards document some day.
I am happy to announce that Lightning 3.3, a new major release, is out of the door. Here are a few release highlights:
- Various components have been made asynchronous, allowing for better perceived performance. This means less hanging when Lightning is busy.
- Improved invitation processing, as well as a few new features:
- Restrict sending invitations to newly added attendees
- Send one invitation email per attendee, not disclosing other attendees
- Consider default BCC and CC of configured email identity when sending invitations
- More actions when viewing invitations, e.g. tentative accept, accepting only occurrences.
- When accessing Google Calendar via CalDAV, the authentication dialog doesn’t constantly reappear.
There have also been a lot of changes in the backend that are not visible to the user. This includes better testing framework support, which will help avoid regressions in the future. A total of 103 bugs have been fixed since Lightning 2.6.
When installing or updating to Thunderbird 31, you should automatically receive the upgrade to Lightning 3.3. If something goes wrong, you can get the new versions here:
Should you be using Seamonkey, you will have to wait for the 2.28 release, which is postponed as per this thread.
If you encounter any major issues, please comment on this blog post. Support issues are handled on support.mozilla.org. Feature requests and bug reports can be made on bugzilla.mozilla.org in the product Calendar. Be sure to search for existing bugs before you file them.
There are a number of addons that have compatibility issues with Lightning 3.3. The authors have been notified and a few first fixes are available:
- Calendar Tweaks: This addon causes constant flashing and makes Lightning unusable. The author has been notified and has released version 6.0 which shoul fix all issues. Plase notify him in case there is more trouble.
- Thunderbird Conversations: There is an issue with the Lightning invitations plugin. It has been fixed in one of the nightly builds and will be available as a release soon.
Thunderbird and Lightning do major releases about every 42 weeks and by now there are only 5 weeks left until Thunderbird 31 will be released. Your matching calendaring extension version is Lightning 3.3. Betas for both products are available and now its up to you: we need all the manpower we can get to make sure there are no regressions and everything still works as expected. Over a million active daily users will thank you for this!
To get started, download the beta builds and follow the standard installation procedure.
Although I doubt there will be any issues, its always a good idea to back up your profile. I myself have been using each of the beta builds and haven’t run into any dataloss issues.
Here is a list of areas that have changed and you should especially look into:
- The access method for Preferences has changed, test everything that looks like we might need to store options for.
- Make sure disabled UI elements are only disabled if they should be.
- Some theme changes have been made, also in Thunderbird. Lightning may look different, but if its odd or out of place let us know.
- Cool new feature: There are new ways to navigate in the today pane.
- A number of changes in the area of scheduling. Please make sure sending, receiving, accepting, declining and reopening invitations still works as expected.
- There were changes to the autocompletion feature used in the attendees dialog.
- Remote CalDAV calendars, especially in combination with Google Calendar.
There is one known issue if you use a localized version of Thunderbird and Lightning. Certain locales have not been fully translated, but are included in the beta builds nevertheless. We will fix this issue for the second beta build soon.
If you notice any issues please leave a comment here as soon as possible. The more time we have to fix the issue the better. If you have a bugzilla account (or don’t mind creating one for free) please comment on an existing bug or file a new one if needed.
I have noticed a few reports that Lightning 2.6.4 is not working with the Debian variant of Thunderbird, called Icedove. Together with one of our users (thanks Arie!) this was reported to the Debian package maintainers.
There are slight differences in how Icedove and Thunderbird are compiled, the result is that the Linux symbol versions required are different. The maintainers are working on fixing this, in the meanwhile all you need to do is make sure you are using only one source for the packages:
- If you are using Icedove, make sure you install and use iceowl-extension instead of Lightning.
- If you are using Thunderbird from mozilla.org, make sure you are using Lightning from addons.mozilla.org. You can install it into /opt if you don’t want to conflict with your Debian packaging system.
Unfortunately, this difference in compilation has cost us some negative reviews. If everything is working for you or this post has helped you to use the right versions, please show some love and write a review ♥.
I am particularly excited to announce that this year the Calendar Project has received two slots in Google Summer of Code 2014. Both projects target our backend code. This means users won’t have a chance to complain about user interface changes and instead will be blown away by performance and interoperability improvements.
I would like to take a few minutes to introduce our awesome new students to the community, please join me in giving them a warm welcome!
Reid Anderson: Improve Calendar Provider Backends
This project is about performance and stability for our calendar storage. Here is what Reid has to say:
I have been a student at the University of Minnesota since 2012 studying Chemistry and Computer Science. Outside of the classroom, I spend a lot of my time both watching and playing a variety of sports. I also enjoy reading, talking to friends, or playing a quick game of Civilization. I heard about Google Summer of Code before I entered college, and participating in the program had always been a goal of mine.
I was introduced to the Mozilla community when I started submitting patches to Songbird, a desktop media manager built on the Mozilla framework. Throughout the entire community I saw a consistent message of an open web powered by open technology and open software. This is something that I am excited to be a part of, and I am looking forward to contributing. My project is to improve the cached mode for online calendar providers to the point where it can be used as the default setting. This should allow Lightning to function effectively in an offline environment, while also bringing significant performance improvements. Hopefully these will be a useful contributions to the community, and I’m looking forward to getting started.
Isn’t that wonderful? I’m particularly excited about the performance improvements this will bring. Further project updates will be done on his blog and we will of course be posting major updates here too.
Malintha Fernando: Update Invitations to the latest Specification
This project will not only improve our invitations support, it will also guard us from future regressions through more tests. Here is an excerpt from Malintha’s blog post:
My name is Malintha Fernando and I am a student developer from Sri Lanka, currently studying at University of Moratuwa. I started contributing to Mozilla some months back (Still got a lot to learn) as my first contribution in open source and glad to be a part of the Lightning project in GSoC 2014.
The objective of this project is to improve Lightning’s scheduling system by updating the available features to the latest RFC specifications. As we know most of the Lightning’s implementation were done referring to the draft version 4 of the RFC 6638, there are some features lagging behind from the final RFC document.
Do you remember the mess we had when 2.6.x was released? At least one of the bugs we had to fix quickly was a regression in the invitations code. With Malintha’s help this won’t happen again!Whats next?According to Google, we are currently in the “Community Bonding Period”. This means we have a little time to set things up and make preparations. Coding officially begins on May 19th. You can follow progress on the projects as mentioned above, I will also blog about major updates here as we get closer to completion. Lets have some fun with this and continue to make Lightning better. Its about time!