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.

ZeroVer: 0-Based Versioning

102 pointsby dmitryminkovskyalmost 2 years ago

14 comments

vbezhenaralmost 2 years ago
People just love LTS and backwards compatibility too much. I&#x27;m one of them. But it slows the industry, when you can&#x27;t do API refactors and have to keep bad decisions forever.<p>I think library authors should be more relentless and break compatibility every few years. We just need some conventions to not do so very often. Like new major version every year, deprecate API on the next major version, remove deprecated API on the following major version. So you have 1 year to rewrite your app if necessary.<p>And supporting old versions for those enterprises who would rather pay than upgrade might be a good source of income.
评论 #36641979 未加载
评论 #36644881 未加载
评论 #36641828 未加载
评论 #36646118 未加载
评论 #36648947 未加载
评论 #36641953 未加载
评论 #36643737 未加载
评论 #36643657 未加载
评论 #36644791 未加载
评论 #36642378 未加载
评论 #36642156 未加载
quickthrower2almost 2 years ago
While this is probably satire, I sort of agree with it!<p>I always thought you just need two numbers, a.b<p>You increment b when you change something in a backwards compatible way.<p>You increment a when you make a breaking change.<p>If you are used to semver, it is like ditching the minor version and calling it a patch.<p>a.b is if course isomorphic to the 0.a.b system mentioned here.<p>The disadvantage is downgrading patch-only in semver may now be breaking change in twover but that is a rare edge case IMO.
评论 #36647505 未加载
评论 #36641849 未加载
gybonalmost 2 years ago
I prefer negative versioning for prerelease software. It&#x27;s like a countdown to when your project will be viable and ready to show to the world.<p>Currently on version -2.-0.-61 of my social media network for dogs. It&#x27;s getting there!
评论 #36644866 未加载
评论 #36645970 未加载
megapatchalmost 2 years ago
Maybe it is time to consider INvers, irrational number versioning, as used in eg TeX <a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;TeX" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;TeX</a><p>In TeX the version approaches Pi, every new version adds a decimal. Elegant, will hold forever!<p>TeX 3.141592653 is 45 years old. Its companion Metafont has version number 2.71828182, you can see where this is going.
评论 #36645508 未加载
lamontcgalmost 2 years ago
Somehow we need a less horrible SemVer or a less horrible social contract around SemVer.
评论 #36642160 未加载
评论 #36642143 未加载
评论 #36641765 未加载
评论 #36644746 未加载
thatxlineralmost 2 years ago
I can’t tell if this is serious or satire. There’s no spec.
评论 #36641620 未加载
评论 #36641763 未加载
评论 #36641597 未加载
评论 #36641600 未加载
评论 #36642494 未加载
schmichaelalmost 2 years ago
The purpose of versioning is to communicate something to your users. (It&#x27;s also necessary to increase over time for package managers to work, but that&#x27;s an easy bar to reach.) SemVer tries to explicitly define exactly what&#x27;s being communicated: API compatibility. I think that&#x27;s great, especially for libraries, but it&#x27;s neither the whole story nor what&#x27;s most meaningful for most projects.<p>The most obvious and nefarious example is that the most severe and painful kinds of backward incompatibilities are superficially permissible under SemVer: behavior changes. To confuse the issue even more these behavior changes might be to fix a bug and restore the original or intended behavior of a feature! There&#x27;s no single best way to communicate that to users through a version number: if libfoo v1.4.3 broke a behavior from 1.4.{0,1,2}, should the fix be in v1.4.4 or v1.5 because technically you&#x27;re creating a backward incompatibility! Does the answer change if the buggy behavior has been around multiple patch releases or multiple minor releases? Does the scale of the behavior difference impact the versioning scheme chosen? Does the approximate number of users impacted impact the versioning scheme chosen? Probably!<p>ZeroVer is, in my opinion, a hacky but fine solution to this: no guarantees! The developers just want to develop and it&#x27;s up to the consumers of the project to figure out what release they want to use. ZeroVer is when a project chooses not to try to communicate very much through version numbers. I think that&#x27;s often better than some strict adherence to SemVer that falls apart under any sort of reasonable scrutiny.<p>I like how browsers have gone: basically give up on the traditional Major Version Number. A Chrome 2 or Firefox 2 that is a radical redesign would probably be an entirely new product with new branding and versions. So just bump the first number a lot to communicate feature releases to users, and bump the other numbers for basically internal build reasons. The minor, patch, and build numbers are free to be used and abused for a lot of complex purposes incredibly complex and popular projects like browsers (and operating systems) have.<p>I think a lot of projects, Nomad included, would probably be best represented by BrowserVer. Nomad is deeply committed to incremental improvements and backward compatibility, so any &quot;Nomad 2.0&quot; efforts are more likely to happen under a new project. Frankly Nomad 1.0 was more about marketing than any sort of meaningful feature or compatibility promise: we wanted to communicate Nomad was stable and reliable. Going from 0.x -&gt; 1.x is an easy way to communicate that even if nothing more significant happened from 0.12 -&gt; 1.0 than had happened from any 0.X -&gt; 0.Y.
评论 #36646336 未加载
avgcorrectionalmost 2 years ago
This is a funny lampooning of SemVer. That’s at least how I choose to interpret it.
jonnycomputeralmost 2 years ago
I&#x27;m actually interested in practical examples of alternatives to Name+SemVer for<p>(1) data analysis oriented code (2) code to run experiments (e.g. psych paradigms)<p>I often find that in such code, forking is rather more common. That is, the code bases become wider rather than deeper. For example, we might run several experiments that have a strong resemblance to each other, but have any number of (experimentally relevant) tweaks. Within each fork, I rename, and restart the semantic versioning.
Tempest1981almost 2 years ago
Discussion in 2021:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28154187">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28154187</a>
malkiaalmost 2 years ago
best versioning is svn&#x2F;p4&#x2F;g4 monotonically increasing changelist&#x2F;revision number
mhitzaalmost 2 years ago
Page should be updated, Terraform nowadays is in the 1.x version timeline.
Culonavirusalmost 2 years ago
Ah yes, an ideal versioning scheme for modern video game projects!
zetalyraealmost 2 years ago
I noticed this the other day while writing a small server in Python. FastAPI is 0.100, fine. But I was surprised to find:<p>- Uvicorn is 0.22<p>- httpx is 0.24<p>- starlette is 0.28<p>And so on and on. More generally, the quality of Python&#x27;s tooling and ecosystem is astonishingly low compared to the investment that every day pours into it.
评论 #36642102 未加载
评论 #36641786 未加载
评论 #36641779 未加载