Yet another pre-Plone Summit blog entry
So, tomorrow I’m off to San Francisco for the Plone Strategic Planning Summit. It’s going to be great, the Plone community is full of fantastic people, and I had a great time at the Plone conference, and with a few exceptions all my favourite Plone people is coming. I can’t promise that we actually will come up with a straight answer to all the questions, but it sure is going to be interesting, and I’m sure I’m going to have a fantastic time.
So, what do I want Plone to be, look and work? What’s the current problems?
The first question is what Plone is? Is it a platform? A framework? A product? All of it? None of it? Well, it of course depends on how you define the words. Reinouts position makes sense with his definitions, but I’m not sure most people would use the words like that. Paul Everitt has one take on it, and I think that he uses the words slightly differently, and sees a platform as more of what Reinout calls framework. But I’m going to go with Reinouts definitions, because they seem to make sense to me.
So is Plone a platform/framework, and should it be? Well, in my opinion, it isn’t neither of them today, or at least not a good one. Plone is a good content management system (whatever Chris says😉 ) that are easy to configure to suit your needs, and has loads of nice third party add-ons. So it’s a product, and good one at that. But is it a good platform, how easy is it to build on it? Well, after one year of Ploning, I have to say that it isn’t easy. Plone 2.5 was OK. It was a confused mess, but that confused mess centered on portal_skins, and most of the work was done in a big heap of skins that overrode each other. The trick was untangling the mess, and overriding the right thing. Once you got that, you could do most things. You usually did them in a ugly hacky way, which meant that taking over somebody else’s project usually was a minor nightmare, but that was Plone, and the Ploneish way. Ugly, but functional. A major complain of mine is that Plone complains to little when you do mistakes. Type one thing wrong in the type definition, and it just doesn’t show up, with no indication of which of a multitude of settings that are wrong.
Plone 3 tried to untangle the mess, but the effect is what a colleague of mine calls “a conspiracy on the hard disk”. Everything is done by little snippets of code spread out in several parts of the disk, which you typically have to find by doing a grep and reading loads of code. Many things, like creating a portlet, needs four files with quite a bit of repetition. There is no way to figure out how to do things, because it means you must deeply understand many parts of Plone and Zope. So what do you do? Well, you buy Martins helpful book, and copy out his code, and modify it. That works, but it’s not easy. And it stinks of cargo-cult programming. You copy out code without understanding all the bits of them, because it works. It’s not ideal at all.
We have a framework, Five, and we have a product, Plone, but I’m not sure we have a platform. Should Plone be a platform, or should we insert a platform layer in between the framework and the product?
Well, the ideal think would be if we could realize the vague plans Philipp and others have had on a Grok-style layer for Plone. That layer could easily be the platform. But creating that layer is a lot of work. Does an open source project like Plone have the stamina for something like that?