SlideShare a Scribd company logo
SOFTWARE VERSIONING
A Time Travel Problem
in Software Engineering
Disclaimers
- Some things may be opinionated and
even controversial
- They may even turn up to be wrong over
time
- I let them in to draw opinions and start
conversations
Goals of Versioning
• State identification
• Qualifying and quantifying change
• Marketing
• Guidance for deployments
Branches and Versions,
TBD
?
1 2
Release
(Optional)
Main
Feature
Maintenance
(Optional)
If you thought that was bad
…here is GitFlow
SCHEMAS
• Single Component (1, 2, 3 …)
• SemVer (1.2.3)
• CalVer (20.04.1)
• Exotic Schemas (such as Kalvin, eh)
SNAPSHOT-ing
Release on every commit or Maven’s
1.0.2-SNAPSHOT?
Merge Conflicts
• Feature Branches (short-lived in TBD)
• Release Branches
• Pull requests everywhere?
Microservices and Versions
Tags and Digests
• postgres, postgres: 12, postgres:12.5
• postgres:12.5@sha256:d233caaf92c611
4ccc1f903c578308e710a73a5fd36c15fe
0999c24a17e32ed1
• postgres@sha256:d233caaf92c6114ccc
1f903c578308e710a73a5fd36c15fe0999
c24a17e32ed1
Inspect postgres:12.5
Bundles and Dependencies
• Same Problem
• But with Many Dimensions
• We are now travelling across “Inception”-
style worlds
Combinatorial Explosion
c1_v1 c1_v2
c2_v1
c2_v2
c3_v1
c3_v2
Count Triangles!
3 Microservices with 2 versions give 2^3 = 8 possible worlds for our product
Ways to Solve Address
• Pruning Search Space
• Adding More Automation
• Versioning on Meta level (i.e., API)
• Getting “Greedy” (i.e. always latest – I
prefer less of that)
What we Want
• Deploy by Digest
• But know exact version deployed
• And know whether it is safe to roll
forward or roll back and to what
• And for bundled context
You Are
Not Alone
No One is
There Yet!
What I do (opinionated)
• TBD, not GitFlow
• Auto-increments via Conventional Commits on
every push
• Separate versioning schema for feature
branches
• Keep release branches on separate minors
• Treat bundles atomically – linearize
• Keep distance of supported versions short
About me, Pavel Shukhman
• MCS from UIUC
• CKA and CKAD certified
• Working with Infrastructure, DevOps,
DataOps for more than 10 years
• Co-Founder and CEO of Reliza
• Twitter: @taleodor
• LinkedIn: pshukhman
Tool Reference
• GitVersion - https://gitversion.net
• Semantic Release - https://github.com/semantic-
release/semantic-release
• Release-it - https://github.com/release-it/release-
it
• Reliza Versioning -
https://github.com/relizaio/versioning and Reliza
Hub – https://relizahub.com
Thank You!

More Related Content

PPTX
Build software like a bag of marbles, not a castle of LEGO®
PDF
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
ODP
Jenkins CI in Action
PPT
Git workflows
PDF
BDT Workflow
PDF
Common blind spots on the journey to production vijay raghavan aravamudhan
PDF
Trying Out Tomorrow’s WordPress Today
PPTX
[Romanian] Git Branching Strategies
Build software like a bag of marbles, not a castle of LEGO®
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Jenkins CI in Action
Git workflows
BDT Workflow
Common blind spots on the journey to production vijay raghavan aravamudhan
Trying Out Tomorrow’s WordPress Today
[Romanian] Git Branching Strategies

What's hot (20)

PDF
Trunk based development
PPTX
Ext JS Upgrade Adviser EA Launch
PPTX
A successful Git branching model
PPTX
Git and GitFlow branching model
PDF
Building Big Architectures XP Conference 2016
PDF
Mozilla: Mozmill meets L10n
PDF
Riak at Posterous
PDF
Embracing Git and Distributed Teams
PPTX
Hidden Treasure - TestComplete Script Extensions
PDF
SGCE 2015 REST APIs
PDF
Apereo OAE development and release process
PDF
Continuous Integration with Mozmill
PPTX
Selenoid i Allure - jak używać tych narzędzi razem
PPT
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
KEY
Ruby Midwest 2010 jRuby by Charles Nutter
PPTX
SD PHP Zend Framework
PPTX
.Net Standard 2.0
PDF
Source Control for the Oracle Database
PPTX
HelloGit
PDF
A Git Workflow Model or Branching Strategy
Trunk based development
Ext JS Upgrade Adviser EA Launch
A successful Git branching model
Git and GitFlow branching model
Building Big Architectures XP Conference 2016
Mozilla: Mozmill meets L10n
Riak at Posterous
Embracing Git and Distributed Teams
Hidden Treasure - TestComplete Script Extensions
SGCE 2015 REST APIs
Apereo OAE development and release process
Continuous Integration with Mozmill
Selenoid i Allure - jak używać tych narzędzi razem
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
Ruby Midwest 2010 jRuby by Charles Nutter
SD PHP Zend Framework
.Net Standard 2.0
Source Control for the Oracle Database
HelloGit
A Git Workflow Model or Branching Strategy
Ad

Similar to Software Versioining: A Time Travel Problem in Software Engineering (20)

