Versioning

1. Generic Versioning

1.0.1. Key Aspects of Generic Versioning

  1. Definition: Generic versioning refers to a systematic approach for identifying, tracking, and managing different iterations of a product or system over time.
  2. Version Numbering:
    • Major Versions: Indicate significant changes or overhauls (e.g., 1.0 to 2.0).
    • Minor Versions: Suggest smaller updates or feature enhancements (e.g., 1.1 to 1.2).
    • Patch Versions: Concern minor fixes or improvements (e.g., 1.0.1).
  3. Semantic Versioning (SemVer):
    • A popular convention used in software development.
    • Format: MAJOR.MINOR.PATCH (e.g., 2.5.1).
    • Rules emphasize backward compatibility and ease of understanding for users.
  4. Change Logs:
    • Document changes between versions.
    • Help users understand new features, improvements, or bug fixes.
  5. Benefits:
    • Enhances communication among developers and users.
    • Facilitates software maintenance and dependency management.
    • Reduces confusion regarding product states or features.
  6. Challenges:
    • Complexity may arise in larger projects with multiple dependencies.
    • Maintaining consistent versioning across different product modules can be difficult.

2. File Version Control

2.1. Tools

2.1.1. Git

2.1.2. Mercurial

2.2. Philosophies

2.2.1. Monorepo

  • all code in one repo : monolithic

2.2.2. Multirepo

  • the larger application is split into multiple microservices and no single repository stores all the code.

3. Object Versioning in Distributed Systems

Tags::meta: