The Return of PLOG

The Plone community has gathered at the Hotel Mediterraneo in Sorrento every April since 2007 save one. How can we resist with a breakfast like this?

After taking a break in 2018, the Plone Open Garden sprint took place from April 12-19, 2019. There were 2 big innovations this year - a new sprinting space and 2 free training classes. We also had daily discussions, sprinted on a variety of topics, and one day had an excursion to Sorrento's old harbor. Combined with the Hotel Mediterraneo's outstanding food and amenities this all hit the sweet spot of hard work + fun that our community loves. The 18 attendees, who came from 7 different countries, enthusiastically endorsed doing it again next year.

New Space

For those who remember the old basement room, this is a welcome change. The basement is now off limits because it's being made into a spa, so the hotel set up a working area for us in the gazebo next to the pool. We had some chilly mornings but the heaters made it comfortable. We even had couches!

Lounges in the gazebo at the Hotel Mediterraneo

Training

PLOG has historically been a relaxed gathering, more focused on sharing ideas and debating the future of Plone than on single-minded sprinting on a single topic. It also falls halfway between Plone Conferences when Plone training is offered. In order to expand Plone training opportunities, this year the Plone Foundation sponsored free training classes at PLOG. Training was scheduled during the mornings, leaving the afternoons free for sprinting. On Saturday, Sunday and Monday Philip Bauer taught everyone how to port Plone add-ons and migrate sites to Python 3. On Tuesday, Wednesday and Thursday Victor Fernandez de Alba and Rob Gietema led attendees through the steps for developing a React front end for Plone using Volto.

Training was from 10 to 1, and before that we started every day with a traditional what-did-you-do-yesterday, what-will-you-do-today standup.

PLOG standup befor Volto training starts

Brainstorming Sprint Topics

The first day of the sprint, we spent some time brainstorming sprint topics and prioritizing them with colored sticky dots. This informed the discussions we had later in the week, as well as specific items people worked on. Erico Andrei and Maik Derstappen are holding up one of 2 sheets of paper we covered with ideas.

 Python 3 Porting

 To practice what we'd learned in the training class, sprint participants worked on porting the following add-ons to Python 3:

  • Kim Paulissen - collective.badge, collective.workspace
  • Fulvio Casali - collective.onlogin, atreal.massloader
  • Jeremy Kolbe - collective.embeddedpage
  • Thomas Buchberger - ftw.testing, 4teamwork packages
  • Max Jakob - LMU university package
  • Jan Mevissen and Philipp Hewera - several Interaktiv packages
  • Andrea Cecchi - Red Turtle packages
  • Philip Bauer - collective.roster, plone.z3ctable

Also several databases were successfully migrated to Python 3.

Volto and Restapi Improvements

Maik, Rob, Thomas, and others had several discussions about the restapi. Maik and Rob focused on plone.restapi improvements to make it easier for a client (Volto) to access and interpret schema/widget information, and they created PRs for some of the ideas. Eric Steele did some restapi cleanup.

Victor, Eric, and Paul Roeland worked on Volto documentation. They reviewed the current docs, added placeholders for missing topics, and began writing documentation for the placeholders. Eric implemented the add-ons control panel in Volto.

Andrea began work on a bug with the Event datetime widget, he will continue with that.

Victor worked on a number of other improvements: adapt Volto to the new vocabularies endpoint changes and implement the new widgets based on react-select library, api folder update to use 5.2 and cleanup, worked on the new object navigator for tiles and other UX elements, also fixed hero tile image bug if it was in a private container, merged PR for contact form, upgraded Volto to use Razzle 3 and migrated the existing Robot Framework acceptance tests to use Cypress instead.

Paul and others noted that Volto is very approachable and fun to develop with. Paul tried adding a small library (Isotope) which worked. It's important to note that React newbies and enthusiasts will be able to build sites with it. Everyone at the sprint was impressed with Volto and enjoyed the training.

Volto Positioning

Plone 6 will ship with Volto, as well as the “classic” front end. We discussed the need to start messaging about the upcoming changes. Some ideas:

  • Volto makes Plone fun again - tinkerers like Paul can quickly try things out. It's a fun new front end with the same mature, super secure, industrial strength backend that's been refined for more than a decade to provide serious CMS functionality.
  • kitconcept presented Volto at a Javascript unconference and found that people were very impressed with the functionality - apparently the Javascript crowd is completely unfamiliar with the idea of the basic concepts of a CMS. Victor thinks we could base a sales pitch around CMS functionality, which is not old-fashioned any more, at this point it is completely forgotten… “Robust content management functionality for React developers”
  • The documentation needs to provide a matrix of use cases to help people decide when to use Volto and when to use Classic.
  • We need to start thinking about how to adjust messaging on Plone.com - perhaps the “Plone 5” tab should be replaced with “Plone 6” and info about what’s coming.

