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.
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.
The Zope 3 branch PrimaGIS is a thinner layer on top of PCL and ZCO (Zope 3)
that concentrates on providing a user interface.
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.
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!