This is a reasonable change.

I say that as someone who rarely tracks individual Twisted releases. We typically upgrade client-deployed applications every three to five years (at the moment, I’m working on upgrading several projects from 12.1 to 15.4).

For us, being able to easily track back through release notes to understand why specific methods are no longer available is extremely important as our upgrade cycle frequently exceeds the deprecation/removal timeframe. These long update times work for us because our typical Twisted deploy is embedded deep inside an environment and not exposed directly to public hazards. As such, we’re not quite as sensitive to public attack vectors — and our clients typically prefer long-term stable environments. 
—Ray

On Sun, Oct 25, 2015 at 8:48 PM, Amber "Hawkie" Brown <hawkowl@atleastfornow.net> wrote:
Hi everyone,

As many know, one of the things that makes the Twisted project so unique is our conformance to our Compatibility Policy. This policy means that users of Twisted can freely upgrade between versions with all incompatibilities being warned about before causing code to break. However, for a while, one part of the compatibility policy has caused issues - what we do with code that has been deprecated for a long time, and at least the release +  2 & 1 year after.

The existing policy states:

"Removal should happen once the deprecated API becomes an additional maintenance burden. For example, if it makes implementation of a new feature more difficult, if it makes documentation of non-deprecated APIs more confusing, or if its unit tests become an undue burden on the continuous integration system. Removal should not be undertaken just to follow a timeline."

This makes the only reasonable cause for any code being removed from Twisted is if it is a maintenance burden, but does not take into account the effect that keeping large amounts of deprecated code has on new, existing, and future Twisted users. It does specify that it should be removed if it makes documentation of non-deprecated APIs confusing, but by its very existence, it makes what should be "best practice" more confusing -- especially if the deprecated API is "simpler" at first glance, but was deprecated because of vast underlying issues,

Discussions have come to the conclusion that the exact reverse of this policy should be instated:

"Removal of code should occur as soon as the deprecation grace period has ended."

The reason for this is that a leaner Twisted is a better Twisted -- we should strive to not break existing applications, but we have the deprecation policy in place to ensure that breakage is, if all goes to plan, never out of the blue. Less code surface means that Twisted is easier to learn for new users and Twisted-using projects onboarding new people, easier to use for established users with a clear best practice, and easier to maintain because the codebase is not a web of things we deprecated and then never removed. We believe this change benefits everyone.

This is also similar to the deprecation policy of another time-based releasing project, Django (https://docs.djangoproject.com/en/1.8/internals/release-process/#internal-release-deprecation-policy), where releases are every 9 months and code is *always* removed in Release where deprecated + 2, giving them a deprecation grace period of up to 1 and a half years.

If you have any opinions on this change, please let me know, and we'll take it all into account before changing the policy.

Twisted Regards,
Amber "Hawkie" Brown
Twisted Release Manager

_______________________________________________
Twisted-web mailing list
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web




--
Raymond Cote, President
voice: +1.603.924.6079 email: rgacote@AppropriateSolutions.com skype: ray.cote