PDF
SQL Server DevOps Jumpstart
PDF
Be a Happier Developer with Git / Productive Team #gettinggitright
PPTX
Git.From thorns to the stars
PDF
Migrating from Subversion to Git and GitHub
PPTX
Semantic versioning implementation variations
KEY
40 square's git workflow
PPTX
Ultimate Git Workflow - Seoul 2015
PDF
Productive parallel teamwork: Decentralized Version Control Systems
PDF
Git intermediate workshop slides v1.4
PPTX
Learn Git - For Beginners and Intermediate levels
PDF
LF_APIStrat17_REST API Microversions
PDF
Git Intermediate Workshop slides v1.3
PPTX
Que nos espera a los ALM Dudes para el 2013?
PDF
Getting Git Right
PDF
Git Branching for Agile Teams
PPTX
YET ANOTHER INTRODCTION AND AN EXAMPLE HOW NOT TO USE BAD PRESENTATION STYLES
PDF
Git & Code review
PPTX
Managing and Versioning Machine Learning Models in Python
PDF
Version Uncontrolled! How to Manage Your Version Control
SQL Server DevOps Jumpstart
Be a Happier Developer with Git / Productive Team #gettinggitright
Git.From thorns to the stars
Migrating from Subversion to Git and GitHub
Semantic versioning implementation variations
40 square's git workflow
Ultimate Git Workflow - Seoul 2015
Productive parallel teamwork: Decentralized Version Control Systems
Git intermediate workshop slides v1.4
Learn Git - For Beginners and Intermediate levels
LF_APIStrat17_REST API Microversions
Git Intermediate Workshop slides v1.3
Que nos espera a los ALM Dudes para el 2013?
Getting Git Right
Git Branching for Agile Teams
YET ANOTHER INTRODCTION AND AN EXAMPLE HOW NOT TO USE BAD PRESENTATION STYLES
Git & Code review
Managing and Versioning Machine Learning Models in Python
Version Uncontrolled! How to Manage Your Version Control
Ad

Recently uploaded (20)

PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
AI in Product Development-omnex systems
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
System and Network Administraation Chapter 3
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Nekopoi APK 2025 free lastest update
PDF
Digital Strategies for Manufacturing Companies
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Design an Analysis of Algorithms II-SECS-1021-03
AI in Product Development-omnex systems
Upgrade and Innovation Strategies for SAP ERP Customers
System and Network Administraation Chapter 3
2025 Textile ERP Trends: SAP, Odoo & Oracle
Odoo Companies in India – Driving Business Transformation.pdf
Nekopoi APK 2025 free lastest update
Digital Strategies for Manufacturing Companies
Odoo POS Development Services by CandidRoot Solutions
CHAPTER 2 - PM Management and IT Context
Design an Analysis of Algorithms I-SECS-1021-03
How to Choose the Right IT Partner for Your Business in Malaysia
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Which alternative to Crystal Reports is best for small or large businesses.pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
How Creative Agencies Leverage Project Management Software.pdf
Navsoft: AI-Powered Business Solutions & Custom Software Development

Software Versioining: A Time Travel Problem in Software Engineering

  • 1. SOFTWARE VERSIONING A Time Travel Problem in Software Engineering
  • 2. Disclaimers - Some things may be opinionated and even controversial - They may even turn up to be wrong over time - I let them in to draw opinions and start conversations
  • 3. Goals of Versioning • State identification • Qualifying and quantifying change • Marketing • Guidance for deployments
  • 4. Branches and Versions, TBD ? 1 2 Release (Optional) Main Feature Maintenance (Optional)
  • 5. If you thought that was bad …here is GitFlow
  • 6. SCHEMAS • Single Component (1, 2, 3 …) • SemVer (1.2.3) • CalVer (20.04.1) • Exotic Schemas (such as Kalvin, eh)
  • 7. SNAPSHOT-ing Release on every commit or Maven’s 1.0.2-SNAPSHOT?
  • 8. Merge Conflicts • Feature Branches (short-lived in TBD) • Release Branches • Pull requests everywhere?
  • 10. Tags and Digests • postgres, postgres: 12, postgres:12.5 • postgres:12.5@sha256:d233caaf92c611 4ccc1f903c578308e710a73a5fd36c15fe 0999c24a17e32ed1 • postgres@sha256:d233caaf92c6114ccc 1f903c578308e710a73a5fd36c15fe0999 c24a17e32ed1
  • 12. Bundles and Dependencies • Same Problem • But with Many Dimensions • We are now travelling across “Inception”- style worlds
  • 13. Combinatorial Explosion c1_v1 c1_v2 c2_v1 c2_v2 c3_v1 c3_v2 Count Triangles! 3 Microservices with 2 versions give 2^3 = 8 possible worlds for our product
  • 14. Ways to Solve Address • Pruning Search Space • Adding More Automation • Versioning on Meta level (i.e., API) • Getting “Greedy” (i.e. always latest – I prefer less of that)
  • 15. What we Want • Deploy by Digest • But know exact version deployed • And know whether it is safe to roll forward or roll back and to what • And for bundled context
  • 16. You Are Not Alone No One is There Yet!
  • 17. What I do (opinionated) • TBD, not GitFlow • Auto-increments via Conventional Commits on every push • Separate versioning schema for feature branches • Keep release branches on separate minors • Treat bundles atomically – linearize • Keep distance of supported versions short
  • 18. About me, Pavel Shukhman • MCS from UIUC • CKA and CKAD certified • Working with Infrastructure, DevOps, DataOps for more than 10 years • Co-Founder and CEO of Reliza • Twitter: @taleodor • LinkedIn: pshukhman
  • 19. Tool Reference • GitVersion - https://gitversion.net • Semantic Release - https://github.com/semantic- release/semantic-release • Release-it - https://github.com/release-it/release- it • Reliza Versioning - https://github.com/relizaio/versioning and Reliza Hub – https://relizahub.com

Editor's Notes

  • #4: What versioning schema(s) do you use and why?
  • #7: What versioning schema(s) do you use and why?
  • #8: Do you release on every commit or not and why?
  • #9: Have you encountered merge conflicts – what solutions did you use?
  • #14: Did you encounter this problem? What did you do to solve it?