Warning: This isn’t really a blog post it’s just a long boring moan
Almost 10 years ago, this blog was developed in Zope. It wasn’t big or clever and it’s why (to this day) my URLs still have “/Articles/” in them. That was a Zope folder and I thought it made sense to name it properly with none of this lowercase nonsense. And then (was it 2003ish?) Plone came along and although I tried and tried and tried, Plone beat me… I didn’t get it. To be fair Plone didn’t offer me what I needed, which was a simple prototyping environment, I really didn’t need workflow or roles or permissions…. I just needed python at the end of a URL.
Feeling more mortal than I’d like after failing to get to grips with Plone, I sloped off elsewhere… doing more UI or usability work and much less development in general, but using still python for unusual web crawling projects. When tools like TurboGears came along I tried them, occasionally I had another run at Plone, I mean, how hard can Plone really be?
Then Django made web development both easy AND pythonic. Django has its quirks but, and this is probably because Django grew out of the publishing industry, the documentation is lots of different shades of lovely. And the documentation works (often because it is tied to version numbers of the software).
Now I know that Plone is a different beast from Django completely but I now really want and need to learn it and so this week I’ve been sitting down, gritting my teeth ( not a requirement I know but it helps) and doing Plone tutorials. So far, it’s not been all good… Did you catch my classic English understatement then?
I started with Professional Plone Development book, it’s title seemed to have all I want… except the professional bit I guess. To begin with, I couldn’t get past the first three lines of code, which gets easy_install and installs a Zope Skeleton. I couldn’t do this because I was working on a Mac with python2.5 and 2.6 and Plone only works on 2.4. So I tried to get 2.4 and make it the default python but it’s harder than it sounds. Wrong libraries get loaded, paths are wrong and there seems to be a history (and related mess) about what is the best way to distribute python code… I gave up…
Next I thought that with a copy of VirtualBox and Ubuntu I would be able to run a virtual machine with Plone on it. This kind of worked but the install was lengthy and getting my cursor back from the VM was a black art and usability nightmare so I went with VMWare. Wouldn’t it be possible for there to be VMs for Plone with all the right versions of everything with everything in the right place? Anyway… back to the book…
I then get to what is maybe the fourth line of real code to use in the book…
paster create -t plone3_buildout myproject
… and I have no idea what paster is, or what it does. I thought it might be one of those websites that you paste code onto and share (and then run) … I have no idea what a plone3_buildout is… or what -t is for…basically, a whole heap of concepts are dumped on me that I have no idea about. Why is there a tool called paster anyway? Why isn’t this part of Plone itself (a bit like the ./manage.py do_something format that python uses?
Then we move into a discussion about getting Eggs from the Cheese Shop? …and PyPi and aargh! The language and metaphors are a mess!!! OK, I’ll admit, until now I’ve hated eggs because they rarely worked and a folder of code seems a much more sensible way of dealing with things, I’m starting to see why Eggs are important but can we now start again with the whole terminology thing. What started out as funny is now, frankly, not.
Then, whenever I want to install any extra bits to Plone it seems that there is “more than one way to do it” with a Buildout or old fashioned folders in the Products folder. Can’t we, for the sake of a tutorial pick one and stick with it.
In the book we are then invited to write Unit tests before we’ve written any code? Now don’t go getting all purist on me, but the Unit Tests didn’t work, were complicated and frankly…
The then shows Code fragments that break across pages making them un-copy-and-pastable (they lose tabs too) which makes every line a chore.
The buildout.cfg file/ approach is introduced with no explanation and looks slightly familiar as a format, but do tabs matter? I’ve no idea… I added comments that broke the buildout process (yes).
Then using /bin/buildout -No doesn’t work…some product complains about needing to go online
I’m still with the book an the example is Creating a “Policy Product”… A what? At this point I’m not sure if a Policy is concept from Plone or what..
I then found a bug in the code in that I found a permissions module that’d been renamed from something much longer meaning it couldn’t addPolicy(). Now at this point I’m guessing that my version of Plone isn’t compatible with the tutorial.. maybe because eggs have automatically updated themselves… who knows.
And so.. after much sweat and tears… the first code from the first chapter wouldn’t install.
I moved onto another book from PACKT… and found similar problems.
Moving to the hopefully more up to date online tutorials, I then decided to follow the DVD Collection Archetype creating tutorial, only changing the names/namespaces to be something I actually need ( a “Minutes” object for recording meeting notes). It didn’t work and I couldn’t work out why.
Giving up on writing my own Products, I thought it might be best to install some other ones and see how they work and hope that would bring some insights..
Faculty Staff Directory (wouldn’t install). I’ve left a traceback on their Issue Tracker. I really want to use this product.
Feedmixer (wouldn’t install). Thought this would be easy. Again, I’ve left a report.
Collective GEO … yay! … This worked almost first time and I now can add coordinates to any Plone object and have it displayed on an OpenStreetMap. THIS is what Plone development should be like… thought through and reliable.
And now I’m getting random …
ImportError: cannot import name IObjectMovedEvent
So… after a couple of weeks of getting stuck into, but mainly stuck by Plone I need to take a breather and start again.
Plone people, there really is a need for …
- A version of Plone that exactly matches clear and simple tutorials. Being simplistic isn’t the same.
- Stopping the assumption that I’m a unix master. I’m not, but I’m willing to learn the bits I need if you take it slow.
- A re-thinking of terminology used for the various bits and bobs (I mean… “paster”…? wtf?)
- Some consensus about “the best way”… I don’t want confusion I want guidance from people who know better
- The UI of the management screens in Plone could do with a big hand. Currently it’s like a tool shed with all the tools laying on the floor, on the bench on the window sills. Maybe building some helpful help text into these screens wouldn’t go amiss. Maybe group some relevant tools together.