PrimaGIS/Zope3 Sprint Wrap Up

2006-03-14T01:41:12Z | Comments: 0

I got back to Fort Collins at 1:30 a.m. today and have tried to come up with a brief summary of the PrimaGIS and Zope 3 code sprint hosted by OpenApp last week. We did not provide much commentary during the event. You really had to be there, as the expression goes. Our colleagues on the #zco channel on IRC or subscribers to the project commits list saw only a flood of commit messages.

What is a code sprint, anyway? It is a very intensive coding session with multiple developers working at a rate that is not sustainable for long. Hence the word sprint. It works well for Python programming, and has become a part of the culture. We went at it for 3 solid days. Kai and Michael probably could have gone longer, but I was pretty cooked at the end.

This was a smaller one than the Zope 3 sprint Michael had been in last year, and fairly easy to coordinate. We started out with a whiteboard full of goals and issues, and it flowed from there. We would work together for a bit, then split up across a bunch of tasks, repeating in a cycle. With more developers we definitely would have needed a coach or two to keep us synchronized and prevent bottlenecks, something to keep in mind for the next time. I brought my iBook to the sprint, which has been more of a business than development computer for me of late, and suffered a bit. It was a bit like running multiple 400s in dress shoes.

All our work was done in 3 branches of the PCL, ZCO, and PrimaGIS repositories. The current state of the code is shown below.

PCL:

--- trunk -------------------------------- 0.11 -->
            \                          /
             \----- featuretypes -----/

ZCO:

--- trunk -------------------------------- 0.8 --->
            \
             \----- Zope 3 branch ---------------->

PrimaGIS:

--- trunk -------------------------------- 0.6 --->
            \
             \----- Zope 3 branch ---------------->

Both ZCO and PrimaGIS have branches that are now aimed at Zope 3 (and 2.9) while the trunks remain compatible with Zope 2.7 and Plone 2.1.

Zope 3

In a ZCO application, up to now, we have many objects in the ZODB that point to external information in the filesystem, serve as proxies for PCL objects, and have no other responsibilities. The map renderer, which is little more than a point at which to configure fonts and temporary download locations, is one example. Another is the datastore, which is basically a point at which to configure a filesystem data path or a PostgreSQL connection string.

For Zope 3, the map renderer and data store objects will be replaced by site utilities, and will be configured in the filesystem, not through the ZMI. This makes perfect sense all around because both need to access data on the filesystem that is only going to be accessible to a privileged user anyhow. Layers will remain configurable through the web. Symbolizers will be configurable either using ZCML in the filesystem, or through the web. We don't need proxies for Zope 3 because we can use PCL classes directly through adaptation. This has allowed us to dramatically clean up ZCO in the new Zope 3 branch.

The Zope 3 branch will also have new utilities: one providing coordinate transformation services, and one to help applications get information about the features displayed in a map. Work remains to be done to make these available to Zope 2.9 through Five. The adventurous developer can actually begin to use the new ZCO branch with Zope 3.2 now.

PrimaGIS

The Zope 3 branch PrimaGIS is a thinner layer on top of PCL and ZCO (Zope 3) that concentrates on providing a user interface.

PCL

The most important thing for the Python Cartographic Library is that we've increased its bus number to 2 or more. Kai and Michael have seen it inside and out, and Con has been through parts of it with painstaking detail. We are all more familiar with its design and its limitations, particularly those related to MapServer.

PCL 0.11 will require the zope.interface package, and uses interfaces internally, but won't otherwise push interfaces and adaptation on developers. This means that developers will be able to substitute their own implementations of any part of PCL into the whole without problems.

Other

That's all great stuff, but getting to meet Kai, Con, and Michael is priceless.

I have been emailing and chatting with Kai for more than a year, and we have come to know each other fairly well, but there is really no substitute for meeting face to face. I think we spent almost 24 hours sitting side-by-side coding, and thanks to his patience and sense of humor, it was all a great time. I also learned a lot about life in Finland during the walks between the hotel and the OpenApp offices.

I am going to have the pleasure of working with Con and Michael for much of the Spring putting the new Zope 3 branch of ZCO to work for the Irish Health Service Executive. These guys are all better programmers than I, and a seemingly endless source of good ideas. The PCL and PrimaGIS projects are really fortunate to have their participation.

Most of all, cheers to Mel McIntyre and OpenApp for making this event possible!

Categories: Community The Lab

del.icio.us

Comments

Comments are closed after 13 days.