Platform policy question: API compatability in minor releases

Simon Marlow marlowsd at gmail.com
Mon May 11 07:30:37 EDT 2009


I think in the interests of clarity and simplicity we should avoid any 
API changes, even additions, in minor releases.  If this means that 
major releases need to be more frequent than 6 months, then so be it; 
but we really don't want the complexity of two layers of API-changing 
releases.

However, I'd like to argue for sticking with 6-month major releases, or 
at the very least 4 months.  The benefit of the platform is that we get 
a set of compatible and well-tested libraries as a single unit, and the 
closer together the releases are, the harder it becomes to deliver that. 
  The more frequent the feature releases are, the lower the overall 
quality: new code introduces new bugs, there needs to be enough time to 
stabilise.

We've found in GHC that we can just about manage 12-month feature 
releases, and even then we often ship with some nasty bugs.  Partly this 
is due to lack of manpower, but also it's down to the lack of testing 
that pre-releases get - it typically takes us about 6 months to get to a 
nice stable state after a major release.  One disadvantage of the 
platform is that we might even see *less* testing of the early revisions 
in a new GHC release, as people stick to whatever comes with the 
platform, and the platform might be slightly conservative about taking 
new GHC major releases.

In the future I'd like to aim for full ABI compatibility between minor 
releases.  Various people have heard me rant about this before so I 
won't do it again (especially when the plan is still not fully formed); 
suffice to say that I think it should be possible to make it such that 
upgrading to a new minor revision of the platform doesn't break all the 
other packages you have built and installed using Cabal.  Now, while 
technically speaking it's possible to allow API additions and still 
maintain compatible ABIs, I don't think we want to deal with that, at 
least not initially.

For cutting-edge programmers who need more recent APIs, there is always 
Hackage and cabal-install, which work very nicely.

Cheers,
	Simon


More information about the Libraries mailing list