tag:blogger.com,1999:blog-1267458971896358542.post9074983542090720943..comments2007-12-21T08:22:46.616-08:00Comments on Twisted Matrix Laboratories: The future of Twisted releasesChristopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-1267458971896358542.post-18556159305923145002007-12-21T08:22:00.000-08:002007-12-21T08:22:00.000-08:00Uh, I failed at grammar in the last post. Assume I...Uh, I failed at grammar in the last post. Assume I said "strict" instead of "non-strict".Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-88260985883429494852007-12-20T17:02:00.000-08:002007-12-20T17:02:00.000-08:00Again, I think that it wouldn't be so bad if you h...Again, I think that it wouldn't be so bad if you had a non-strict deprecation policy. If you did, you would have done a release that supports the existing API while printing a deprecation warning (or otherwise informing the user that he needs to update his code), so that wichert would have quite some time to update his code.<BR/><BR/>I do think I see the fundamental difference, though. If you do the major.minor thing, you can have users pretty much assume that no matter how long you keep putting out releases in the "3.0" series, they will keep compatible with all of your code, and if they ever break any APIs it'll be when they switch to 4.0. The annoying thing about that from the *developer's* perspective is that they need to have a single cycle for deprecations, and not allow any API breakages until the major version number bump, even if many years have passed. I also get the feeling that most projects that do the major.minor thing are pretty lax with their guarantee that no APIs will break during the major series. To name an example, Python.Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-4256215597522949922007-12-20T11:45:00.000-08:002007-12-20T11:45:00.000-08:00What I should do here is tell an actual real-life ...What I should do here is tell an actual real-life story.<BR/><BR/>Plone, or some component thereof, depends on a library I maintain, python-openid. Through the magic of <strike>prismatology</strike> setuptools, plone (or plone.openid or plone.app.openid or somesuch) installs pull the python-openid record from pypi, download a package, and install it.<BR/><BR/>This means that if I upload a new release to pypi that breaks the API used by plone, I get some very unhappy mail from wichert, because he will have had to deal with a bunch of "oh the plone installer is broken" bug reports.<BR/><BR/>Fortunately, wichert is able to specify the dependency such that it only gets 2.0.x versions of python-openid, so I was able to upload a 2.1.0 (which removes a deprecated bit of functionality) without wichert killing me.keturnhttp://www.blogger.com/profile/09316866241345030289noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-162361751444901862007-12-20T10:02:00.000-08:002007-12-20T10:02:00.000-08:00I think if you're tracking LTS, you will *definite...I think if you're tracking LTS, you will *definitely* have to care about API changes in Twisted when you upgrade.<BR/><BR/>Now I'm imagining a web application which lets you select two releases and get a list of all API incompatibilities in between those releases and thorough descriptions of what users should do about them.Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-51413171649693315602007-12-20T09:58:00.000-08:002007-12-20T09:58:00.000-08:00Yeah, but, if your deprecation period is anything ...Yeah, but, if your deprecation period is anything less than, say, the support lifetime of an Ubuntu LTS release, I'm still going to have the same question, aren't I?<BR/><BR/>I'm trying to decide if it's a valid assumption that all developers are tracking every release of your package. Maybe. Maybe not.keturnhttp://www.blogger.com/profile/09316866241345030289noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-1967984426733318462007-12-20T09:19:00.000-08:002007-12-20T09:19:00.000-08:00not have to wonder "oh, the major version number i...<I>not have to wonder "oh, the major version number incremented, did they change all the APIs or did they just do a few bugfixes and New Year's happened?"</I><BR/><BR/>That is the thing, though. We won't change major APIs without a strict time-based deprecation period, period. There is no need for the "major API change vs minor API change" == "major version vs minor version". In fact, the only reason we don't release with something like "Twisted 2008-05-24" is that it would terrify users. Oh, and it's hard to remember and type.Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-22375219778956707852007-12-20T09:13:00.000-08:002007-12-20T09:13:00.000-08:00I do like Ubuntu's date-based version scheme. But...I do like Ubuntu's date-based version scheme. But I think part of the reason it works for them is because Ubuntu is a ginormous aggregate of things. Twisted is a component. Well, yes, it's actually an aggregate of lots of components, which makes this argument clumsy, but as a developer, a Twisted package is a dependency.<BR/><BR/>So from that perspective, it would be nice to be able to look at two version numbers and not have to wonder "oh, the major version number incremented, did they change all the APIs or did they just do a few bugfixes and New Year's happened?"<BR/><BR/>Rubygems has written a bit on something they refer to as a <A HREF="http://rubygems.org/read/chapter/7" REL="nofollow">Rational Version Policy</A>, and it lets you write dependencies like ">= 2.3, < 3.0", which is a nice feature, I think.keturnhttp://www.blogger.com/profile/09316866241345030289noreply@blogger.comtag:blogger.com,1999:blog-1267458971896358542.post-67306281794479802112007-12-19T20:12:00.000-08:002007-12-19T20:12:00.000-08:00"inspired"?Thanks so much for posting this, by the..."inspired"?<BR/><BR/>Thanks so much for posting this, by the way. I think the community benefits from deliberate communication.jmlhttp://www.blogger.com/profile/11400080716012026985noreply@blogger.com