Zope3/Plone to Django

I was going to write a brief summary/closer on our summer but ended up writing this lengthy article about our startup’s decision to switch to Django from Zope3/Plone as it is the major reason we’ve missed our previously projected release dates. Its difficult for me to post this as it may appear to cast some negativity toward Zope3/Plone, a community and CMS for which I have a great deal of respect. It is also difficult as it describes significant failure on my part.

I continue to post though as this startup is all about sharing the things you learn and this was a big one this summer. I wish I had found a post like this when I was first searching for Zope3/Plone experiences and hope others in my position find it in the future.A few months ago we made a huge team decision to scrap the month and a half we spent learning Zope3/Plone for our future content creation/collaboration site and switch to Django.

It was a really tough decision. Plone is an awesome content management system. Its built with python, has an amazing community, I had/have a Google Summer of Code in it, and the clincher: its already capable of doing 90% of what we want our site to do. It manages users great, handles blogs, wikis, profiles. It was mouth watering, and to be honest was my main source of confidence in the idea that we’d be able to pull off such a complicated site.

That confidence slowly deteriorated over our first month of learning Plone. I bought every book on Plone and Zope3 and in that first month in my parent’s basement Priyesh and I spent day and night learning the stuff. I read almost all of two Zope3 books and one on Plone. They made no sense to me. I kept re-reading them and going over examples. I could develop the examples just fine but I couldn’t figure out how to write my own.

I couldn’t get a feel for it. The concepts of interfaces, utilities, adapters, viewlets, ZCML, etc just weren’t meshing. This bothered me tremendously as I’ve been programming since childhood and consider myself (perhaps falsely so) at least halfway skilled in python and web development.

Note: I later found out that some of my problem was that, though only a few years old the Zope3 Developer’s Handbook has fairly outdated Zope3 methodology.

I looked around for classes as I decided its just the type of stuff you have to have a teacher for. The Plone community has fairly regular 2-3 day classes but none lined up with our location or timeline. I am almost certain that had I been able to take one of the Plone courses it would have come together fairly easy. As an alternative I found that a Plone sprint being hosted at the Googleplex! I went and tried helping out as I blogged about earlier. I wanted to get a feel for Zope3 and thought that it might inspire that “snap” in fluency where it’d suddenly be obvious how all of those components work in Zope3.

During the sprint I got to talk with Alexander Limi, one of the founders of Plone, who explained that Plone is in a very transitional state, attempting the crazy but so far successful task of slowly merging between Zope2 and Zope3. For those of you who aren’t in the know Zope3 is almost a completely different framework from Zope2. He explained that Plone will be incredibly difficult to learn for the next year or so as it completes its transition. New comers would have to learn both the old as well as the new and all the crazy ways in which they bridge the gap.

He was confident though, and rightfully so, that the Plone community was strong enough to make it through that year with very little new blood. He very humbly recommended going with a different framework for our startup; advice that we were already considering and took soon after. Plone may have already given us 90% of our site, but we decided that having to write the last 10% in Zope3 might take us longer than starting from zero.

Having lost so much time by judging a book by its cover we decided to do a great deal of reading and research before choosing our next framework. I had done a good deal of web development several years ago but a lot of fancy new and helpful frameworks have fortunately popped up since then!

We took a week, each of us diving into one or two frameworks, sharing what we liked and didn’t like about each. Our benchmark for each framework was the ease and accuracy with which we could replicate Jared’s One Blog. We’re still intending on posting our sometimes humorous results but haven’t had a public server up and running until recently.

As was already spoiled, we went with Django. I’d heard a lot of good things and they’ve so far been proven. For the most part we really enjoy developing in Django, though it can be frustrating to replicate features we already know are implemented in Plone :). There’s no on the shelves book on it (I like buying lots of books), the documentation doesn’t go very deep, and the community is significantly less active than Plone’s. The framework though, at least to me, just makes more sense. It was ridiculously easy to replicate the One Blog and problems with missing documentation can usually be solved with looking at a little source code or whining in IRC.

