If you use semantic versioning in your project — and you should — then you fix bugs in patch releases (e.g. going from v2.4.6 to v2.4.7), and add new features in minor releases (e.g. from v2.4.6 to v2.5.0). These are both unambiguously good things to do: downstream projects that use your project can happily and blindly upgrade to your new versions knowing that everything is compatible and nothing will break.
But when you issue a new major release (e.g. from v2.4.6 to v 3.0.0), that’s because you made an incompatible change. Now the maintainers of downsteam packages have to stop and think and read your release notes before they can be confident whether it’s safe to upgrade, or whether (as with all the various React-related libraries’ major versions) they’re going to have to rewrite their code first. Most often, they won’t have the time or energy to do this for all the many dependencies their project has.
About ten or twelve years ago, we used to go to a Baptist church (which, note well, indicates a very different denomination in the UK from what it is in the US). Unlike other churches we’d been members of, it had a rigidly democratic governance structure — something that had both pros and cons. Once a year, there would be a business meeting where members of the congregation would all come and hear proposals from the church leader and vote on them.
I came across an extraordinary short (18 seconds) video, which I will transcribe:
Krishnan Guru-Murthy: The Conservative MP Ben Bradley is in the House of Commons. He voted to Remain, then became a Brexiteer, then voted against the deal, then voted for the Deal, then said he’d struggle to back the deal again, but now says he will back the deal. Ben Bradley, why do you get to change your mind?
Ben Bradley: I haven’t changed my mind.
Starring Gandalf the Grey.
It’s probably best thought of as a sound collage, and one that I find strangely relaxing.
People talk a lot about “Internet monopolies like Google and Facebook”, as though they are the same kind of thing. Even as astute a commentator as Tim Harford (alias “The Undercover Economist”) lumps them together in statements like “Google dominates search; Facebook is the Goliath of social media; Amazon rules online retail”.
But these “Internet monopolies” actually fall into completely different categories.
Google dominates search because it offers the best general-purpose search engine currently on the market.
My colleague Jason Skomorowski and I (and many others) work together for Index Data on the FOLIO library services platform. There is a ton of work to do — fascinating work at that, so that I often find myself working on it in the evenings, not because of deadline panic but just because it’s fun to do.
Often when a request for a new feature comes in — whether it’s user-visible functionality, or more exhaustive test coverage, or better continuous integration support, or improvements to documentation — Jason often asks this key question:
“What should I prioritise that ahead of?”
Back in the early 1990s, when I was working on Sun’s Unix boxes, it was routine for them to be up for multiple years at a time. A reboot was a big event.
Now here we are in 2017, and every single update to the Linux kernel — of which there are several every week — requests a reboot.