This is my happy rant about the sad state of Plone adoption and bootstrapping your Plone the development project. Again – you may have heard this before. But this time I draw pretty pictures 🙂
Each new Plone release has brought less happiness to the developers. We are not in free fall anymore, but the happiness curve remains flat (source: rants of Plone IRC channel)
Developers are the consumers of Plone the project. The effective result on the first diagram is that it is very hard to consider Plone as a platform for your new project unless you are “in the Plone” already. There is lack of “start building my site on Plone from the scratch” option.
Eventually this will marginalize Plone. People prefer to work on easier tools, tools they can get started easily even those tools would not be the best fit for the solving the problem (PHP, anyone?) When I learnt Plone I was still in a school. Can a student anymore learn Plone? (source: mailing list questions and on-line discussion)
This will eventually lead to a situation that we all die to the old age, alone with our Plone sites. That would be sad (source: Plone Conference picture galleries)
I don’t believe this is a result of any person doing things wrong. It is just a general oversight, the tradegy of commons. People are too excited to work on the fresh things and forget those who are still learning to drink our champagne (choosing a bottle is difficult if they lack labels). There hasn’t been focus to make Plone easier to adopt. This is slowly changing with plone.api and things. However, based on e.g. the sprint topic list of last Plone conference the message is going through slow. (source: past sprints until summer 2012)
What we can do?
- On the Plone roadmap and Plone conference keynote I want to see “Plone easier for developers”. Looks like it has not made appearance on any keynote or roadmap for a while. The highlight have been features, features and features. Let’s make this year different.
- For every Plone release, let’s require that there is at least 1-2 PLIPs which actually state “this is how Plone will become easier for developers”
- How we can gently guide community members to take the tasks which make adopting Plone easier? We need to staff the tasks with people who actually know things. People how need to dig up things by turning stones (code) upside down don’t tend to work there very long.
- Every time there is a new feature in Plone the feature sponsor should think: “How, with this new cool feature, I can make people more happy when they start using it?” I don’t want to see any feature which after the landing will lead to a situation where people come to ask to IRC “How this works” and I cannot point them to any up-to-date functional manual about the things. Lack of on-line tutorial = the feature is effective not functional. It makes me feel so sad: “How did this happen, again?”
- How can we reduce the steps the developer needs to take to get his Hello world running? Can we make a tutorial which fits into a single screenful of text, because your dev tools would be provided out of the box? The first impression counts the most.
- plone.org needs love too. Documentation team no longer effectively exists. Let’s give candy for those who volunteer.
How can we make these things happen? It seems everyone accepts this is the state of the things, but looks like there is no remedy coming or it is happening slowly
- Should we set core repositories to read-only until the documentation can catch up the things?
- Should we lock core developers and their friends to a room full of beer with disabled PyPi access, but give functional plone.org edit access?
- Let’s take some community members to a river boat ride on Arnheim and don’t let them land until they post out a solid story of functional ZopeSkel, unified installer and Hello World tutorial?
- Make sure that each Plone Conference sprint topics proposals has a bullet “this is how we actually make Plone adoption easier, not more difficult”
Let’s meet at Plone Conference (now with less offensive talk topic)
Cheers,
 Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+
