Hey Tim, I can definitely relate. It's not fun maintaining security releases (or fixes of any sort) for older versions of the software. Been there (am there now).
We're trying to encourage people to move to Python 2.7 so that we can upgrade, but this is the enterprise. It's not an easy task. (Look how long Microsoft tried to get people off of IE6.) Python 2.6 is still wildly populate in the enterprise. The sad fact is, even once we leave Python 2.6 behind, there's going to be at least a few hundred companies with servers running Django 1.6.x who will not be upgrading for quite some time, no matter what any of us do or say (just as there are still at least a hundred running against Django 1.4). Once security releases stop for 1.6, these companies are going to be vulnerable to any new exploits. I wholeheartedly agree about using virtualenv and staying on top of the latest releases, but we've had little luck in getting administrators to move in that direction. We've been trying to work with a handful recently who insist on running older versions with very custom deployments because "it works and we don't want to risk anything," but at the same time they're quick to pull in any security updates offered by RHEL/us/whoever, as it's a liability otherwise. Especially since, as others have said, they have support contracts in place that they're paying a lot of money for, and will not violate. The advice on virtualenvs and building your own Python is good, and I appreciate it and agree with it, but it just won't make a dent in the number of enterprise Python 2.6/Django 1.6 users out there. So... we're in a tough position now. Hundreds of companies *will* be on Django 1.6 for the next couple of years at least, no matter what advice we give or what any of us choose to do. Since newer versions of Django don't support Python 2.6, it'll be even harder for these companies to upgrade without rebuilding their infrastructure, further ensuring that they'll stick with what they have. I wish I could say that we could fully-fund future Django 1.6 security updates, but our company is young and still trying to stay afloat, so our funds are limited. I'll personally contribute what I can afford to the cause, if I knew what sort of target there was, and how likely this would be to happen. I don't want to leave our users hanging and vulnerable. The only other course of action I can think of is to maintain some sort of unofficial fork of Django 1.6 with backported security updates, but I think that's just going to cause more problems than it solves in far too many areas. Maybe I'm rambling at this point. It's a pretty major issue for us, and we're feeling a bit stuck on what to do about this. Since we use Django as a component in a distributable webapp, instead of in-house in a controlled environment, we seem to hit problems that most people don't have to deal with. Thanks again for your thoughts on this, everyone. Christian On Wednesday, March 11, 2015 at 6:54:51 PM UTC-7, Tim Graham wrote: > > Having managed the last few security releases for Django, I'll say it's > one of my least favorite tasks and I'm quite looking forward to dropping > support for 1.4 (which supports Python 2.5) and 1.6 (Python 2.6). But, if > there's sufficient interest that we could raise funds to support this > effort outside of my normal duties as Django fellow, there's a chance you > could convince me to continue backporting patches and preparing releases > for these versions. I'm not quite sure how the logistics of such an > arrangement would work, but just thought I'd throw the idea out there and > see if anyone is ready to back the effort financially. I'd want the > endorsement of the core team before finalizing anything. > > On Wednesday, March 11, 2015 at 12:49:55 PM UTC-4, Stephen Gallagher wrote: >> >> >> >> On Wednesday, March 11, 2015 at 12:00:25 PM UTC-4, Carl Meyer wrote: >>> >>> It certainly sounds like there's an opportunity here for someone to >>> provide extra-extended security-backport support for certain Django >>> releases (beyond the ~3.5 years we'll typically support an LTS release >>> under current policy), to accommodate these enterprise users on dead (to >>> upstream) Python versions. >>> >>> I remain quite unconvinced that this "someone" should be the Django core >>> team. I think the core team's limited energies are better spent >>> continuing to move Django forward. >>> >> >> >> Sure, I both understand and respect that. The problem is that it moves >> the problem further up the stack and closer to the end-users. >> >> The platform vendor (Red Hat, SUSE, etc.) won't take on the >> responsibility for every package, or likely any package that doesn't >> directly support something they are trying to sell to a customer. Hence why >> the major vendors don't ship a copy for themselves. >> >> The community-supported add-ons are all volunteer efforts, most often by >> amateur packagers who are only in rare occasions equipped to do real >> engineering work to backport patches. These people rely on the upstreams >> continuing to support the packages so they can package the updated >> releases. Sometimes this leads to an upstream killing off support for a >> release and the add-on repository being unable to upgrade. This is bad for >> everyone, because over time this *will* (not may) end up with packages in >> the wild with known vulnerabilities and little-to-no way to address it. >> >> So the responsibility then goes to the framework developers who have more >> engineering knowledge about the subject but generally fewer resources to >> spare. So the answer there is that "someone else" needs to step up and take >> over the security maintenance. Unfortunately, that now brings it up to the >> application developers. >> >> Application developers rarely know the internals of the packages they >> depend on; generally they consume the public API and don't think twice >> about the rest of the implementation. Similar to the framework developers, >> they have limited resources best spent on delivering something their >> customers can use. With a lack of knowledge of the framework, they're not >> generally equipped to do the maintenance themselves. Traditionally, this >> results in a functional equivalent to the worst-case of the add-on >> repository situation above: application developers just bundle a version of >> the framework that worked when they implemented it and *never update it*. >> This inevitably ends with something that appears to work for their users >> but will eventually bit-rot and become a liability. >> >> Lastly, we have the application users. Let's be honest: do we want >> end-users responsible for maintaining the complete stack? They're going to >> do what they always do: find and install one version (no matter how old) >> and just use it until something goes wrong, at which point they have no one >> to call who knows the system and can fix it for them. >> >> >> >> >> When looking at the big picture, the best thing for end-users is for the >> lowest levels of this stack to take control of maintenance for it. In cases >> where the stack is critical infrastructure (like the Python interpreter >> itself), the OS vendor will take it over, even to the degree of maintaining >> it past its upstream end-of-life. Where it's not critical infrastructure, >> the upstream developers are the best-equipped to manage maintenance. >> Further up in the stack than that, you have a very unbalanced scale of >> decreasing knowledge vs increasing need for stability. >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/aa815ee5-b0d0-47b2-bdd6-824c9209f356%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.