Making Plone easy again (and Sauna Sprint topics)

This blog post is about making Plone CMS to accessible for more developers. This is a major topic on which we are working on in Sauna Sprint 2011 (see the previous blog post about Sauna Sprint and motivation to come to Finland).

1. Preface

Please do not take this post too seriously if I am ranting tongue-in-cheek. This thinking does not reflect the official opinion of Sauna Sprint team any way, it is just my personal rambling.

2. Background

Plone is having popularity issues. This can be deducted by:

  • PHP CMS are more popular (Google trends and so on)
  • Plone lacks love
  • By discussing with Python programmers outside Plone community: they see Plone as monster

Plone is a superior CMS product (feature wise, polish wise, tech wise, and so on). So how did this happen?

My theory, you are free to disagree, is that the community has been driving “wrong” ideologies

  • Plone’s “buyers” are not users, but developers
  • There has been no driving community factor to make Plone accessible for more developers. Plone community has been working to make Plone work for the existing community members, not new members. The consulting companies have been too busy to extract money from their existing big clients. It might even be that it’s the best interest of these companies to keep the barrier of entry high, as this way they protect the Plone business for themselves. Note that this strategy will fail in the point there is no longer Plone business.

The big boys are telling that customers are abandoning Plone, because there are no developers. I know a lot of Plone developers, looking for more Plone work.  I’ll translate this that there are not enough affordable Plone developers entering the market.

I am also not buying arguments like

  • “don’t compare apples to oranges (Django vs. Plone)”
  • “its history and evolved that way”
  • “big tool must be complex”

3. The result

Plone is easy to use, but hard to develop. If you need to use code generators and boiler-plate in Python code, you are doing it wrong.

Plone is a soup of different, non-mainstream, technologies. To be a Plonista you need master: Python (ok docs), Plone user mode (good docs), Zope component architecture (some docs), ZCML (no useful docs), GenericSetup (no docs), TAL (some docs), Archetypes (basically no docs), buildout (aaaaaarghs) … You have too much to learn from material which does not exist. Today the material effectively does not exist if it’s not your first Google hit – I am against book.

New developers are not getting in. It is easier to duplicate basic Plone functionality in a hacky in-house Django CMS than customize Plone for your use case. Plone does not give any more added value to the new developers. There is no business motivation to adapt Plone as a technology platform in new ventures.

4. The quest

Let’s fix it, as I see the developer acceptance the most crucial challenge Plone community is facing if the community wants to survive.

What we can do here is

  • Make Plone easier for developers
  • Make more, better, learning material available
  • Eliminate and protect against factors in Plone which hinder the goals of two above bullets (do not include new technologies or modules to core if they make developers sad)

To accomplish this we can

  1. Promote “easy” technologies inside and outside Plone community (Dexterity over Archetypes, Grok over ZCML)
  2. Making a standard workflow available for them (Django style tutorial that do 1, 2, 3 and you are a certified Plone developer)
  3. Kill technologies which make the stack unnecessary complex and are not necessarily needed in newbie use cases (buildout, I am looking at you)
  4. Replace old, badly documented and difficult solutions with easier ones (could we actually replace TAL with something more popular?)

5. Operational plan

Here are some concrete tasks what we could tackle in Sauna Sprint.

Make it easy department

  • Plone auto-restart team: provide working and fast auto-restart á la Django or Tornado (hint: plone.reload doesn’t cut it – you need real restarts process-wise)
  • Default custom product team: ship Plone with a file-system based custom product skeleton, so that when you need to include your first custom Python module you don’t need to learn about buildout and paster first . You actually can copy-paste in Python code and it just works.
  • Through-the-web is happy again team: Make it possible to code and execute Python through-the-web so that it actually works.: a working replacement for RestrictedPython

Fix user-wise broken things department

  • Buildout team: make buildout more user friendly: spit out error messages which are actually useful, have newbie buildout tutorial from the developer perspective. Nothing bad should happen when buildout is run. Make buildout to confirm version updates, etc.
  • Anti-buildout team: how to install eggs without buildout. Why did we need the buildout in the first place?

This is how you do it department

  • Tutorial team: Make “gapless” hand-holding tutorial for creating your first view, form and content-type. Make it so that you do not need to look outside the tutorial or learn anything unnecessary (don’t make me think)
  • Picture team: draw big pictures of Plone architecture, how different parts are connected, so that new developers get hang on things easily
  • Document generator team: Integrate collective.developermanual with Sphinx tool that generate the reference  documentation from the source code: views, viewlets, templates, CSS classes, portlets, etc.

Hasta la vista babe department

  • Kill it with fire team: Hunt down all bad learning material and make it redirect to new learning material (no ExternalMethods, no Install.py, no plone_skins, etc.)
  • Nuke it from orbit team: I am not sure what this team could do, but I like the feeling of the name

We hope that novice  developers attend the sprint. This way we can use you as guinea pigs and document the pain points on a road to become Plone developer. Don’t worry – we’ll inject you with proper medicine to numb the pain and forget bad memories.

\"\" Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+

Sauna Sprint 2011: motivational blog post (蚊が楽しいです)

Sauna Sprint 2011 is coming! Sauna Sprint is an international Plone, Python and open source event arranged in Finland (2011 for the second time). People all around the world to gather to work on Plone content management system, code Python and have some fun for one week.

The event is July 23 – July 30, 2011. Come to #saunasprint IRC channel on Freenode and enlist yourself now by the joining CoActive project and adding your name to the guest list on the wiki style project page!

In the social program we have beer tasting, sauna, wood chopping, installing internet connection and who kills most mosquitos competition.

This year we have secured a sprint location near Tampere city (editorial note: is near a correct adjective here?). The image is not corrupted – the green color is forest.

Here is our mansion:

We have reserved meeting rooms for the sprinters to work:

As Finland is the land of thousand lake and wilderness on all sort you may have a chance to see some majestic wild life.

Reindeers:

Mooses:

Bears:

Mosquitos:

A Plone sprinter:

See you in Sauna Sprint 2011!

\"\" Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+

Testing localhost site in Opera Mini – SSH tunnel trick

Opera Mini has 100 million users around the world – in developing countries it’s a very important browser. Opera Mini is based on thin client model where the page is rendered on the server and then send as compressed to the mobile. Some Javascript / AJAX support is available, especially if it run during or before document ready handler.

Opera provides web based simulator which you can use to test your web pages in Opera Mini. Opera Mini is based on Java, on both mobile and in the simulator, so Java plug-in is needed.

If you don’t have an public IP address you are firewalled you need to do a port forward with SSH tunnel though a server having public IP:

ssh -gNR 8888:localhost:8888 yourserver.com

Then you just go to Opera Mini simulator and type your port forwarded address:

yourserver.com:8888

 

\"\" Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+

Web and Mobile 1.0.3 released, Plone 4.1 compatible

I just released Web and Mobile 1.0.3. It has some minor compatibility fixes for Plone 4.1 (in fact there was nothing broken besides unit tests).

Please update your buildout pindowns for Dexterity 1.0:

extends =
 http://dist.plone.org/release/4.1rc2/versions.cfg
 http://good-py.appspot.com/release/dexterity/1.0?plone=4.1rc2

Please report all the issues in the issue tracker.

 

 

\"\" Subscribe to RSS feed Follow me on Twitter Follow me on Facebook Follow me Google+