The change in game-plan has given us more work that we expected to do at the beginning of the summer. As I said, we thought we were 90% there and pretty much lost a month of development. Startups are all about obstacles though! Since the change we’ve been making tremendous progress and will be opening an Alpha to a few friends/advisors within the week.

Perhaps one day someone will open source a version of Plone in Django! Maybe that will be us. Djone? Glono?

zoPE <-> PlonE as djanGO <-> GlonO


  1. Harold said:

    Hi Dave

    We are in the midst of such an evaluation. We are working in Plone but it just seems so insanely heavy to get anything done in there fast, launch a prototype… check out what people think and then re-do it again. Then there’s social. Plone has no social nor is there an enormous interest in doing so. Then there’s the user-interface.. it really needs a lot of work to build something and a process that’s really easy to use. Not for a content manager, but for an individual who uses MS Word and emails. That’s it

    I am surprised you saying this about the activity of the Django community versus Plone community. I hear a lot of people talking about switching from Plone to Django and it seems there’s a lot more cool ideas going on in Django then I have seen in Plone right now.

    What are your opinions about this topic, now, 9 months later ?

    Thanks !

  2. Dave, your article is helpful in my own decision as well. I have other interests with Perl, but also have this urge to complete an open source CMS on my own for my own startup, as well as personal projects to manage knick-knacks around my house. I am a middleware architect/developer, and have tinkered with CMS (Stellent) and Web development, and was intrigued by NASA’s implementation of Plone (also, being a Mac user, I wanted something that will run natively on my Macs). But when I saw/read things about Django, I became even more hopeful on something up to date, more than Plone at least, so I am looking forward to this sub-project of mine. Please do post your results of migrating from Plone to Django.

  3. Alun ap Rhisiart said:

    Wish I had come across this sooner. We needed to move our community website (currently very old and written in ColdFusion) to a CMS. I considered both Rails and Django as a starting point, and building a CMS on top of those, but Plone did so much of what we wanted already. All I need to do is skin it, and read some objects from mysql via sqlAlchemy and make a simple interface for those objects. Those objects are not the bulk of the site however, which can be handled with normal plone folders and pages. So before xmas I transferred a lot of pages over, and started the remaining 10%.

    Oh boy! what a mess! I got both the plone 3 theming book and the professional plone development book, and went to the zope book and various online tutorials on plone.org. I am completely confused, and that little bit now looks like a mammoth task. Maybe it would have been simpler to write it myself, at least I could easily understand how Django works. Both books have step-by-step procedures to follow, which are actually pretty much what I want to do, but in both cases following the books quickly results in errors (on the theming book, I don’t think I got through a single chapter successfully). Furthermore, it seems very fragile. Very soon after a new installation ‘./bin/plonectrl start’ stops working, no idea why. The OS X PloneController app continues to start it up by some magic. Sometimes it all goes wrong. I made the mistake of thinking backing up the data.fs file was sufficient before trying anything (the docs seem to suggest this) but not so, on several occasions I have had to restore the entire installation from Time Machine in order to start it again. The error message is indecipherable.

    I realize that the Plone community is aware that it is too complex right now, and is working on that, but right now, I’m seriously considering giving up and just writing in from ‘scratch’ using Django. It may take at least as long to do it, but hat time is spent coding, not scratching my head and restoring from backups.

  4. Emory said:

    Hi Dave,

    Thanks for writing this.
    I’ve been looking at Plone vs “all the others” for some time. It seems like we are always in conflict between the ideal and what is easier.

    I love the technology, but I can’t risk that last 10%.

  5. Felix said:

    Perhaps one day someone will open source a version of Plone in Django! Maybe that will be us.

    Perhaps one day someone will open source a version of Plone in MOSS! Maybe that will be us.

    I need help migrating from Plone to MOSS.Does anyone have any documentation.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s