One of the main things we need to understand as a developer to build softwares as well as to use other’s software/plugins and library is versioning convention.
Suppose you have a ‘shiva-emailer’ gem that holds a
Shiva::Emailer class with send and parse functionality. Your
CHANGELOG might look like this if you use semantic versioning:
- Version 0.0.1: The initial
Feature of just sending email to sendgrid is done/released.
- Version 0.0.2: Other options can now be passed during API calls
- Version 0.1.0: Parsing the response in any format is added.
- Version 1.0.0: Support to other Email Service Providers added
- Version 1.1.0: WebAPI as well as XSMTP API supported.
- Version 1.1.1: Fixed a bug in the SendGrid module.
Semantic versioning boils down to:
0.0.xlevel changes for implementation level detail changes, such as small bug fixes
0.x.0level changes for any backwards compatible API changes, such as new functionality/features
x.0.0level changes for backwards incompatible API changes, such as changes that will break existing users code if they update