Sorrento Sprint 2008
This year's Sorrento sprint, which is the second sprint of that kind, took place in (guess where...) Sorrento, Italy from the 26th to the 30th of March, 2008. It was great fun, and I'm sure you'll find lots of blog posts about the event itself, so I'll keep to the technical stuff here.
If you're interested in Pictures related to the sprint go to Flickr and check out the images with the keyword sorrentosprint2008.
There was a round of short presentations about the topics covered at the sprint on Saturday evening and this is a short overview of what went on and, more importantly, where you can go if you need to know more or want to get involved. The people I mention either lead the sprint topic, or are the contact persons or "champions" for the given topic. In most cases people did not work on the topics alone of course, but I thought having 40 different names in here doesn't really make sense.
Tests for KSS and Funittest
Balazs Ree and his team worked on Selenium tests for the KSS framework. KSS is, as you surely know, the Ajax framework that employs an easy-to-understand, CSS-like syntax and which ships with Plone. After overcoming a major authentication issue, work seems to have progressed rather smoothly and according to Balazs some extensive documentation on how to use the Selenium test framework for KSS was written. Sylvain Viollon worked on Funittest and its documentation and wrote a paster template for easy Funittest creation. He also created a Funittest for the Plone integration of KSS.
Selenium is a test-framework that allows recording, manual editing and playback of user actions in a browser. You start the recorder, click around in your page, edit the resulting script -- which is basically a transcript of what you just did in your browser -- and then have it run automatically to see if things fail.
Funittest is a functional test tool based on Selenium Remote Control. It proposes a way of creating a model stack for different levels of abstraction, helping the developer sketch out their functional tests in a modular and reusable way.
- KSS framework
- AJAX on Wikipedia
- CSS on Wikipedia
- Funittest project page
- Sprint summary for Funittest
- Details about the sprint's results on the KSS project's blog
The main developers behind KSS are Godefroid Chapelle and Balazs Ree, you can find them in the IRC channel under the usernames "__gotcha" and "ree" or you could just sign up to the KSS development newsgroup at gmane.comp.web.kss.devel. If you're interested in Funittest check out the OpenPlans Funittest project website.
Investigating Alternatives to ZCatalog
Malthe Borch worked on implementing a Xapian search engine backend for collective.index and started a fork for a z3c-package with the same purpose so that Zope 3 and Grok users will have something to play with soon as well.
The portal_catalog is what is used to run searches and all kinds of related things in Plone. The objects in Plone can be quite big, and to find out what is in them they have to be loaded into memory, often referred to as "waking up". This is OK when looking at a couple of objects, but can quickly turn into a memory-hogging, slow procedure when a larger amount of objects get involved. To evade this, the catalog keeps the most important information about the objects in a very efficient and quickly searchable data structure that gets queried when a search is started. A search can be a full-text search with a search form, but can also be the search for sub-objects of a folder to build its navigation. Although being quite dependable ZCatalog is showing its age and there has been some discussion about what it should be replaced with.
collective.indexing is a framework that provides an abstract layer for queued indexing. Queueing can significantly improve performance and by acting as a sort of middleware it is possible to plug in different indexing/search engine backends. collective.indexing started off as a project from Jarn and was based on enfold.indexing.
Lucene is a search engine library written in Java that can be used for all sorts of text searches. Since it's based on Java it is platform-independent. Solr is a search engine implemented with the Lucene library.
Xapian does pretty much the same thing as Lucene does, but it's implemented in C++. I have not seen any benchmarks, but I guess this would make it faster than the Java-based Lucene.
- Details about Jarn's project to improve indexing in Plone
- Product page for collective.indexing
There is currently no place to go other than the developer mailing list, so reply to the aforementioned thread if you want to contribute. You can also ask Andreas Zeidler (witsch) or Helge Tesdal (tesdal) for more information on collective.indexing, or Malthe Borch (malthe) for more information on the z3c-package on the IRC channel.
Christian Scholz worked on Microformat support in Plone, which he apparently managed to finish. During his presentation he showed what Microformats can do in a short demo where he could add dates from a Plone event into a Google calendar with the click of a button! He also showed a that keywords can be hooked up with tags in Flickr. Pretty cool! He has created a blog post about this and announced to have more info coming soon.
Microformats try to standardize a set of plain XHTML attributes (e.g. classes) so that software scanning the page can actually tell if and where a certain piece of information is. Let's use the calendar example from above: A program scanning the page (e.g. a plugin in a browser) can not really know where the start- and end-dates are unless it gets some hints from the HTML-code. In the case of the start-date the HTML class-name of the element that contains the date would be "dtstart" according to the "hcalendar" date and events format. Check out the Microformats page linked below to find out more about different formats and their use.
As far as I understand it the work is pretty much finished, but if you feel like it, contact Christian Scholz, who is MrTopf on the IRC channel, or drop a note to the developer mailinglist.
Local Configurations and Commenting
Beside Microformats, Christian Scholz also worked on a way to use local configurations in Plone on a per-folder basis and a new commenting system that actually uses local configurations to enable/disable commenting on parts of a site. He had begun working on local configurations at the Snow Sprint, but implemented a new approach based on local Site Managers. The implementation is working, but apparently needs some UI-love since there is no control panel yet.
The commenting system the team worked on is considered to be a prototype and might go through some refactoring. A test-framework is on the way and Christian will post something with more technical details soon, so check out his blog.
So far you can only activate or deactivate things like commenting globally on a Plone site. For many use-cases it would actually make sense to be able to have no commenting on, but to enable it in a certain sub-tree of the site. Local configurations will be able to deliver this by offering a small control panel on each folder where settings can be adjusted.
Xavier Heymans presented the work of the PloneGov team at the sprint and showed how amazingly fast PloneGov is spreading in Belgium and other countries and suggested ways to get funding for PloneGov from local governments. There was not that much development going on at the sprint, but a lot of networking with Plonistas from Italy and Switzerland.
PloneGov was started as a project to congregate the efforts in e-Government of a couple of small towns in Belgium. It grew rapidly and is now in use in over 15 countries. Based, as the name suggests, on Plone, it's purpose is to develop software that fits the needs of governments with the help of and tailored to the needs of the public sector.
If you feel like joining the PloneGov community just go to the about page on the PloneGov project site and look for the nearest member project.
Alec Mitchell and Maurizio Delmonte worked on a Plone-specific package for contentratings called plone.contentratings. It adds through-the-web configuration for setting up rating categories and seems to be very stable -- even though some polishing is still needed for a release. As there is no Product page on plone.org yet for it, see below for the subversion repository if you want to give it a shot.
Many portals feature some kind of ratings system where users can judge how good or bad a given content item is. plone.contentratings offers an easy way to enable ratings for certain content types in Plone. If need ratings can be disabled for single objects, and there are plans to enable/disable ratings on a per-folder basis (possibly using Local Configurations?). Multi-ratings are also supported, which means that one object can be rated according to different rating categories, e.g. to rate a news article's quality and its relevance separately.
- Contentratings page on the sprint's OpenPlans wiki
- Trunk of Subversion repository for plone.contentratings
Singing & Dancing
Daniel Nouri, Thomas Mogense and whole lot of others were working on Singing & Dancing, a new newsletter Product for Plone. The team was quite big and there were lots of discussions about use cases and functionality going on to make sure that Singing & Dancing becomes as versatile as possible. Some work was also done on the administrative interface and many members of the team are still meeting regularly on Skype and on the Google Group.
With Singing & Dancing, you can send an existing Plone page as a newsletter, or automatically have it send out scheduled newsletter with the contents of folders or even collections. It is actually split up into two packages, collective.singing and collective.dancing. Singing is a library that's meant to be generally useful for messaging and notification tasks. Dancing is the installable Plone Product that provides a newsletter implementation based on Singing, ready for use out of the box. There's a bunch of really good doctests in each package and according to the Products page it is easily expandable with plug-ins. For an architectural overview check the interfaces.py file in the singing Product.
If you can think of more use cases for a newsletter Product or want to take part in the development join the Google Group or talk to Daniel Nouri (nouri) or Thomas Mogense (tmog) on the IRC channel.
Jens Klein, Robert Niederreiter and their team were working on Devilstick, which aims some day to be a replacement for Archetypes. They had lots of discussions about the concept and refactored Devilstick a couple of times. At the final presentation they showed a basic but working issue tracker based on Devilstick.
Archetypes has long been the standard way of creating content types for Plone. Unfortunately it is starting to show its age and it has always been quite a huge monster that does lots of magic tricks hardly anyone could fathom and that would sometimes lead to great frustration. Devilstick is aiming to be the slick and sexy alternative based on Zope 3's component architecture. It borrows an analogy from chemistry which, although it caused some controversy, seems to fit quite well. There are molecules, atoms and cages, which are basically a special kind of molecule. Molecules, and thereby cages as well, can contain atoms and more molecules. So think of atoms as single fields, molecules as groups of fields and cages as the topmost root of the whole object. Since molecules can contain molecules themselves you could compare those contained objects to subgroups of a parent molecule. If you need to know more just go to the Devilstick project homepage and check out the documentation. You can also give plone.devilstick.simpletype a shot, it has examples and even a tutorial in the README.txt.
- Devilstick project homepage
- Lenghty discussion on the developer list about Devilstick
- Tracker ticket #7832 for the PSPS08 (Plone Strategic Planning Summit 2008) discussion on the future of Archetypes
- plone.devilstick.simpletype trunk in the Collective
- Christian Scholz' "TopfCast" episode #5 talks about Devilstick as well (starting at 26 minutes into the podcast)
It seems that the primary discussion is going on in the developer mailinglist, but there is also a #devilstick channel on IRC. Spanky (I don't have a clue what his real name is, but he's SpankyFromBRC on IRC) is the "champion" for the "Future of Archetypes", that is he was assigned to the topic at the Plone Strategic Planning Summit 2008. The topic id for the "Future of Archetypes" topic is PSPS08-7832 and you can find more information in the tracker ticket. The two main-masterminds behind Devilstick are Jens Klein (jensens) and Robert Niederreiter (rnix), so if you have questions make sure to bug them on Plone's or Devilstick's IRC channels.
A big fat Thank You, or "mille grazie" rather, to the Sprint organisers and sponsors for giving us such a lovely time in Sorrento! And another big Cheers for the people who checked my flimsy attempt at reproducing what went on in the different groups.
To keep the PloneBuzz newscast from drying out please give feedback about cool new Products, interesting blogs, juicy rumours and heated debates on mailing lists in the comments down below. You can also contact me in the IRC channel, my nickname there is DaftDog. Oh, and I will keep future issues of the PloneBuzz much shorter than this, I promise (there might be the odd special coming up every once in a while though)!