Last week I have been in St. Augustin at a three days pre-conference sprint before the annual DZUG e.V. conference which extended into the two conference days as well. We had a room in the University of Applied Sciences Bonn-Rhein-Sieg where the conference took place, but thanks to the excellent organization of Nina Schütz all of us five sprinters shared an apartment in Cologne, where we soon discovered a free wireless network that allowed us to work all day long. In the evenings we familiarized ourselves with the local flavor of beer called Kölsch in quite some nice pubs and bars as well ;)
While I originally planned to polish up the last bits of my PLIP's for Plone 3.0 (CMF 2.1 and some i18n features) I had an idea the night before the sprint which I worked on instead.
If you have looked into Plone 2.5 you will have noticed the introduction of a new product called GenericSetup that is used to configure a Plone site. If you are not yet familiar with it, you should really learn about it by reading Rob Miller's excellent tutorial that is available on plone.org.
GenericSetup supports both setting up a site (a persistent Plone portal) from scratch through something called base profiles but also supports a concept of extension profiles that can be used to extend the configuration of a site after it has been created.
Now these extension profiles can be used for installation of add-on products that need to register new content types, workflows, actions, create tools or anything else an add-on product would like to do. But right now there is one essential thing missing for this kind of additional configuration: Uninstall support.
Right now we use CMFQuickInstallerTool to provide us with an easy way of installing add-ons and it has integrated support for recording the changes each individual product makes at install time, on which it's uninstall feature is based on. While this recording feature is far from perfect it handles at least 90% of the use-cases and has proven to be working quite well.
Now the most obvious thing is: Why don't we teach CMFQuickInstallerTool how to install add-on products based on extension profiles rather than through an external method?
After skimming through the code I realized that this is far easier than I would have imagined. So I spent the most part of the sprint working on this and had it fully functional at the end, including some nice test coverage. Right now you can find the code on a branch in the collective. It is tested with Plone 2.5 and Zope 2.9 only but should work for any supported combination of Plone 2.5 and up.
Please try it out and report back any issues you find. You just need to replace the CMFQuickInstallerTool with my branch, there are no additional dependencies. If everything goes as planned we might have this included in Plone 3.0 and eventually even in Plone 2.5.2+
As a personal note I might add that I begin to fall in love with sprint driven development. I think I begin to understand those developers out there that would like to see their life being a never-ending-sprint ;)
Sprintingly yours,
Hanno
Sunday, September 17
Subscribe to:
Post Comments (Atom)

0 comments:
Post a Comment