And as a note: *I* am not going to file those PLIPs making Plone easier. *You* should do it. I am not going to fix every single thing wrong in Plone myself.
Wisdom: you can’t make complex systems easier except by rewriting them from scratch or ripping out major functionality or by breaking the overall compatibility.
No reactions? That is even more worrying 🙂
Although I have not used it extensively I really like the idea of a Plone API:
http://ploneapi.readthedocs.org
I’ve thought about that one way of shifting the “power” away from developers to users could be to have a Plone site owner’s association. Your blog post made me finally finish and publish this post:
http://jorgenmodin.net/index_html/archive/2012/08/17/a-plone-system-owners-association
Good points you are making, especially about the documentation on the Plone site, looking forward to meeting you at the Ploneconf and seeing what the community has to say.
Off the topic question, wasn’t there a link to a Ploneconf video with regards to the productivity that was in lower versions of Plone, and how we could judge now that in Plone 4 we lost a lot of that productivity. I really wanted to see it but I no longer see this link in your post, if that was a bad link than maybe you can tell me the name of the talk so that I may look it up
Thank you
Looks like the reactions where in the moderation queue… and I agree with Andreaas that you cannot make complex systems easy, but the totally lack of instructions is like actively hindering anyone ever try Plone.
My mistake, apparently the video link was in the talk presentation, and it wasn’t really Plone specific but rather the video regarding other frameworks and developer happiness.
Your observation about an aging developer population has another corollary: there will be a large influx of retired seniors who will be able to contribute to open-source projects. This may invert the open-source development age pyramid or at least provide a significant pool of experienced talent.
While I agree with your goals of making Plone more approachable and continuing the growth of the community, I have a couple of issue with this post. First, I think it’s overly negative, and gives a distorted impression of our community to people who may not be able to put your writing in context. Also, I think your use of graphs is pseudo-scientific and ultimately very subjective. They might give some readers a false sense of confidence in what is ultimately, just one opinion. (As a developer, I’m certainly much happier building sites in Plone 4, relative to the two previous major releases).
I think that part of the reason that Plone’s developer community is a bit older than some others (e.g. PHP CMSs) is that many of us are ex-pats from other systems. It’s a pretty common pattern to see new/young developers start with something quick and easy (e.g. PHP CMSs). The folks who are clueful realize the shortcomings of those tools and move on to something better (e.g. Plone).
I think the demographics at a Plone conference may be misleading, as many of the folks who make it to those are the developers who have successful, established businesses and have the resources to afford international travel, or are valuable enough to their employers to justify their spend on the conference and travel. If you attend local and regional events, I think you’re likely to see a much younger demographic.
I would say that it is still very much possible for students to learn Plone, as evidenced by the thriving Plone communities at Penn State, UC Davis, Oxford, UCLA, and EESTEC.
I appreciate the work that you do to strengthen the Plone community. I’m with you for making sure that Plone stays accessible and popular and figuring out specific activities to support that. Let’s just do it without the pseudoscience and alarmism that might worry some of our potential client who aren’t able to put your words in their proper context. The context of an incredibly powerful system that has been consistently successful at the highest levels of the governmental, corporate, NGO, and educational sectors.
> I would say that it is still very much possible for students to learn Plone, as evidenced by the thriving Plone communities at Penn State, UC Davis, Oxford, UCLA, and EESTEC.
This only works if you have EESTEC etc. alumnis or professionals guiding you. If you start from the scratch with publicly available materials you seriously cannot consider Plone as a platform. You don’t get your own content type running in few working days. Currently it doesn’t happen or is too painful. First impression matters.
The post is overly negative, because from my point of view the community is consultancyware which tries to retain existing clients and does not see it beneficial to make Plone accessible for more companies. And I feel angry about this and the response I get from people seems to be “hush hush we are doing well”.
If I had to choose one thing to work on/support it would be the out of the box developer experience. I did notice that some documentation for this is coming out check out: http://collectivetodoapp.readthedocs.org/. The tutorial showcases the emerging ability to “roundtrip” from through the web development to the filesystem development (very important for introducing beginners).
I’m actually enjoying some of then new tools, Dexterity and Diazo and I think they will make life easier for new users.
That said, you are very much accurate in noting that those who learn Plone, learn it within a community. It means we either need to strengthen the growth of local communities or improve the “unattended” getting started experience.
Final note. I teach web programming at a University. I currently avoid teaching Plone to new web programmers as I consider it too complex when teaching the rudimentaries. Instead I use PHP, web2py and Flask. I will happily incorporate Plone in my web programming curriculum once I can have them able to produce a “hello world” Plone app/addon on their own machine within 10 minutes.
As a relative newbie to Plone, I sometimes feel like I’ve finally been given a secret handshake and granted entry to the “international Plone guild” recently, by being employed by at a Plone consultancy who are spending time to mentor me and get me up to speed. This makes all the difference in the world. (Thanks to those that wont be named here, you know who you are)
I don’t know how it was developing for Plone 2 or 3 but I can attest that the “relatively unattended” learning of Plone 4 has been quite a frustrating experience many a times. Previously I have worked with another major CMS and found myself quite productive after a few weeks of self-learning with plenty of docs, video tutorials out there and googling my way through issues.
It is also only now that I became aware of Plone API’s existence. Thanks Jörgen for that link above. It would have been really helpful to me a few months back.
(Found no mention of it in the docs so just added a link to it at http://collective-docs.readthedocs.org/ – please merge my pull request)
Looking forward to your talk at the conference.
plone.api is quite recent venture, built mainly during this summer. It’s still a bit alpha quality, so probably don’t want to use it yet, but it’s making good progress. There is in fact a sprint going on currently about the matter.
This is serious food-for-thought and a solid challenge.
I think Dexterity and Diazo is making my life as a Plone developer easier. Having said that, I agree that Plone is too complex a platform to start with on your own. My experience with mentors like Roché Compaan at Upfront Systems has shown me again that one cannot learn complex platforms in a vacuum. Docs alone cannot be the full answer. Maybe more ‘Plone days’ where we mentor new developers and administrators is a better option.
Some more documented experience:
+1 on the many ways to do the same thing in Plone 🙂
It is confusing in the beginning and often later too! Introduce grok into the mix and you have just added another way to do things.
Having said that, I love grok. It has made my Plone experience a lot better.