Back from the Cathedralsprint 2014!
My attendance of this year's Cathedral Sprint was a must. Four (!) years ago, at the Cathedral Sprint 2010, plone.app.event was born (see Andreas Jung's blog article for more info). Soon I've become the maintainer of it, because I cared. Since then, I worked on this addon at nearly every other conference or sprint I attended. Which were quite some, let me see: Cathedral Sprint 2010, Buschenschanksprint 2010, DZUG Tagung Sprint 2010, Plone Conference Bristol 2010, Artsprint 2011, Buschenschanksprint 2011, Barsprint Ljubljana 2011 (that were Rok Garbas and me), Artsprint 2012, Buschenschanksprint 2012, Plone Conference Arnhem 2012, Artsprint 2013, Buschenschanksprint 2013, Arnhemsprint 2013 and finally Cathedral Sprint 2014. So 14 all together. Together with the Snow Sprint 2007 with Lennart Regebro, where I got involved into Plone calendaring, that would even be 15. We use plone.app.event in Production since some years, which - together with the in-production-usage by other companies and a lot of help from individual developers - brought the package significantly forward. plone.app.event was finally included in Plone-Core sometime in 2013 and the so-called final release was cut just before the Arnhemsprint on 6th November 2013. A lot has been done since my last article on plone.app.event in 2011. Software takes time to mature and I'm happy with it's state.
Foto by Wolfgang Thomas
So, what was still to do?
The last month was quite busy with client projects and I couldn't review and merge any pull-requests (#132, #129, #127, #123, #119). So that was my first task at the Cathedral Sprint, together with a plone.app.event 1.0.5 release and a 1.0.6 release
some hours later.
The next pull requests were already done at the sprint by Bo Simonsen (Rewrite of the portlets to make use of z3c.form instead of zope.formlib. Pull-Req #135) and Kees Hink (Removal of semantically incorrect dl-dt-dd from (all) portlets. Pull-Req #146). These pull requests have to wait until they are reviewed and merged together with corresponding pull-requests for other packages. I'm looking forward for having these merged!
Wolfgang Thomas did a great job in fixing some oddities in plone.app.event's Dexterity behaviors. First, he changed the behaviors from annotation to attribute storage (which makes easier access to behavior properties and less ZODB payload. Pull-Req #136), then he changed the recurrence attribute's RecurrenceField (which was introduced for easier overloading on a per field-type basis, but that turned out to be useless) back to a plain zope.schema Text field (Pull-Req #137) and then he removed the IEventSummary behavior, which is replaced by the IRichText behavior from plone.app.contenttypes (Pull-Req #140). He also provided migrations and migration-tests. Then Wolfgang started to integrate a timezone selection and a mail settings field in the @@plone-addsite view, which is responsible for creating a Plone site. This way, we avoid unset timezones, which would lead to wrong time calculations when creating events. He could not finish that work because of some dependencies on ongoing work for unifying the portal control panels into Products.CMFPlone, which also includes the removal of registry setting prefixes. Wolfgang was a great help!
I was fixing an old issue with the event view. Event views always had to iterate the whole recurrence set just to display the last recurrence. This could have been a potential bottleneck on large recurrence sets. However, I fixed this issue #60 and now the first 6 occurrences are displayed with a message on the number of remaining recurrences, if there are any (which I query directly from the index). Besides of being faster, this is also much more useful. I also changed the event view's detail table to a definition list, which is semantically more sense full and less problematic for accessibility (#140).
Then I added a robot test which covers creation and display of a Dexterity based event. Besides of raising test coverage and also covering JavaScript based functionality, the main purpose was to be broken by plone.app.widgets related merges. That way I could ensure, that the plone.app.widgets integration doesn't lead to regressions in functionality.
Foto by Johannes Raggam
Now, in the week after the sprint, I released a 1.1b1 version (without plone.app.widgets integration). The releases are coordinated with Philip Bauer, who is maintaining plone.app.contenttypes. His 1.1b1 release will follow soon. plone.app.event also got cleaned up branches - there were too many before. We now have the master branch with plone.app.widgets integration, a 1.1.x branch from which the last release was cut (Plone 4.3+ compatible), a 1.0.x branch with Plone 4.2+ compatibility and some feature branches which will lead to pull requests once they are finished.
The plone.app.event improvements were relatively small steps compared to what happened in the other teams. I'm really happy to see David Glick merged the Barceloneta-Theme and plone.app.widgets PLIP into Plone-Core, with all tests going green! This was the main goal of the sprint and I'm looking forward to work with this. Altogether Plone 5 made a big leap forward! I'm looking forward for the next Plone 5 dedicated sprint I'm attending, the Wine and Beer Sprint in Munich next month.
Finally I have to thank Timo Stollenwerk for the excellent sprint organisation and the GfU Cyrus AG for hosting this sprint for the second time and covering lunches, snacks, drinks and even accommodation for invited sprinters! Without this help, the sprint wouldn't have been possible.
Again I have to say: this was one of the most productive sprints I've been at.