[Grok-dev] On CMS's in Grok

Martin Aspeli optilude at gmx.net
Tue Apr 1 17:27:43 EDT 2008

Hi all,

In light of recent summer of code projects, and the three or four CMS 
projects that have been mentioned off the back of that, I wanted to 
write something to the list for comment. I realise this may sound a 
little arrogant or presumtive, but it's not meant in that way at all. I 
just want to foster some debate and see what people think.

To start with a controversial statement:

  Don't build a Grok CMS.

Or the corollary:

  Don't try to compete with Plone.

So ... arrogance and ignore aside, what do I mean by this?

Plone is a bit of behemoth. It does a lot. It is based on many years of 
experience and thousands of man-hours of development. Getting a system 
that does everything (or most things) Plone does, which is stable, 
tested and has the right integration points is ... well, it's a huge 
project. Building a community around that and building a brand around it 
is even more daunting. We welcome the competition of course, I just 
don't want anyone to underestimate this task.

The usual argument here is that Plone is overkill for many tasks. That's 
true, and to a certain extent we'd be happy if we could point people at 
a lightweight solution we'd trust when it's clear that people are trying 
to use Plone for things it wasn't designed for. The problem with this, 
though, is that "light weight" really just means "has the features I 
want and no more, but also no less". No-one wants a lowest common 
denominator CMS, since more fully-featured systems will then seem more 
attractive. I often say that it's easier to turn something off in Plone 
than to turn it on in Zope. If you listen to those demands, you'll end 
up building the union of the features that everyone wants, which lands 
you back at Plone.

The Plone people are also really excited about Grok and want to use 
Grok-like concepts to build Plone systems. We also want to share 
components and services more openly with other Zope and Python projects 
- both to give components away (which is what the plone.* namespace is 
about) and to integrate things not invented by Plone.

Now, Grok is obviously a good fit for CMS and content-centric 
applications, largely due to the ZODB and publishing concepts inherited 
from Zope. Grok is also clean, nimble and easy to work with. I'm pretty 
sure that if I ever wanted to build a home-grown CMS or CMS-like system, 
I'd start with Grok.

I think this is where Grok's niche may have the strongest potential. 
Don't set about building another general purpose CMS. The open source 
world has a million of them. Build the tools and services that people 
who want to build their own CMS applications need - perhaps because they 
are so overwhelmed by the number of options in the market and want to 
control their own destiny rather than having to take a bet on an 
existing platform.

By all means, drive those requirements with a sensible, minimalistic 
example application. But don't focus your energies on the front-end 
polish or a wide range of "tick box" features. Focus them on building 
the on the decade or so of experience that this community has with 
building real-world content-centric solutions. Build the things you wish 
you'd had back then. Let grok be the caveman with the space age tools.

And then, we over in the Plone community can steal all your tools and 
use them to make Plone better. And so can Vudo. And z3ext. And Silva. 
And anyone else.


Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book

More information about the Grok-dev mailing list