Weblog

published Nov 03, 2021 , last modified Nov 04, 2021

Érico Andrei - The Headless CMS

published Oct 20, 2016

Talk by Érico Andrei at the Plone Conference 2016 in Boston.

I am in Berlin via a live video feed. Hello!

In several recent projects with Plone I had a common challenge. The CMS was just one of many parts of the stack. People may view our content on a large computer screen, a mobile phone, or virtual reality glasses, which all need to be handled differently. There are several solutions, like contentful. Some common traits:

  • Everything is through the web.
  • APIs for various languages

Why was I using Plone for that?

  • No more custom PHP development please.
  • Lots of things included.
  • I am still quite productive with Plone.

Biggest reason:

  • I did not look for hosted solutions.

If I build it in Plone, I may be the only one at the company who can maintain it. Not so with a hosted solution.

But: I still love Plone, and want to use it, for good reasons:

  • One API endpoint.
  • Better control over performance issues.
  • Integration with front-end development is essential.

And now I actually have four Plone developers in the team, so that is great. The team is happy with Plone. We use as building blocks:

  • plone.restapi. This saved a lot of time.
  • plone.app.multilingual
  • a policy package
  • PyCharm IDE for writing Python
  • AWS/Kubernetes/Deis
  • Thumbor. Image server over Tornado. Cropping, filters, transforms. We have integrated this in Plone using event subscribers.

Lessons for Plone:

  • documentation, documentation, documentation. Everything I did was possible due to documentation.
  • More documentation, more documentation, more documentation.
  • We need more projects like plone.client.
  • We need more commercial offering of headless hosted Plone.

Alin Voinea - Docker and Plone

published Oct 20, 2016

Talk by Alin Voinea at the Plone Conference 2016 in Boston.

Docker is what virtualenv is for Python. Isolated environment. You have the same environment on Linux/Mac/Windows and development/test/production.

For Plone without Docker you need to install all kinds of libraries, run a buildout, ignore some SyntaxErrors.

For Plone with Docker you can run:

docker run -p 8080:8080 plone

This uses the new official Plone Docker image at https://hub.docker.com/_/plone See information on that page, also on including add-ons or developing. In that case buildout gets run so it can fetch the add-ons.

Always label your Docker volumes to avoid data loss.

You can use a zeoserver:

docker run --name=zeo plone zeoserver

In production you should create your own Docker images, including all add-ons you need. You can use extended_buildout.cfg. For composing your own Dockers, see https://docs.docker.com/compose

When using multiple hosts, you want orchestration. There are several options. We use Rancher. You can use the official Plone Docker image and set several options.

The plan is to use this for continuous delivery, like in the talk by Nejc Zupan.

See various repositories with Docker for the EEA.

See https://github.com/plone/plone.docker for the source of the Plone Docker image.

Nejc Zupan - Learn How We Deliver. Continuously.

published Oct 20, 2016

Talk by Nejc Zupan at the Plone Conference 2016 in Boston.

Discussions in the hallway are the best part of this conference. You don't have slides there, so I won't use them here either. I do have them by the way.

Have you deployed anything to production this month? Week? Today? If code only sits on your local computer, it does not give value to your customer.

What would deploying look like if it was easy? You fix a big, push the change, the tests are run, they pass, production gets updated automatically or maybe after one push of the button. Instead of saying 'the fix has been committed and will be in the next release', you want to say 'it is fixed'.

The bigger the change, the harder it is to deploy. One fix, with one data migration, is fast to deploy, and easy to undo if needed. With three fixes: it gets harder. For one fix, do you really need a developer, a QA person, a project manager, a sysadmin?

When you push to a git repository, you can hook up actions to start testing and deploying.

Tools are interchangeable. You are smart people, you can figure out how to do this. More important is why you should do this.

When a pull request is made, we copy production data to staging. This may be a lot of data, so in case of SQL database we only copy a subset. The pull request is deployed to staging, so a reviewer can immediately check it there. We have 100 percent test coverage. We have regression tests. For new employees, I want them to deploy something to production the first day, going through the whole process. This is very empowering. It keeps developers happy.

Code ownership. If you know that your pull request may be deployed within the next twenty minutes, then you will be careful about what you put in the pull request.

Tip: if you don't have this yet, then start doing this with a very small project.

Give your customers access to the staging machine that has this change, so they can check it.

We host everything on Heroku. For the highest paying levels, you have a button to revert the code change and the database change. Heroku does this well. If you are not in the business of hosting, then don't do hosting.

We have about ten people in the company. We do have a few small Plone Sites.

For us, the only way to get code into the master branch, is via pull requests.

We spend more money on the staging servers than on production.

You can automate stuff like: if a new tag of a package is generated, push it to your internal PyPI.

What about big features instead of bug fixes? You can use feature flagging, showing for example a new UI to only a few people. But anyway, it is rolled out to staging, you test it, if it works you can deploy it. For big features it can take longer to get everything correct, so you just don't merge the pull request yet.

I will never write code without writing a test. For an emergency fix, it is still better to spend twenty minutes to write a test, instead of spending two hours later reverting and debugging.

Annette Lewis - The super integrator

published Oct 20, 2016

Annette Lewis gives the second keynote talk at the Plone Conference 2016 in Boston.

Disclaimer: I do not call myself a super integrator, but others do, and I humbly accept it.

Three years ago I had not heard about Plone, though I had used various other CMS packages. Now I work at Penn State university doing websites, particularly Plone websites, moving static content into Plone. When I started, there were 120 websites, and other a few months my only other colleague left. We got other people into the team. We support 23 departments, 10 programs, 16 centers and institutes, and more. Not all websites are Plone, but about forty to sixty are.

