Plone Konferenz: Day 1
I have never posted reports from conferences before, so a few words on my intentions: I don't plan to be exhaustive, nor even coherent. I just want to share some notes I took at the various talks I attended today. The very minimum that happens for me when I see an interesting talk is that I will get inspired to find out more about a number of concepts the presenter touched upon. That's usually the extent of my notes - leads for later exploration. My notes generally are all in Evernote, perfectly searchable to begin with. By posting them online I will get the added benefit of having them indexed by google...
The slides for most of the talks of today are available online already. Just go to the schedule page, click on the talk you are interested in, and look under the presenter's profile box. If there is a line called Folien, the link next to it points to the slides. They will be all in german, of course, with a few exceptions.
The MC in the main lecture hall was Philip Bauer, of Starzel.de. To introduce the conference, some Department Chair or other said a few words, of which I only remember these: "I always tell my students that the best programs are written not at the keyboard, but while taking a swim or walking in the park." Philip also thanked him for donating us the venue for free, which is remarkable.
A big kudos for the conference organizers: by the professionalism and flawlessness of the first day's proceedings one would surmise that these folks are old hands at whipping up conferences of this caliber, and not that this the first ever German Plone Konferenz. Hats off to you!
The keynote was by Elizabeth Leddy:
Liz's talk was truly excellent. The gist of it: she is fed up that coding for Plone is so ridiculously hard, so often. Example: it takes 6 files and 20 lines of code just to add a new stylesheet. Another example:
from Products.CMFCore.utils import getToolByName
# you have some object "context"
portal_url = getToolByName(context, "portal_url")
portal = portal_url.getPortalObject()
You might recognize this as the code you need to grab the site portal. How silly is this? Nobody can ever remember it, it's always copied and pasted from somewhere else.
It's not just that Plone developers want their lives to be easier. It really is about the success of the platform.
"If you want a platform to be successful, you need massive adoption, and that means you need developers to develop for it. The best way to kill a platform is to make it hard for developers to build on it. Most of the time, this happens because platform companies ... don't know that they have a platform (they think it's an application)." ~ Joel Spolsky
Easy things should be easy. They should be so easy that we don't even have to look at documentation, or find code samples to copy and paste from.
The most-tweeted quote from the presentation was "Plone developers cost much more than the competition because they are highly skilled + scarce" (in which the first tweeter mistakenly wrote "scared" instead of "scarce").
I highly recommend the slides (linked above).
Liz ended by announcing that this will be her crusade for the year, and that she would send an email to plone-developers to solicit input on all the things that frustrate us and that should be improved. She promptly did, and set up a google moderator space to collect input from the community. As of this writing, there are 19 posts already.
What a great tone to set for this conference!
Buildout - Alles im Griff! (slides) (alternate)
Tips and tricks for doing useful sysconfigy things with buildout. For this one I just have a bunch of keywords and names I want to look up later:
bin/checkversions -v versions.cfg | grep was
Plone Software Center
lovely.buildouthttp für Athentifizierung
parts/varnish-build/bin/varnishlog -c -o
Mehrsprachige Sites erstellen und verwalten - Tipps aus der Praxis (slides)
This was about multilingual sites. Working in the US, I rarely have the chance to use the many ML Plone features and add-ons. In fact, I vividly remember a sprint in Seattle, in which we tried to do
"the right thing" by declaring all the i18n domains, and stuff, but we it would be immediately obvious to whoever would look at our code that we didn't know what we were doing. We hoped that at least our effort would be appreciated...
valentine.linguaflow + XLIFFMarshall
I liked one feature of slc.linguatools: your content gets a ML workflow, so that when one item is edited, all the translations of that item get an info box at the top of the page to alert you that those translations are out of date.
Mobile Kontexte und Responsive Webdesign (slides)
I think the title is self-explanatory.
Datendrehscheibe und Download-Plattform: E-Book-Management mit Plone
This was really cool. The only bummer is that the product described is not released, understandably, since it depends on a whole setup external to Plone.
It's about using Plone as a delivery and reporting platform for e-books. The product provides two new content types: an e-book, and an e-book container. You set all the metadata, upload the e-book. Then you decide how many random download codes you want to assign to a given e-book. Now you can print fliers with the URL+code, or stickers, or what not. It even gives you little snippets of HTML that can be embedded on any other website, which generate a download form: it asks for email address, name, and whatever other information is required. The form invokes a view, which in turn wraps up the e-book with whatever DRM "envelope" is associated with the code, and starts downloading it. Then you can get statistics on how many downloads per book, over different time ranges.
It looks conceptually really simple, and very powerful.
Save The Dates: Das Kalenderframework plone.app.event
All about plone.app.event. Johannes is an expert on event types in Plone.
I want to try this out:
Plone Deployment Architecture (slides)
Alan joined us live on Skype from Houston TX. Biggest takeaway for me is that I really want to move my hosting to relstorage. Also interesting: demostorage. This takes an existing filestorage, network storage (ZEO) or relstorage as it was at startup time, and does all the writes to RAM, i.e. the persistent storage is not touched.
HAProxy can be configured to report on URLs that takes the longest
collective.stats IN:event.log OUT:CSV file (also HTTPResponse Headers)
Default Plone Mode
- content in root of Plone
- Maybe content "staged" to a container
plone.app.async is "native" but big PRO/CON
Carrot/Celery as good as Python gets
Jan Ulrich Hasecke talked about the german user manual. It's written with sphinx, so it can produce a nice online version, as well as a great PDF for hard copies. All the images can be replaced, to customize it to a specific deployment.
Daniel Nouri talked some more about Kotti, a lightweight CMS built on Pyramid.
Runtime rules, static is subordinate,
Don't mess with a framework,
Keep it simple and pythonic,
No fights with storage,
Use chains and trees, as structures.
Jens Klein on YAFOWIL
(Yet another form widget library)
Jens decided he hates form libraries. z3c.form is insane. So he wrote his own with extreme simplicity as his goal. He wants a form to be generated with no python code, or as little as possible. A form is a data structure (trees and chains), so it can be represented either as a dict, or in YAML.
example: Plone Custom Search on http://plone.org/documentation/kb/build-a-custom-search-form-with-yafowil