[postgis-devel] Roadmap for next major release of PostGIS

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Wed May 28 03:12:59 PDT 2008


Hi everyone,

After various discussions on the -devel mailing list, we felt that it 
would be worthwhile sending an email to -users to give an idea of where 
we see PostGIS development going in future, and make sure that there are 
no surprises.

Firstly, a bit of background with regard to PostGIS: all of the current 
release support versions of PostgreSQL back to 7.3, but unfortunately 
this comes at a cost. PostGIS tends to hook into PostgreSQL in some very 
low level places where API changes can be quite frequent, resulting in 
large chunks of very nasty looking bits of #if...#endif code.

Unfortunately, this means that there may be multiple execution paths 
through critical code sections, and unless you compile against every 
release of PostgreSQL then it's fairly easy to miss one of the code 
paths and only partially fix a bug. There are also similar problems with 
  GEOS/PROJ.4 in that it is possible to build with one, the other or 
both libraries. Each of these exposes different code paths, and unless 
you compile with every library combination, it's very easy to forget to 
add in the new function definitions and cause errors within lwpostgis.sql.

Another problem with the existing code base as it stands is that the 
build system is horrendously complicated; in order to build PostGIS 
without a source tree, the SVN repository contains large chunks of 
hacked Makefiles imported and modified from the PostgreSQL build system. 
Maintenance of these is an uphill struggle, as it is almost impossible 
to know whether a change will break some of the less-known builds. The 
current build system is also tied heavily into autoconf; it is very 
difficult to use other platforms such as MSVC due to the way the 
existing configuration works.

There are also other factors to consider, outside of the PostGIS arena. 
The most significant of these is to do with support; the PostgreSQL 
development team now only officially support from 7.4 upwards, and 
indeed the Win32 team only officially support from 8.2 upwards. (Note: I 
use officially since other suppliers, e.g. RedHat and other companies 
may offer extended long term support)

At the end of the day, we want to deliver a product that is easy to 
maintain whilst keeping the sanity of the developers and the high level 
of reliability to which we have all become accustomed. So as a result of 
this, the 1.3 series has now been officially branched within SVN, with 
the following development roadmap for trunk:


- Rework the autoconf build system to use autoheader/PGXS
The autoconf system was never being used to its full potential; a new 
build system will be much easier to maintain, and should open the door 
for easier compilation on other platforms, in particular MSVC.

*****
As a consequence of this, support for PostgreSQL < 8.1 will be removed. 
Also, in line with the official PostgreSQL development policy, Win32 
installers for releases before PostgreSQL 8.2 will NOT be produced
*****

- Make PROJ.4/GEOS compulsory dependencies for the build
This will allow us to remove more #if...#endif statements related to 
producing special versions of PROJ.4/GEOS functions in the case where 
different combinations of libraries are present. This will make life 
much easier for developers.

- Removal of legacy code
This will allow us to rip out huge chunks of code, particularly in 
relation to the pre-PostgreSQL 8.0 statistics code (think SELECT 
update_geometry_stats()).

- Rewrite the regression test harness
The regression test harness is currently written as a shell script, 
which makes running regression tests under Win32 only possible under 
MingW. In order to support an MSVC build, it is intended to re-write the 
regression test script in Perl (which is required to build PostgreSQL 
under MSVC).


In terms of support, we hope to be able to maintain the 1.3 branch until 
the end of the 1.3.x series. It may be that some patches/fixes are not 
backpatchable to the 1.3 series, however we will try our best to keep 
both the 1.3 branch and SVN trunk up to date with patches/issues on the 
PostGIS bug tracker.

Apologies for the length of this email, but I hope it gives a good 
indication of where we are planning to go with future developments. I 
don't think there will be too many surprises (see the archives for 
previous posts about dropping support for older PostgreSQL versions), 
but if anyone has any arguments/comments, I would encourage you to reply 
to this thread.

[Note: I have also CC-d to postgis-devel, but please keep any resulting 
discussion on postgis-users]


ATB,

Mark.

-- 
Mark Cave-Ayland
Sirius Corporation - The Open Source Experts
http://www.siriusit.co.uk
T: +44 870 608 0063



More information about the postgis-devel mailing list