{"id":275,"date":"2014-01-09T10:39:54","date_gmt":"2014-01-09T15:39:54","guid":{"rendered":"http:\/\/blog.mozilla.org\/nfroyd\/?p=275"},"modified":"2014-01-09T10:39:54","modified_gmt":"2014-01-09T15:39:54","slug":"on-old-releases","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/nfroyd\/2014\/01\/09\/on-old-releases\/","title":{"rendered":"on old releases"},"content":{"rendered":"<p>Gregory Szorc recently wrote <a href=\"http:\/\/gregoryszorc.com\/blog\/2014\/01\/08\/why-do-projects-support-old-python-releases\/\">a laundry list of reasons for ditching support for old Python releases<\/a>.\u00a0 I think this list of reasons to upgrade misses the larger point in providing software for other people: You do not get to tell your users what to do.<\/p>\n<p>Maybe those users don&#8217;t have sufficient control over their working environments to install a new version of Python.\u00a0 (Webhosts and university computers are the two examples that spring to mind immediately.\u00a0 Enterprise environments have similar constraints.)\u00a0 Maybe those users rely on certain APIs only available in older versions of Python and don&#8217;t wish to take an indeterminate amount of time to rewrite (retest, recertify, etc. etc.) their software.\u00a0 Maybe those users rely on certain APIs that were changed to operate differently in newer releases and don&#8217;t want to engage in an extensive audit of their codebase to fix those incompatibilities.\u00a0 Maybe those users are using other packages that are incompatible with later Python releases and cannot upgrade.\u00a0 Maybe those users are just rationally lazy and don&#8217;t want to deal with downloading, configuring, and installing a new version of Python, plus dealing with inevitable fallout, when the old version has worked Just Fine for everything else.\u00a0 The list goes on and on.\u00a0 (Of course, these reasons are not applicable to just Python; feel free to substitute your favorite language X or favorite extensible program X or what have you.)<\/p>\n<p>Microsoft is the best example I can think of for backwards compatibility.\u00a0 New Windows releases have gone to significant lengths to make it possible to run applications for older versions of Windows, whatever faults those applications may have.\u00a0 <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/\">Raymond Chen&#8217;s blog<\/a> documents a number of extraordinary things Windows does under the hood to make outright buggy and\/or undocumented-internals-groveling programs that worked under previous versions of Windows <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2008\/01\/29\/7294949.aspx\">still work under newer ones<\/a>.\u00a0 You can, of course, argue that this has taken significant engineering effort that could have been put to use doing &#8220;better&#8221; things.\u00a0 But Microsoft&#8217;s evaluation of &#8220;better&#8221; clearly includes &#8220;how much pain will this inflict on our customers?&#8221;<\/p>\n<p>And that&#8217;s the point: you are trading off some perceived (and make no mistake, it is perceived) benefit to yourself as a developer of software X against the agony of some unknown number of users as your changes break their world.\u00a0 Maybe you&#8217;ve decided that this agony is small enough: I&#8217;ve seen some great examples of this from the DOM\/Content folks as they install Telemetry probes to measure how many users might be impacted by backwards-incompatible changes.\u00a0 Maybe you&#8217;ve decided that you have a small enough community of users and they are all enthusiastic enough to adopt whatever you decided to do, even if it breaks things.\u00a0 (You might be surprised at just how &#8220;small&#8221; your community is, though.)\u00a0 Maybe you&#8217;ve decided that ditching the old stuff really is necessary and appropriate (hi Australis!).\u00a0 Maybe you&#8217;ve decided that you simply don&#8217;t care about the agony of your users, or that the sharp spike in curses uttered against your household don&#8217;t matter.\u00a0 (If you take this last approach, please don&#8217;t write any software that I use.)<\/p>\n<p>I realize that using the new shiny stuff in Python, or C++, or whatever generally makes life nicer as a developer.\u00a0 But I think developers tend (myself included) to systematically underestimate the amount of agony that user-facing changes cause.\u00a0 Even when we know we are prone to doing so.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gregory Szorc recently wrote a laundry list of reasons for ditching support for old Python releases.\u00a0 I think this list of reasons to upgrade misses the larger point in providing software for other people: You do not get to tell your users what to do. Maybe those users don&#8217;t have sufficient control over their working [&hellip;]<\/p>\n","protected":false},"author":320,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/275"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/users\/320"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/275\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/media?parent=275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/categories?post=275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/tags?post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}