TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Progressive Versioning

39 pointsby timblairover 9 years ago

6 comments

jpollockover 9 years ago
Version numbers are for marketing and legal. They are used as a way to bundle sets of features together and give them a name &quot;You need to upgrade to X.Y.Z, $$ plz&quot;, and &quot;If your version is older than X.Y.Z, you are no longer supported, go away or pay us lots of money. K thx bye&quot;. Marketing may place additional rules &quot;Customers on X.Y.Z should be able to upgrade to A.B.C by clicking a button and giving us money.&quot;, but it&#x27;s still owned by marketing (or at least the person wearing that hat).<p>Software engineers should only care about the information required to create a reproducible build. For that, all they need is a single value, be it a number, a hex string, or a name.<p>Resist the temptation to let the marketing team know about the internal build numbers. That way leads to madness. We went from a single version number to a 5 digit dotted number all because people kept putting the internal number into contracts and we had to inject new releases with the same marketing number. DO NOT DO THIS - it leads to madness!<p>Frequently the dotted number will map onto software branches, but don&#x27;t link them directly - again, that limits your flexibility and (if completely artificial) will result in unnecessary code drift when the branches inevitably diverge over 5yr+maintenance contracts.
评论 #10739126 未加载
评论 #10739781 未加载
rubidiumover 9 years ago
Basic idea: Spread out the release of feature functionality over many &quot;patches&quot; (i.e. M.m.patch) rather than releasing all of feature set all at once.<p>This is, to my experience, a pretty common way to do things. But it is a different mentality then &quot;a feature set has to be entirely complete and have full functionality&quot;, which seemed to be the author&#x27;s prior mentality.
评论 #10738443 未加载
评论 #10739115 未加载
dustingetzover 9 years ago
Semver versioning is expensive, it doesn&#x27;t really make sense for unfunded work. &quot;1.0&quot; is fake security, if you want long term support you will need to acknowledge that out of band anyway. It&#x27;s unfortunate that many package managers push projects into semver, because then when some dependency inevitably breaks semver semantics, far away things break - spooky action at a distance. But dependency hell is real too. Versioning is hard.<p>I will be using &quot;0.0.1-alpha.XXX&quot; for projects with immature api, and &quot;0.X.Y-alpha.ZZZ&quot; for projects with mature interface but active development which may break the api, because i think this is compatible with semver package managers, right? I&#x27;m okay with people having to run -alpha in production for my small projects, i&#x27;m giving you the work for free, read the source code or don&#x27;t use it.
mplewisover 9 years ago
Isn&#x27;t this served by doing a pre-release? Tell people they&#x27;re free to use a pre-release, but it&#x27;s not guaranteed to be stable. Once you&#x27;re confident it&#x27;s a reliable version, bump it to stable.<p>esp-link (<a href="https:&#x2F;&#x2F;github.com&#x2F;jeelabs&#x2F;esp-link&#x2F;releases" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jeelabs&#x2F;esp-link&#x2F;releases</a>) does a great job of this. They tell you which features are in latest&#x27;n&#x27;greatest so you can try them if you wish.
评论 #10739647 未加载
perlgeekover 9 years ago
I tend to use YYYY.MM.COUNTER these days (at least for projects that have frequent releases). It makes it pretty obvious how fresh or stale an installed version is, and I don&#x27;t have to argue with anybody about what a feature, a bugfix or a backwards incompatible change is.
restalisover 9 years ago
I remember the Linux kernel going from 3.X.X to 4.X.X - a change in version that didn&#x27;t had that many reasons behind it. What&#x27;s the point of having a distinction between major and minor version? For all I care it would be enough to have two digits: &quot;version.patch&quot;, where if you add a feature - change version number, if you just fix something - change the patch number, that&#x27;s it!
评论 #10739148 未加载