3. Software Versioning
• ZIP
• MSI
• Installable package / Manifest
• Should be Labeled or Named
– With matching Version number
@ScottCate / ScottCate.com Developer Ignite
4. Software Versioning
• Ability to Recreate Assets
– Let’s you go back in time
– Fix Bugs
– Merge into new version
@ScottCate / ScottCate.com Developer Ignite
5. Software Versioning
• All version should be unique
• Versions should be forward moving
@ScottCate / ScottCate.com Developer Ignite
6. Software Versioning
• Should be Text/String Sortable
– How and why is 21 < 3?
– 03 is less than 21, but if 03 turns into 3
@ScottCate / ScottCate.com Developer Ignite
7. Software Versioning
• Avoid Manual Version Numbering
– Easy to forget
– Human error
– Can’t really be done in sync with SCCM
Labels
– Just isn’t realistic
@ScottCate / ScottCate.com Developer Ignite
8. Software Versioning
• Should be using Automated Build
– And build server should have a labeler
– This is the magic that ties it all together
@ScottCate / ScottCate.com Developer Ignite
9. Software Versioning
• Just a Number?
• Lots of Options
• W.X.Y.Z is general format
• Most agree W is Major Version
– Major Version usually is defined as ….
– Is not Backward COMPAT
– Has Public API Changes
• Source:
http://stackoverflow.com/questions/121795
@ScottCate / ScottCate.com Developer Ignite
10. Software Versioning
• W.X.Y.Z is general format
• Most agree X is Minor Version
– With One of more Feature Enhancements
– No Breaking Changes
– Possible Bug Fix Roll up
• Source:
http://stackoverflow.com/questions/12179
5
@ScottCate / ScottCate.com Developer Ignite
11. Software Versioning
• W.X.Y.Z is general format
• Most agree Y is ….
– Internal Structure Changes
– Bug Fixes
– No Feature or API Changes
– No Functional Impact
• Source:
http://stackoverflow.com/questions/12179
5
@ScottCate / ScottCate.com Developer Ignite
12. Software Versioning
• W.X.Y.Z is general format
• No one agrees on Z
– Popular Build Number
– Used for RC, RTW, RTM, Framework Versions
– Something dreamed up by a team member, that has left, and no
one really knows why, it’s just always been something
– Blank – only use a W.X.Y version number
– In House / Public (Odd / Even)
• Source:
http://stackoverflow.com/questions/121795
@ScottCate / ScottCate.com Developer Ignite
13. Software Versioning
• Just a Number?
• Or an encoded “Something”
• We think the date is useful
– And we use the Build Time
– Merged with the Major / Minor Version
– Easy to Reference
• Forward
• And
• Backwards
• (Never run out of options)
• (Easy to code against)
@ScottCate / ScottCate.com Developer Ignite
14. Software Versioning
• Major Version
– Tied to year
– Tied to Major Milestones
– Tied to Major (New??) feature enhancements
– Possible breaking Changes
– Public API Changes
@ScottCate / ScottCate.com Developer Ignite
15. Software Versioning
• Minor Version
– Tied to bug fid / hot fix
– Tied to major feature enhancements
@ScottCate / ScottCate.com Developer Ignite
16. Software Versioning
• Year / Month / Day
– When was the software Built?
– What Label can the software be found in Source
Control?
• Important!!
– SCCM Should Label your repository with the Version
number
@ScottCate / ScottCate.com Developer Ignite
19. Software Versioning
• Major.Year.[MINOR]WWD.HHMM
• 1.2009.1255
– ISO Day# 1-7 (Monday == 1, Sunday == 7)
– Day 5 (Friday) of Week 25, of 2009
– All builds on same day == 1.2009.1255
@ScottCate / ScottCate.com Developer Ignite