Platform policy question: API compatability in minor releases
duncan.coutts at worc.ox.ac.uk
Mon May 11 04:40:27 EDT 2009
On Sun, 2009-05-10 at 12:05 +0200, Sven Panne wrote:
> We should definitely allow API additions in minor platform releases. Most
> arguments for this have already been written, but I'd like to point out a few
> * Consistency in numbering: The platform numbering should have the
> semantics as the numbering of its parts, therefore allowing API additions in
> minor releases. If someone is totally unwilling to risk any changes his code,
> he can still use bug fix releases of the platform instead of minor releases,
> where's the problem?
We can make the numbering consistent with whichever policy we choose.
> * IMHO, GNOME is a not a good example, although it is cited here over and
> over again. GNOME is mainly supposed to be used by *end users*, while the
> Haskell platform is supposed to be used by *programmers*.
GNOME releases have two target audiences. One group, as you say, are end
users who just want a working desktop and don't mind too much if there
are extra features so long as existing stuff doesn't break.
However a major plank of the GNOME release is the "GNOME developer
platform" which really is just a set of libraries for making desktop
applications. Many third parties rely on these libraries and the API
guarantees. It is this second aspect that is relevant to us.
> * A crucial point in most open source SW development is the distinction
> between the maintainer of a piece of SW and a packager (nomenclature my vary,
> but you get the point). The Haskell platform is all about packaging, nothing
> else. Trying to force the maintainers to handle bug fix branches just for the
> platform's sake is a no-go IMHO, and something I personally won't do for my
> libraries. Let's keep the maintainer-packager distinction as it is!
Yes, it's about packaging. Packaging people are intermediaries between
maintainers and users and they have to respond to the needs of both. Of
course they cannot force anyone to do anything.
> * Let's assume that the Haskell platform keeps its planned interval of 6
> months for major releases (something I am not totally convinced of until it
> has happened reliably a few times). If we allowed API additions only twice a
> year, this would be ridiculously slow, because the world outside doesn't stand
> still. The OpenGL ARB e.g. released their OpenGL 3.1 spec only 9 months after
> the OpenGL 3.0 spec, and the differences were by no means small. You can't
> compare e.g. the network package with this, because improvements or additions
> in network APIs are virtually non-existent compared to this, we basically
> still use APIs which are a few decades old. Consequently, allowing API
> additions only every 6 months would be more than enough for the network
> package, but it would be far too slow for the OpenGL package.
Sure. But of course there is no problem with making releases on hackage
and users who need OpenGL 3.1 in the few months between major HP
releases could use cabal to get the latest from Hackage. The question is
how often we ask all end users and distributors to update everything?
For an active package the maintainer might like to put out a release
every week and some subset of users will be quite happy to grab that.
But how often do they want to update everything else? I bet it is more
on the order of 4-6 months (and some users will prefer longer and skip
The platform is certainly not about arresting progress and development.
It's about helping end users and developers to manage change by
compressing changes into regular, well defined points -- major releases
-- and in between providing a little consistency and stability.
More information about the Libraries