The Guardians of the Zope and Plone Galaxy

For several years, many heroes from the Plone and Zope communities have met around the world at sprints and conferences and have worked hard to get Plone fit for Python 3.

Over the past three years, the Zope and Plone communities have been working hard to prepare both applications for Python 3. The end of the journey is near, and as a result the applications are faster and modern again! This was achieved without sacrificing the long-standing high security standards of Zope and Plone.

Work began in 2016 after the Alpine City Sprint in Innsbruck. PLIP #1351: Update Zope Dependencies  by Johannes Raggam, who with the support of Philip Bauer and Jens Klein, initiated the work on Plone. At the time, the mood among Plone and Zope was fairly negative due to the daunting task at hand.

Momentum started with joint sprints like gocept's "Resurrection" sprints (later named "Saltlabs Sprints") in Halle/Saale on the Zope side and the "Alpine City Sprints" in Innsbruck on the Plone side. Many additional sprints followed: the Buschenschank Sprints, Berlin Strategic Sprints and Plone Conference sprints around the world. The need to modernize both systems brought the developers of the Zope and Plone communities together. The close cooperation of the development teams made the effort a success. Now the communities stand side by side together.

"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, Zope release manager and core developer at the Alpine City Strategic Sprint 2017.

In March, just before the release of Plone 5.2, representatives of the Zope and Plone community were so kind to dedicate their time to an interview by Christine Baumgartner. Many thanks to Michael Howitz from Germany (gocept), Davi Lima from Brazil and Alessandro Pisa from Italy (syslab).

How have the worlds of Plone, Zope, and Python changed with Python 3, and what are the old and new goals?

Davi pointed out:

"By moving to Python 3, Plone gets more inline with the current Python community to share its differentials to other available languages and products. With current tooling explosion on the front-end, companies feel the vacuum of a solid back-end on which they can trust. Their projects may grow for many years without hitting basic, but deep rooted system limitations, like workflow not being extensible enough."

Alessandro told me:

"The most positive thing is that the two worlds now seem to be more connected than in the past."

Michael said:

"With Python 3, Zope is back on the cutting edge of technology. Efforts have shown that there is a living Zope community, and that Zope and Plone can benefit from each other."

What changes are relevant for users, or what should users expect?

Alessandro said:

"A better user experience and introduction of up-to-date technologies."

Davi explained to me:

"Developers can expect easier syntax - for example: handy string interpolation and formatting, more predictable behavior for data structures, higher level dynamic structures like context managers, and more performance with the all-around preference for generators and lazy data structures, as opposed to in-memory ones."

Michael pointed out:

"In principle, nothing should change for the end-users. For developers, adapting code and data to be compatible with Python 3 means a lot of work. But this is also an opportunity to modernize existing code."

Are any new and/or other use cases for Zope and Plone? Or, do certain use cases disappear?

Davi explained:

"Most companies adopt React or Angular for their front-end and develop their back-end mostly from scratch, tackling problems as they come instead of preparing a solid set of features (e.g. workflow, permissions, content types, content rules and so on). What happens is these features are invariably requested and refactorings of such size commonly bring companies to the floor, or lead to development paralysis situations from which it's hard to get unbound."

With Plone 5.2 there are changes in the development process. What have developers, administrators and editors paid attention to?

Michael said:

"I can only speak for developers: First, they should upgrade their projects to Plone 5.2 on Python 2, then migrate to Python 3. Zope 4, which is used for Plone 5.2, is intended as an interim release only. Relatively soon after the final Zope 4 release, work will begin on Zope 5, which will no longer support Python 2."

Alessandro explained:

"I will give you a concern about system administrators: the new infrastructural changes in how Zope is served with WSGI will introduce new patterns."

Davi told me:

"It's important to understand how front-end is architected, its basic building blocks are key for a project that only executes goals correctly, but also that feels good while using. Also it's important to learn how to use Plone API and Plone RESTful API to make content operations trivial. Check out the Volto project!"

I know there were a lot of stumbling blocks on the way to the new release. How were they solved? Which stumbling blocks still have to be solved?

Alessandro claimed:

"Porting the code to Python3 was an epic success."

Davi explained:

"Plone has an extensive codebase and also a very fragmented one. This means changes were necessary in dozens of packages, in a coordinated effort touching heterogeneous parts: from database migrations to displaying of widgets. This was solved with a series of community immersion meet-up events, called sprints, in which people from different countries gather to discuss, code and improve. It seems to me that the next steps revolve around making add-ons compatible with Plone 5.2, so a lot of focus is on documentation, talks and getting the word out."

Michael pointed out:

"Stumbling blocks were some subtle differences between Zope 2.13 and Zope 4 that were not noticed within Zope or where Plone expected a very specific behavior, which was not available in Zope 4. The migration of ZODB to existing projects in the real world that go beyond toy applications is still open."

After all this work, can we expect advantages compared to the old Plone and Zope?

Davi said:

"Faster user interface, better integration with current front-end tooling."

Michael expected

"A higher execution speed."

And Alessandro opined

"The adoption of mainstream technologies."

In closing, what advantage do we have compared to other systems?

Alessandro claimed:

"Well, the main one for sure is the way we deal with security."

Michael confirmed:

"There is a current, well-maintained system, which has an active community that supports each other and actively works on the care and development."

Davi Lima was convinced:

"Permissions and workflow systems, contextual editing (as opposed to a separate "Admin Interface"). In Python, everything is an object, in Zope, everything is a component. Decades of accumulated experience and solutions that you have not even realized you already or soon will have. Relying on the same CMS as CIA.gov and FBI.gov ;-) "

These are the Guardians of the Zope and Plone Galaxy:

(At least a whole bunch of them taken from our records. This list is in alphabetical order, but is not complete)

Alessandro Pisa, Alexander Loechel, Andreas Jung, Christian Kreutzer, Christian Theune, Christine Baumgartner, Cillian de Róiste, Davi Lima, Daniel Havlik, David Glick, Fred van Dijk, Georg Bernhard, Gil Forcada, Godfroid Chapelle, Hanno Schlichting, Harald Frissnegger, Jan Mevissen, Jens Klein, Jens Vagepohl, Johannes Raggam, Joni Orponen, Jörg Zell, Jürgen Gmach, Katja Süss, Maik Derstappen, Manuel Reinhardt, Markus Hilbert, Matthew Wilkes, Martin Häcker, Maurits van Rees, Michael Howitz, Michael Töpfl, Nathan Van Gheem, Robert Niederreiter, Patrick Gerken; Paul Roeland, Peter Holzer, Peter Mathis, Phillip Bauer, Roel Bruggink, Stephan Klinger, Steffen Allner, Sune Brøndum Wøller, Thomas Lotze, Thomas Massmann, Thomas Schorr, Tres Seaver, Jens Vagelpohl, …

text by Christine Baumgartner and Jens Klein - 2019-07-24