Around 30 Plone core developers gathered last week in Cologne, Germany, at the GfU Cyrus AG, in order to work on the upcoming Plone 5 release. Before the sprint, the Plone 5 development branch already contained lots of new features such as new Dexterity-based default content types (plone.app.contenttypes) including a new event type (plone.app.event) that supports recurring events, a faster template engine (Chameleon), and many other enhancements and fixes.
Since replacing the entire Plone front-end is a major change, we expected some failing functional and integration tests. Since we take testing very seriously, QA and testing became our third top priority in order to make sure that all tests pass after the integration of our changes.
Besides our three main objectives, we also wanted to continue our work of getting rid of deprecated technologies such as CMFFormController, formlib, portal skins, and others. Having two or more different technologies within Plone, that do the same thing, is confusing for new and even experienced developers. Therefore we wanted to get rid of this technical debt before a final Plone 5 release.
Fixing bugs of already merged features such as plone.app.contenttypes and plone.app.event as well as working on the new plone.org site (which will make heavy use of Plone 5 features) were other topics that we decided to work on during the sprint.
With that list in mind, we moved on assigning team leaders that should take care of organizing sprinters in smaller groups and reporting back during our daily wrap-up meetings. For each topic we broke down the requirements into small user stories that could be tackled by one or two developers. Then we put them on a Scrum/Kanban-like board. This allowed the sprinters to just pick a user story and start working on it.
The theme team, led by Ramon Navarro Bosch, did a fantastic job giving Plone a fresh look. They came up with a new toolbar design and implemented a new less-based Barceloneta default Plone theme. You can read Ramon's full theme team report here.
The widgets team was led by Rok Garbas, who wrote the major part of mockup and plone.app.widgets. They worked on implementing new mockup patterns and improving existing ones, they upgraded mockup to use the latest Bootstrap 3.1 and worked on the integration with the new Barceloneta theme. Rok is about to write a more detailed blog about the current status of widgets soon.
The QA team, led by Timo Stollenwerk, supported the theme and widget teams by fixing existing tests which failed due to changes in the theme and the widgets. They wrote additional Robot Framework-based acceptance tests and improved the Plone testing infrastructure.
In order to help the Theme team to review their responsive design, Asko Soukka implemented plone.themepreview, a Sphinx-based theme preview/documentation that includes screenshots of the new Barceloneta theme on different browsers and operation systems with different browser window sizes. We set up a Jenkins job that creates and published those reports.
The cleanup team, led by David Glick, was working on continuing our efforts to remove technology that has been replaced by more recent technology, mainly focusing on the CMFFormController and formlib removal. Pavel Bogdanovic updated the member search form to use z3c.form, Bo Simonsen updated the portlets, sendo form and started updating the author template, and Timo Stollenwerk updated the search control panel.
Philip Bauer and Johannes Raggam led the content types team and they worked on fixing bugs in plone.app.contenttypes and plone.app.event. There work has already been released in plone.app.event 1.1b1 and plone.app.contenttypes 1.1b1 right after the sprint. Read Johannes' sprint report here.
Víctor Fernández de Alba continued his important work on the new plone.org site and made good progress working closely with the theme team and supporting them. Read his detailed report here.
The new theme and the new widgets are in place and have been merged into the Plone 5.0 main development branch. All our existing tests have been adapted and all tests pass (thanks to a short post-sprint sprint led by David Glick). We continued our efforts to clean up the Plone code base, fixing bugs and improved our overall test coverage.
Allowing Plone release manager Eric Steele to make a first alpha release right after the sprint was an ambitious goal. Therefore we weren't sure if we could accomplish everything in only five days. Though, I think it is fair to say that 30 very motivated plonistas did a terrific job and we are all very happy with the outcome and can't wait for the first Plone 5 alpha release.
The Cathedral Sprint wouldn't have been possible without the sponsorship and support of the GfU Cyrus AG, the Plone Foundation and the German Python Software Verband. The GfU Cyrus AG not only kindly hosted us, but also sponsored our daily lunch and the accommodation for our sprinters. The Plone Foundation and the German Python Software Verband sponsored flights and train tickets to get our sprinters from all over the world (Catalonia, Denmark, Finland, Germany, Italy, Netherlands, Slovenia, USA) to Cologne.
Donations to the Plone Foundation will help us to organize events like this in the future. There are already several sprints and events planed in the next couple of months that will continue our work on Plone 5. The Emerald Sprint in Seattle, the Wine and Beer Sprint in Munich, Plone Open Garden in Sorrento and the Plone Symposium Midwest in Wisconsin. See you there!