Raggam, Klein: Fixing Plone 5, the Framework
Talk by Johannes Raggam and Jens Klein at the Plone Conference 2016 in Boston.
This is a story about an early adoption of Plone 5.0. We are from the Blue Dynamics Alliance.
Plone 5 helped us to meet the requirements of a big project. But we ran into problems, which we fixed upstream in Plone core. At the pure CMS level the first Plone 5.0 release was okay, but lots of bugs were left, although there were no blockers.
The new theme was a big advantage for our projects, responsive, much easier to begin development with.
For Porsche Informatik Salzburg we did mostly training, though also a few minor core fixes, consulting. The internal developers knew Zope 2 already, so they could use some of their previous knowledge. We used Mosaic, which meant they only needed to create tiles, not viewlets and portlets.
Project for Architecturstiftung Österreich. We used Lineage, to handle eleven sub sites. Very image centric site. Mobile friendliness was important. We updated several add-ons to support Plone 5.
For Swiss Bankers association we did a project together with Peter Holzer. It had to be secure, modern, responsive, and since it was Switzerland multilingual support was very important. We had to find a way to let collections show German documents and as fallback show the English document. We created collective.linguatags for multilingual tags: tag in one language which gets translated to other languages.
Free software is part of our business model. We try to give back to the core, instead of stacking things on top. Plone is open source driven by the community, not a single company. That is better for the companies, although it makes it more difficult to make money with it.
We made around 200 core pull requests for these three projects. Here are some of them, most are merged, some not:
- Add review state as a class in content items in the portal tabs.
- Improve the new resource registry. Simpler generation of gruntfile, compile resources. Make this generator more verbose. Better formatting of generated file. Fix compile errors. Fix plone-legacy RequireJS errors in development mode.
- Prettified the toolbar. Added a less variable for the width of the secondary toolbar column.
- Reworked the related items widget in mockup. You can search and browse, instead of only one of the two. Still, linking to three or four items works fine, but for more it gets difficult.
- The structure pattern: design for alerts, better action items.
- Use official TinyMCE bower dependency. Documented in core TinyMCE how this is built, so we can use this well in Plone. You can include multiple styles now.
- Mosaic fixes. The editor needs work, though it got better during the Leipzig sprint. Take permissions of visibility of tiles into account. Adapterize the layout (ILayoutAware). This gives a base to remove the main template if you want to. Fixed a MemoryError due to sub requests. This also makes Diazo faster.
Did various code cleanup, pep8, sort imports, etcetera. Makes it easier for newbies to get in.
Fixes for Lineage. Fixes with path setting of widgets, like related items widget, also important for multilingual. Subject vocabularies are now aware of navigation root (sub site).
Enabled unload protection in various packages. Various pattern fixes. Fixed MemoryError during scaling. Added events in the transform chain.
Lessons learned:
- Don't underestimate dot zero releases. It was an experience.
- Better fix things upstream instead of patching.
- Avoid forking repositories, better create a branch on the original repo.
Want to help?
- Please report and/or fix issues. Improve documentation, edit or add it. Dare to ask on http://community.plone.org. Enhance the add-ons, help them to Plone 5.
- PLIP: PLone Improvement Proposals. This is the process for getting bigger features into Plone.
- Enhance the ecosystem around Plone. Help to get Plone on Python 3. Code cleanup.