Porting Plone and Zope to Python 3 - Successful Alpine City Sprint

Plone and Zope core developers met for the Alpine City Strategic Sprint in Innsbruck.

An international crew of Plone and Zope core software developers met for the Alpine City Strategic Sprint in Innsbruck, Austria, at office of Klein & Partner KG, BlueDynamics Alliance, from January 30 to February 4, 2017.

The aim of the sprint was to port the Plone enterprise CMS and its underlying Zope application server to the Python 3 programming language version. Plone 5 currently uses Zope 2 (2.13.26), and they are both compatible only with Python 2.7; the long term objective is to release Plone 6 and Zope2 Version 4 (aka Zope 4).

The Alpine City Strategic Sprint was sponsored by the Plone Foundation, the U.S.-based non-profit responsible for promoting and safeguarding Plone worldwide.

“Assuming everything works as expected, a Plone 6.0 alpha release, based on Zope 4, may be possible at the annual Plone conference to be held in Barcelona in October,” predicted Jens Klein, a member of the Plone Framework Team.

The sprint’s success was driven by the collaboration of both communities. “From the Zope community’s point of view, it is very nice to see Plone core developers’ vested interest in Zope. It would be wonderful to have regular exchanges between the Zope and Plone communities”, said Michael Howitz, a Zope developer.

The Zope and Plone sprinters were unanimous in their opinion that things went better than expected. "All automated tests are now passing. Plone now works with Zope 4 in all its core functions", reported sprinter Philip Bauer, also a member of the Plone Foundation Board.

Many core concepts of Plone and Zope had been adopted into Python 3 over the years, in one form or another. Porting Plone and Zope to Python 3 means both are now harvesting the fruits of their own labour. "In both Plone and Zope, the core components have now become more lightweight – and faster," said Alexander Löchel, another member of the Plone Foundation Board.

Zope 4 was hardened with running about 9000 Plone test cases. “By the end of the Alpine City Sprint we had all but six Plone 6.0 tests passing on Zope 4, and a couple weeks later they all passed.” said David Glick, long term core developer.

“For Plone's future it is important to run on Python 3, because Python 2 will only be officially supported by the Python team for a few more years.” David Glick warns the community. Restricted Python is at the core of the security model for which Zope and Plone are known. Although core developers had feared that it could not be ported to Python 3, this was accomplished in Innsbruck: Restricted Python now runs in Python 3.6, although it is still limited in functionality.

At the upcoming Zope2 Resurrection Sprint in Halle, Germany (May 2 to 5, 2017), the spirit of the Alpine City Sprint will be carried forward. The Halle organizers hope for a breakthrough resulting in the first Zope 4 release.

Zope 4 has been updated in many ways. ZODB, the ACID compliant and extremely robust database, was upgraded to the latest version for Plone 6. Thomas Schorr made a branch of plone.recipe.zope2instance which sets up a Zope instance running via a WSGI server instead of ZServer.

Plone is more than 15 years old, and Zope is more than 20 years old. Yet both projects have reinvented themselves several times and are maintained by a worldwide, dynamic community. Both projects provide a very secure, flexible and mature solution in the often non-secure, unstable landscape of web applications.

What is a Sprint?A sprint is a focused collaborative work session lasting anywhere from a day to a week, in which contributors pair off and work together to add to or improve some aspect of Plone. Contributors include graphics designers, writers, user interface designers, organizers, process experts, and developers. All are welcome, including newcomers!