In the past 3 years I have released several software packages and a few of them exceeded the 1.0.0 release. I am not confident with it. I need structure. I need a plan for 1.0.0 releases.
So what is the background? In software engineering the 1.0.0 release is a famous one. The release 1.0.0 is considered as the first public release where people can depend on the API/ABI.
Consider a car. With the public release a car seat customizer will look at the measurements and publish his customized seats for this type of car. The car company should not publish the same car with different seat measurements a month later. This would destroy the business for the customizer and annoy costumers. This is about standardization.
The same applies to software engineering. With the 1.0.0 release you are expected not to change the components in such a way that depending software breaks. Like the car seat measurements. If you stick to semantic versioning as defined by semver.org, you are actually allowed to make “incompatible API changes” if you release by incrementing the first of three numbers. Like python was backwards incompatible when going from the 2.x to 3.x release. But semantic versioning is not yet common enough in the industry. So I stick to the paradigm that the 1.0.0 release should be well-considered.
And this is my personal check list for 1.0.0 releases in the future:
- I will define a target audience and consider the social impact.
- I have a documentation for the public API accessible in the web.
- I have a working testsuite.
- I have written several programs using the API and concluded that the API is convienient to use with the languages’ builtin.
- I will check my API against best practices in the software paradigm I am using.
- I have money & time to provide hotfixes 24 hours after release at the latest.
- I will specify
- metadata such as: contributors, license, version, date, contact options, associated URLs
- dependencies and system requirements
- simple installation instructions for the most common usecase
- performance estimates
- target audience, pitfalls & limitations
- a changelog (at least for major and minor releases)
Iff all these requirements are met, go ahead and release it as 1.0.0, but not otherwise.