Plone and Volto Accessibility

Paul curated all the Plone accessibility tickets and made a Github project board. Sally Kleinfeldt and Paul made new tickets for accessibility issues in Plone and Volto, including alt text in various contexts, integrating an accessibility checker, and creating an accessibility control panel. We made sure all tickets have full information about what the issue is, how to fix it, relevant standards, etc.

Victor worked on entering contextual alt text in the Volto rich text editor. (Like CMFPlone #2836 but for Volto.) Andrea worked on entering and displaying alt text for Plone images and lead images.

Plone Documentation

We had a good discussion and decided we will apply for 2 Google Season of Docs projects. Paul is working on this.

  1. For help completing the Volto documentation.
  2. For help reorganizing the Plone documentation by reviewing what we have and designing a set of user journeys through it.

We also agreed that ultimately we need 4 types of documentation.

  • Reference Documentation - Technical details (can be auto-generated)
  • Long Trainings - Similar to Mastering Plone (some that we have are good, some need a rewrite, some need to be created, for example one about Volto)
  • Quickstart for Editors -  Story driven, on-boarding material for new editors (we can base this on the “Working with Content” section of the current documentation)
  • Quickstart for Developers - Story driven, on-boarding material for new developers (small chunks of tutorial style information describing best practices - Philip started this: Mastering Plone Lite)

We agreed that from now on either ReST or Markdown can be used for Plone documentation, since Sphinx can handle both. Completely new documentation should probably be written in Markdown, as long as no specific features of ReST are required. Especially for folks not coming from a Python programmer background, Markdown has way more traction.

Mosaic Improvements

The group discussed the benefits of adding Mosaic to the default Plone installer in 5.2. For this to happen, we need to do a bit of polishing. Maik started by evaluating the current state and found several issues. Then he and Asko Soukka worked to fix them, including fixing plone.app.blocks issues. Maik also spent some time thinking about a better Mosaic default setup with preconfigured Mosaic content types and layouts that would make it easier for users to get started.

Plone Improvements

  • Philip - Fixed the last two blockers for Plone 5.2 (will release an rc2 and rc3-pending), updated dependencies.
  • Eric - Solved Zope crashing issue with templates
  • Maik - Improved plonecli, a tool for creating Plone packages with mrbob

The group also took a look at CastleCMS to see what we can learn or port from it.

Migrating ZServer to Python 3

Asko worked on a “moonshot” project to attempt a ZServer Python 3 port, and explore the possibilities that would allow. His work at the sprint was a success and he will continue to work on completing the port. He expects something stable around the time of the June Beethoven Sprint, where he will work on migrating collective.taskqueue to support the new ZServer. If he continues to progress without issues, he hopes this will be ready for Plone 6. See his Community post for more details.

Marketing

We discussed Plone/Volto marketing and decided to brainstorm marketing tasks we could accomplish in sprints. Ideas included doc sprints to improve and refocus our documentation, sprints focused on making short videos and screencasts of Plone/Volto features, creating a dockerized Plone to give people to try out, getting Plone featured on popular places like Razzel, Python Bytes and Talk Python, having a React Europe booth, and encouraging more news/blog posts on plone.org.

Plone YouTube Channel

An idea that came out of the marketing discussion was to have a "Plone" YouTube channel. Erico had previously created a "Plone Conference" YouTube channel and did a great job creating a nice home page and adding conference videos for 2013, 2016, 2017, and 2018. We agreed we should expand that with things like How To videos, so Erico renamed it and now we have our Plone YouTube channel! We made a list of videos and screencasts to create at a future sprint.

Plone Conference

Philip and Andrea discussed what trainings to give at the upcoming Conference in Ferrara, and Andrea released the Conference website which is built with Plone 5.2 on Python 3 and Gatsby!

Plan for Next Year

We talked about the possibility of continuing the April PLOG tradition. All attendees were positive about doing it again next year. Things we liked:

  • Half day training, half day sprinting
  • Daily standups
  • Daily group discussions on various topics
  • Including an excursion to a local attraction such as Vesuvius, Pompeii, Capri or Sorrento
  • Having the flexibility to work on one's own project during the sprint
  • The hotel accommodations and food (very reasonable)
  • The happy hour drinks (expensive, but hey…)

The tentative date is the week before Easter, April 3-10. Mark your calendars!

Capri Sunset