A few days ago, I saw a post on Hachyderm asking about the flags --yes, --confirm and --force in CLI
application design. I answered that post with what my brain was able to think at the time, but I thought it was an
interesting topic, so in this post I'm going to try and present my reasoning in a longer form.
I recently came across an article by Anthony Fu in which he talks about the ways Semantic Versioning doesn't
fully work, and why he typically releases software that's kept in the 0.x era of versioning.
Anthony takes issue with the fact that moving major versions feels more impactful when version numbers are lower, so going 2.x to 3.x feels like a bigger deal than going from 126.x to 127.x. He also mentions that, to work around this issue, he keeps most of his packages in 0.x, uses the minor version as if it was major, and then the patch as a minor+patch. This, he says, is because he likes to introduce small breaking changes early instead of grouping them for a later, bigger, major version bump.
The first time I coded in something called a "framework" was a really long time ago in CakePHP, a framework that
apparently still exists to this day and taught me a lot about working within the constraints of a library to achieve
what you want, and about the limitations of such an approach. This was in my teenage years, before I even started
university, so I didn't really last long with it or even with PHP, and soon started to dabble in other languages.
For a while I didn't really do any web programming, and when I started doing that again, it was Node.js that grabbed
my attention.