[Proj] Time for a new release?
Greg Troxel
gdt at lexort.com
Fri Nov 17 13:15:16 EST 2017
Kristian Evers <kreve at sdfe.dk> writes:
> 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. 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.
When thinking about a deprecation/migration path, please keep packaging
systems and the impacts on depending projects in mind. This was pretty
painful with geos when there were only a small number of other packages
using deprecated/changed APIs.
Right now a very large amount of software uses the current/old/stable
API. The main path to removing that should be:
Publish a release with a new supported API. Include in the release
notes the intent to deprecate/remove the old one.
Expect upstream software to look for the new API and use it, and if
not found, use the old API.
Perhaps have a release with a define that has to be on to use the old
API. But this doesn't really do what you think, because people
maintaining packaging systems will notice the failure to build and
turn on the define.
Find all the projects that use proj and help/prod them into updating
Eventually, decide that projects that have not both changed their code
to use the new API and *had a formal release with the changes* are
unmaintained and that packaging systems *should* drop them.
Make a new proj release without the old API. Understand that
packaging system maintainers are now faced with a choice to hold off
on updating proj or to remove other packages that haven't updated.
An alternate path is:
Construct a new proj release that has a *completely disjoint set* of
installed files, so that it's reasonable to have proj 4 and proj 5
installed.
Do not have any compat in proj 5, and expect programs to migrate to it
over time.
Continue to have security updates, if warranted, for the old package.
I'm not sure what people are thinking, but I tend to hear things like
"people who haven't updated their code can just use the old version".
The problem is that packaging systems have to make choices, and almost
all software gets run via packaging systems. And, as soon as some
programs move to requiring the new API only, it's not possible to run
everything on the same system if the current release of proj drops the
old API.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 162 bytes
Desc: not available
Url : http://lists.maptools.org/pipermail/proj/attachments/20171117/44842d7a/attachment.pgp
More information about the Proj
mailing list