On Mon, Apr 19, 2010 at 10:38 AM, David Zhou <
da...@nodnod.net> wrote:
> The specific number of point releases to remain compatible with can
> probably be quibbled over, but I think the point is that maintaining
> across the entirety of 1.x releases when point releases take this long
> can be untenable for good forward momentum.
I'm pretty annoyed that you think that the policy is to maintain
backwards compatibility "across the entirety of 1.x releases" because,
well, that's not the policy. This is documented; see
http://docs.djangoproject.com/en/dev/internals/release-process/.
Quoting from there:
"""
Minor release (1.1, 1.2, etc.) [...] will contain new features,
improvements to existing features, and such. A minor release may
deprecate certain features from previous releases. If a feature in
version A.B is deprecated, it will continue to work in version A.B+1.
In version A.B+2, use of the feature will raise a DeprecationWarning
but will continue to work. Version A.B+3 will remove the feature
entirely.
So, for example, if we decided to remove a function that existed in Django 1.0:
Django 1.1 will contain a backwards-compatible replica of the function
which will raise a PendingDeprecationWarning. This warning is silent
by default; you need to explicitly turn on display of these warnings.
Django 1.2 will contain the backwards-compatible replica, but the
warning will be promoted to a full-fledged DeprecationWarning. This
warning is loud by default, and will likely be quite annoying.
Django 1.3 will remove the feature outright.
"""
So, yes, we're really *are* just quibbling over the specific number of
releases that Django will be compatible with. A few people want just
one stable release, but the core committers want two.
So here's where I put on by BDFL hat: Django's backwards-compability
policy will remain as quoted above.
You think I'm wrong, and that's fine, and I don't expect to convince
you otherwise. But ultimately it's my decision to make, and I'm making
it.
But for the record, I will explain why I feel so strongly about this:
The best part of my job is that I get to talk to and meet so many
people who're using Django. These folks span the glove, and they also
span the gamut of software developers. In the last year, I've spoken
to design agencies, data visualization companies, cloud computing
experts, Enterprise IT developers, web 2.0 developers, web 1.0
developers, new media, old media, startups, Fortune 500 CTOs, venture
capitalists, angel investors, bankers, attorneys, financial advisors,
firemen, and more.
The recurring theme -- the thing I hear over, and over, and over again
-- is how much they love Django's stability and predictability. Over
and over again I hear that software maintenance is a pain in the ass,
and that Django makes it easier. If upgrades from 1.1 to 1.2 aren't
easy, these developers tell me, then they won't be able to take
advantage of new features.
My evidence goes beyond anecdotal. Studies have shown that as much as
80% of software work is in maintenance, and, further, that much of
that maintenance work is non-corrective (i.e. adding features).
When software changes dramatically between releases, people get stuck
on old versions, and this means they're unable to develop the features
they need.
So, once again, the policy will not change unless you can demonstrate
overwhelming evidence that I am wrong.
Jacob