(Yes, "a rant," but an informed one ...)
One of the things that I do for fun is to build and run a few web sites for a few clubs. Generally, once the site is running I just leave it alone. But sometimes I do have to update and service them – for example, when the hosting company makes a major change to the environment.
I use the "Django" (Python) web framework for these, largely because it has a rich and plentiful library of components that you can simply stitch together. But there is a wee problem:
deprecation.
"Change for the sake of change,"
and you
remove what used to work. A simple example is that, in Django, the way that you "obtain the
tzinfo of the place where the server is now running" has changed
three times, one of them quite recently. And some of the packages which I use did not. The key problem is that the Django people
didn't simply "leave in" the old way of doing things. Maybe they thought that "the new way" smelled or tasted better, but it actually wasn't any
different. It was just different. Different in a way that
breaks my code – and the code of other people upon whom I rely, some of whom aren't maintaining that code anymore or who haven't yet caught up.
Another very frightening event was when I was "updating the system requirements" and found that one package had been
removed from the repository altogether. Yes, I found another copy of it elsewhere. But I really don't believe that the repository owners were "running out of disk space" or something. If you published it,
leave it there. Somebody might still need it. Somebody like me.
Another "rant" has to do with the
PHP language itself. I and my teams spent about a year(!) moving a set of websites from PHP-5 to PHP-7. There were two big "breaking changes." One was that the entire SQL interface – which is "built in" to that language – was replaced. And the old one was "deprecated," which is to say, "removed." They used an entirely new set of function-names, and the new design
was much better, but they could not drive themselves to
leave the old one in so that I could migrate in a more-orderly way.
But a much
sillier change had to do with the functions which PHP uses to match regular expressions. They took out the old ones completely,
and replaced them with two new ones which did the same thing
except(!) that the order of the parameters – arbitrary to begin with – was
reversed. (I solved
that problem by putting the old functions back, but it was still a change that affected
hundreds of application modules.)
The complication which really set the coffin-nail was that Linux distributions stopped
furnishing PHP-5. And, they never contemplated any "clean" system by which PHP-5 and PHP-7 could exist
alongside one another. So, when you "upgraded" their Linux from one major-release to the next ...
"everything(!) broke."
Why don't the developers of important components – and, languages – recognize the value of
"let a sleeping dog lie?" If you once wrote it one way, you really can afford to
"leave the old way in place" as you create another way that smells or tastes better to you. The longer your successful system is out there, the more is the impact of your "changing 'tastes.'" To an awful lot of people whom you will never know. You are requiring people to
spend money(!) simply to stay right where they are.
Likewise, "distro" designers.
Think about the present as you plan for the future. People generally do want to follow new distro releases in order to get very important things like security and kernel changes. But they literally cannot
afford it if "everything breaks." My client paid several hundred thousand dollars(!!) to me and my teams in order to ... stay where they were. While I certainly appreciated the money,
why did they have to spend it, let alone "spend it in a hurry?" Well, it was all because of:
deprecate.