Skip to content
Cong edited this page May 16, 2013 · 4 revisions

C-Dogs SDL uses four numbers separated by periods, with trailing zeros omitted. Conform to Semantic Versioning where possible.

<zero>.<major>.<minor>.<patch>

Zero

Not sure when this will ever change to 1. An alternative is to drop the zero and shift all numbers up.

Major

  • Backwards-incompatible features
  • Major changes in gameplay

Minor

  • Backwards-compatible features
  • Minor changes in gameplay
  • Changes in non-gameplay aspects

Patch

  • Backwards-compatible bug fixes
  • Changes in non-gameplay aspects that are rarely used, or affect small portion of users

Issues

There's a lot of gray area in what constitutes a major/minor/patch, plus other issues not covered. Here's a list:

  • Don't skip numbers
  • Numbers don't flow over or have an upper limit; e.g. 0.11.93 is perfectly valid, and is before 0.12 and after 0.2
  • Don't "version match" some other product
  • For ports, if there are zero changes to the existing packages, no new version is necessary. In practice this is very rare; ports usually entail at least trivial changes to common code, so the patch number should be incremented.
  • The significance of features should be judged from the perspective of users, not developers.
  • What about major, backwards-incompatible changes to non-gameplay features? E.g. breaking the config, breaking file formats, completely new menu system. Technically these warrant a major version increment, but these changes should be avoided, and made backwards-compatible where possible. Try to avoid unless absolutely necessary.
  • Only increment one number per release. E.g. do not go from 0.5 to 0.6.1.