Tag Archives: plone

Plone’s Steep Learning Curve

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..

I tried…

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
… errors and no ideas why… What it something I said?

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.

Tweaking Cyn.in’s Features

Cyn.in is a great platform for collaboration but I am looking into how it might be adapted to be a better fit for the University of York’s needs.  What I need to do is work out which features …

  • should be rolled into the development of Cyn.in. A good example of this is the UI for the Home Page when we have more than 40 spaces. It’s already apparent that you need a very different user interface for working with 4,000 people as opposed to 40. It would be good if Cyn.in “adapted” based on usage so that as the site gets bigger and more complex, the UI reflects this. One very easy (and cool) addition might be an “I’m going” button on events.
  • already exist and are are about integration. Good examples of this are the FeedMixer product for displaying RSS feeds and the Faculty / Staff Directory product which lets people add more information about themselves in their profiles. the Anz.Jabber instant messaging product has caught my eye too.
  • can be easily developed myself (or with a little help from my friends). I am currently looking to maybe use Archetypes to create a Location content type. There are others out there such as PloneWorldKit (uses Flash) and GeoLocation (uses GoogleMaps?) but I’d quite like one that worked with OpenStreetMaps and has less strict GEO-focussed functionality.

Other features such as “can I have a taxonomy of jargon-related abbreviations and acroynms that get appended or search-and-replaced when editing a document”… seem hard to define and even harder to work out if they are a low-level feature request to Cyn.in or something I could easily create myself. This isn’t essential, but it would be nice and could be made to work for peoples’ name, locations (such as room numbers) etc.

Another feature I find hard to explain is to do with how groups (and Spaces) are administered. I would quite like to create a Group/Space that automatically has a “private sub-space” … but that this isn’t set to be the default (otherwise people tend to work away in privacy and obscurity). I’d then like a “knock to join this group” button which the administrator manages. The alternative to this is a massive top-down administration overhead that I just don’t think will work.

One feature I would definitely like is the “First Use Ten Second Tutorial”… so that having accepted an invitation to a Cyn.in community you are presented with a one-page (maybe two) tutorial saying “this button does this… and don’t swear please (or similar)”…

Lastly, as I said, I don’t think the design of Cyn.in’s Home Page works very well for larger organisations and yet vanilla Plone does have a “Dashboard” screen. I like the notion of a personal dashboard where you can decide which portlets to show (or have them pre-configured for you). This, in one fell swoop solves the problem of “Fire Hosing”… it opens up the possibility of adding Google Gadgets (say for email or calendars)…

So in a nutshell… I need to…

  • Attempt creating a new Archetype based object type (this may  be useful as a Minutes object for recording meetings).
  • Add Location abilities (collective geo looks good but I can’t contact them)… this just needs to be very simple
  • RSS Feedmixer and portlet
  • Anz.Jabber for instant messaging (even if just for status … i.e “is online”)
  • I tried at the WebServices product but get an error when I call it. This might be handy for hacking and integration (not essential).
  • integrate Faculty / Staff Directory (does it do Twitter accounts and Blog URLs? If not needs adding)

And finally I need to work up and discuss with Cynapse some UI ideas, particularly with regards to the Home screen.