Neither Linux or Python (if 4.0 is non-breaking) are following semver.<p>For Linux, 2.0 was just SMP support. In defense of Linux, there has never been a backwards breaking major version increment, suits are just paranoid about the number going up randomly. They <i>want</i> it to have meaning, even when it does not.<p>For Python, 2.0 was <i>not</i> breaking, but 3.0 <i>was</i>. Now that major version has breaking significance in accordance with semver, business interests <i>will</i> treat it like that and make a big deal out of a 4.0, even if it is not breaking. I know this because I deal with clients paranoid about Linux 4.0 <i>all the time</i>, despite insistence Linux never breaks backwards compatibility.<p>Fundamentally neither project is adhering to semver and <i>are</i> using arbitrary version systems, but if you are going to do that, it would be so much nicer if they would use a two number version - major-patch - rather than having a dead major version that is meaningless. Honestly, in programming languages, Python 3 should have legitimately been a language fork like C++ is to C rather than a version increment (like Obj C is to C) - programming languages are making a bad habit of making breaking changes in a language, and while its understandable that the developers no longer want to maintain the old standard, its deceptive to call the version increment the same language since the semantics change when you make major breaking changes like that.