[Proj] Time for a new release?

Even Rouault even.rouault at spatialys.com
Sat Nov 11 14:06:20 EST 2017


On samedi 11 novembre 2017 17:32:05 CET Kristian Evers wrote:
> PROJ v. 5.0.0 is also good with me. It also brings us into "braking changes
> territory". With this in mind I think we should consider only supporting
> the new API in proj.h and dropping the other APIs. This will allow us to
> simplify the code immensely. 

Can you sketch a bit what would be simplified in doing so ?

> At the moment we jump through a bunch of hoops
> to keep backwards compatibility. We'd probably still do that for the next
> release, but not having projects.h and proj_api.h as part of the public API
> we can change things behind the scenes in future releases.

If I remember the analysis of Debian packages, while dropping projects.h would have a 
moderate impact, dropping proj_api.h would cause massive breakage. This would likely cause 
proj 5 to take months to years before being available in distributions due to many packages 
not being ready for it (and the proj_api.h -> proj.h port is the kind of change that needs to be 
done by upstream projects. not a quick&dirty hack that the packager can do)
Thus in this context of software distributions, applications that would be adapted to use the 
new API wouldn't be able to use it in practice for a long time. Worse, applications that would 
do the changes to support proj >= 5 would still to have to support both proj < 5 and proj >= 5 
in a transition period if they want their new releases to be packaged. To make their life easier 
by avoiding to have them to support both API, a proj 5 should be available as packaged as 
fast as possible.

I'm wondering if there wouldn't be a way of having a proj_api.c compatibiliy layer that would 
use the new API  behind the scene ? The projPJ struct could be something different than the 
PJ one, for example just storing the text. And when doing pj_transform() you would build a 
pipeline from the src and dest projPJ. Things like that. I believe the cost of creating this 
compatibility layer (assuming this is possible) would be worth it


Or alternate plan :

- for proj 5.0, add at top of proj_api.h

#ifndef I_AM_M_AWARE_PROJ_API_H_WILL_BE_REMOVED_IN_PROJ_5_1
#error "proj_api.h will be removed in proj 5.1. You can still use it for now by defining 
I_AM_AWARE_PROJ_API_H_WILL_BE_REMOVED_IN_PROJ_5_1, but you should strongly 
consider using proj.h now"
#endif

Perhaps do the same for projects.h, if we really want proj 5 to be a no-brainer for packagers

- for proj 5.1, remove proj_api.h (and projects.h)


Benefits:
* this would make proj 5 easy to be packaged, by avoiding a flag day
* applications would be clearly warned they have to do something, and have time to do the 
changes
* after proj 5.0 release, proj master could benefit from the needed cleanups.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/proj/attachments/20171111/d166e23b/attachment-0001.htm 


More information about the Proj mailing list