Breaking changes and broken brands
You can sell water to a well, but you shouldn't burn hydrogen at one.
Besides setting it to 0.x to indicate commitment issues and low self-esteem, the second-most-popular use of the breaking version digit is to communicate only the really breaking changes.
For example, let’s say you invent concrete 1.0
, a product where people can pour a liquid into a mold, and it will harden like a rock. Very useful for making floors!
But to make a wall with it, people have to build a giant mold to pour it into, and then the whole mold gets thrown away afterwards. What a waste!
But then, a breakthrough! You build a factory full of molds in the shape of large blocks, and pour the liquid yourself. Now people can just stack the solid blocks to the heavens, no molds required!
So what is this, a new feature for concrete? concrete 1.1
? No, of course not. You can’t pour it anymore, this is a breaking change. concrete 2.0.
Numbers are not the only sound
Concrete is a sound, it roughly means “pour this liquid and it will become a rock”. One, two, one point two are also sounds, and they roughly mean that you need to learn that there is more to communicating with other people than counting the number of ideas you personally have had. Other people are not counting your ideas, and they’re not impressed by twos or even by ninety-fives.
Tools are literally your body
If you require your users to change the methods and tools that they use, some of them will keep using the old thing. Eventually, many of them will switch to your new thing, possibly even most. But probably the modal user is going to plan to switch at some point, but actually just abandon the project they were using concrete 1.0 on anyway.
This is true, and it is okay. It is okay for you to abandon the old thing, and it is okay for other people to keep using it. But once you release concrete 2.0
and put your marketing and leadership behind it, you severely damage the ability of your users to maintain and improve concrete 1.0
on their own. You permanently break search and tagging for your 1.x
hold outs, and even your 2.x
users will forever encounter weird non-sensical results at the bottom of their queries, forever.
Your project is probably better than you
Probably your team is bad, and the thing you built is bad also. But maybe the thing you built is good, a lot of people use it, and it matters whether you release a 2.x or launch a new brand. Ask yourself two questions?
how many things have you made?
how many of them are good enough that anybody cares what version it is?
Maybe I’m the only idiot, but I have made a lot of things, and there is only one thing that anybody really uses. And it’s quite strange, a mixture of luck and curse that now it’s my job to solve this one weird annoying class of problems for a zillion people.
Are you a genius? Or a monkey with a typewriter? If I’m in a zoo full of monkeys, I’m a genius. But if I’m connected to the internet after it’s had thirty years to spool up? I’m a monkey with a typewriter and a dowsing rod, and if people care what version my thing is, I have found water and I am not so confident in my dowsing skills that I want to force my whole userbase with me into the wilderness to find the next wet spot.
I publishing breaking changes all the time, because I’m an engineer.
But if I’m asking my users to change the methods and tools that they use? Well then I’m gonna find a new name.
Finding a new name
This is not concrete 1.1. Nor is it concrete 2.0.
It’s a cinderblock. Obviously. If I really want to leverage the success of concrete
, and emphasize the lineage between my old product and the new, I’m in luck because sounds compose! You can combine them! Don't "preserve" your brand, grow it! Prefix it, suffix it, hyphenate it! All of these operations preserve search and tagging. ConcreteBlocks 1.0
, Blok by Concrete
.
If you really want to go the "2" route, do it like this: Concrete2 1.0
. At least that gives people a chance to tag things #concrete
vs #concrete2
. But you really lose a lot of information with the brand_preservation_token
thing (you lose almost as much as 0.x
), and you don't get much (anything?) in return.
And if the difference between #concrete
and #concrete2
requires a significant change in methods and tools, then you are really taking two different things and smashing them into one sound, which will never be the best symbol for either of the underlying artifacts. LeTaylor Jameswift might be the both the basketball player and best popstar in history, but they would not sell as many jerseys or albums as their constituent brands could on their own.