#23861: IPAddressField removal will break migrations and test suites
-----------------------------+--------------------------------------
Reporter: spookylukey | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------+--------------------------------------
Comment (by spookylukey):
@carljm The thing is that isn't "later" when you remove the migration -
you have to remove it *now* to make any progress. At the point where
people realise the breakage (in this case, when they upgrade to 1.9 and
the migrations stop working), it requires two releases to fix the problem.
This means that I can't do a new release of my package featuring "Django
1.9" support. I have to first tell people "Upgrade to version X-1 of the
library, run migrate, then upgrade to version X". i.e. I have to do a
release just for the migration squashing, and people have to upgrade to
that release as well as the next one.
It is far too optimistic to expect people to migrate away from a field and
to squash their migrations in an earlier release, anticipating the problem
of the field removal, especially when they think they '''have''' already
done that by migrating away from the field. It's also really optimistic to
expect people to read release notes. Only the largest Django libraries
I've used have release notes at all. For most libraries, people expect to
be able to upgrade to the latest version and things will basically work,
after testing and fixing things.
Requiring upgrades to intermediary versions is often problematic,
especially as in this case you actually have to deploy the intermediary
version (in order for the manage.py migrate to get run). Very often you
are going to run into bugs with old versions, which you have to worry
about because you actually have to deploy the code. Requiring upgrades to
intermediary versions '''multiplies''' the amount of work you have to do
to get your dependencies up to date. It's only acceptable for a really
large dependency such as Django itself, where:
* you have an extremely well documented set of release notes,
* that people know about and are expected to read,
* and you also have point releases for the intermediary versions so that
are known 'good' versions you will feel safe deploying.
In short, requiring extra releases just for migrations, and requiring
people to upgrade to all intermediary versions of libraries would be a
really horrible thing for people working in the Django ecosystem, and IMO
the kind of process we should be too embarrassed to document. Certainly it
would introduce a lot of pain into my life, as someone who maintains
several and uses many 3rd party Django libraries.
--
Ticket URL: <https://code.djangoproject.com/ticket/23861#comment:6>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/069.a74f1e5f380ef664de7513f8a8b41df7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.