I was showing a site to Eric Steele, and he looked like: you do this through the web? Yes, I do. Theming, Diazo, works fine.

I learned through trial and error. It builds character... and eats up time.

If it exists, don't recreate it. Take an existing solution and improve on it.

I am using Diazo to it's fullest. Using xpath and xsl to keep original classes and ids, so that an editor who is looking at a page source can still see that a part of the page is for example a portlet, so that he knows where to start editing it.

Some stuff I need to do in page templates.

If I need a similar block three times, then I make it reusable.

Portal types. We were using News Items for slider images. That is hard for editors to remember, they think: I want an image, so I can't use a news item. For those cases I simply copy the News Item type and give it a name that makes sense to them, like Home Images.

I talked to Cris Ewing last year about how I did all this through the web, and I saw his enthusiasm, so I knew: I am not crazy to do everything through the web.

I want my end users to feel empowered. It is their website.

Questions?

What would make my life as integrator better? Plone 5 actually solves several things. It would help with caching of our custom css, and defining the colors for css in the resource registries. Debugging diazo could maybe be easier, saying clearer what the error is. Diazo snippets would be nice. David: there is a diazo snippets library, available as chrome extension.

If your Diazo rules are slow, make your rules more specific.

Our policy is to train the users. If they don't get training, they don't get an account. And I say: if you mess things up, like accidentally removing an entire folder, don't try to fix it yourself, but immediately call us. Not an email, call us. We have good relations with our users.

Lightning talks Wednesday

published Oct 19, 2016

Lightning talks on Wednesday at the Plone Conference 2016 in Boston.

Sven Strack: Docs 2.0

https://testthedocs.org

Upcoming changes and improvements to the docs. For Plone we have the papyrus buildout to create the documentation, pulling docs in from several places, if the buildout works. We check if robot test screen shots are working, which means we usually start fixing robot tests. We review the html, old-school using our eyes. We have docs for Plone 3, 4, 5. With ssh update the server. It is boring and time consuming.

New setup. Micro services. CI tests, we will send mails to remind people that stuff needs to be fixed. We don't depend on buildout anymore for the docs. It will be dockerized. Really fast. Updating with zero downtime, users will not notice it except that they suddenly get served by the new docker instance. We are getting a new search, for example only searching in Plone 5. New theme.

Maurits van Rees: experimental.nodtml

I did not make notes during my own talk. ;-) Just read https://pypi.python.org/pypi/experimental.nodtml

Alexander Loechel: Future of Plone, RestrictedPython

Future depends on many things, for example moving to Python 3. Main blocker is RestrictedPython. But I am working on it. Almost fifty percent of the tests are currently running. So: making progress. We will get there. Thank you also to Michael Howitz, Stephan Hof, Thomas Lotze, Gocept, Hanno Schlichting, Tres Seaver.

Hector Velarde: Accelerated Mobile Pages in Plone

We made collective.behavior.amp, an AMP HTML transformer. Special tag in html head. Uses a Google service for speeding up pages on mobile.

https://pypi.python.org/pypi/collective.behavior.amp

Paul Everitt: $20k Floppy and a $100k Perl

Some stories.

By the way, DTML was replaced by ZPT because of DreamWeaver.

When your database was corrupted, back in the day, you emailed it to Jim and he would fix it.

Anyway, Zope used to come on a 3.5 inch floppy, including Python.

You used to be able to add Perl script in the ZMI. This cost 100k dollar to build.

Chrissy Wainwright: Products.Poi for Plone 5

We rewrote Product.Poi for Plone 5 and dexterity. No migration yet.

Some new features:

  • Add/remove multiple attachments with drag-and-drop.
  • Export as csv.

You can help out, for example with migration or translations:

https://github.com/collective/Products.Poi/tree/3.0-development

Lennart Regebro: A different type of conference

Plone conferences usually are in cities with expensive hotels. PyconPL, Python conference in Poland, is in a hotel in the middle of nowhere. Beautiful view. We have been doing this for a few years. There may be an outdoors barbecue involved. What I like: people cannot run off, they have to socialize and party, or go to bed. We should have that for Plone too. I cannot organize it myself. I just want to say: there is another way to organize a conference. Also, PyconPL also has an English track. So come and listen or speak.

Tim Simkins: Content quality checks

I am from Penn State. An article on a site might be on multiple places. We needed content control on it. For example: at most sixty characters for a title. We created automatic checks and subscribers for it. You can see a list of all such issues.

See https://github.com/tsimkins/agsci.atlas

Steve Piercy: My first contribution to Plone

Or: a misadventure into open source software. I explored the world of Python in 2011. Pylons, Pyramid. Nice: full test coverage. After about a year I got courage to make contributions to the documentations. Within the last year I have been moving the documentation from easy_install to pip, which helped a lot. We wrote tutorials. It was very easy to contribute.

And with Plone? I got warned that I had to sign a contributor agreement. For one typo fix. I started reading the agreement, it was just too hard to understand for non-lawyer. Can we make this easier? I am here to assist you if you need fresh eyes on your project.

David Bain: PyCon Jamaica

PyCon Jamaica is November 17 and 18 this year. And on Saturday the Python scavenger hunt race. It is at the Hope Zoo, where they have Pythons. Costs are 80 dollars. Accommodation is not too expensive. It is organised by PythonJamaica. You can help! You can sponsor us and possibly get a T-shirt.

This presentation, including links for the T-shirts: http://tinyurl.com/pyconjamaica2016