Version Control
Version control, a.k.a. source control is a system that manages changes to files in a project over time. Version control systems (VCS) are either:
-
Centralized Version Control Systems (CVCS) π: a central server keeps track of every change (ex: SVN).
-
Distributed Version Control Systems (DVCS) π : each user can keep track of every change (ex: GIT, Mercurial).
It's quite common in software development, especially GIT.
VCS addresses several challenges that arise when working on software development:
- Tracking Changes π: who made a change? when? why?...
- Collaboration π: handle problems when multiple people work on the same file. Also handle problems when a copy of the project was made to test something, and we need to "merge" it.
- Backup and Recovery π΅: if something goes wrong, such as a file or some code being deleted, we can revert these changes.
- ...
Versioning π
Given the implementation of version control, the importance of proper versioning has significantly increased.
The commonly adopted approach for assigning version names to projects is known as Semantic Versioning.
- ποΈ The format is MAJOR.MINOR.PATCH
- MAJOR: breaking change (of the API)
- MINOR: non-breaking change, backward compatible
- PATCH: internal change
- When : in development
- When : Stable
An alternative is Calendar Versioning.
π» To-do π»
Stuff that I found, but never read/used yet.
- Plastic SCM
- Open Source Guides (π»)
- OpenSSF/CII (π», Best practices)
- OpenSSF Scorecard
- FOSSA (π», "Audit-Grade Open Source Risk Management")
- CodeTriage (π», Look for issues to tackle)
- OpenCollective (π», Raise funds)
- Gitter