Distro versioning.
Posted: Sun Sep 17, 2017 11:55 pm
I would like to add version numbering to the Distro. It would take the form of a major version number and a minor version number. I am thinking something like MMM.mm where "M" is the major part and "m" is the minor part, 0.99.01 for example.
I have a few questions though.
What constitutes a minor version release and conversely, a major version release?
Here are my thoughts:
Minor version releases would encompass at least these items:
Bug fixes
The addition of new INC or SRC (possibly new commands). Files that do not affect the current operation of the Distro, ie. no need for users to modify any existing packages they may have added to work with the new files.
The addition of a function added to an INC file, for example the addition of ThisIsMe's functions to the math.inc file that return dice strings when passed min and max values.
Maybe minor tweaks to cfg files as well. Again as long as they don't require mods to packages someone may have added. Although the cfg tweaks might be hard to determine whether mods are necessary or not depending on the cfg file. I'll have to think about cfg tweaks...
What constitutes a major release?
My thoughts: a new package added. Especially if it's a large package or it adds some major feature such as a new spell system.
Anything that might require changes to optional packages a user has installed. Such as the necromancy package that has it's hooks in a couple of areas already.
Major package rewrites or reorganizations. An example comes to mind that I am working on right now, attributes. I am moving all attribute related files to an attributes package. They were all over the place before.
Is there any way to automate a versioning system?
I would assume not if we are going to use somewhat subjective criteria such as I listed above.
Or should we just do minor version bumps with each commit unless the person making the commit feels that it is worth a major version bump?
This, I assume, would be much easier to automate if a version system can be automated.
I would like to hear your thoughts. Especially from developers who have had to work in an environment were versioning was used.
I have a few questions though.
What constitutes a minor version release and conversely, a major version release?
Here are my thoughts:
Minor version releases would encompass at least these items:
Bug fixes
The addition of new INC or SRC (possibly new commands). Files that do not affect the current operation of the Distro, ie. no need for users to modify any existing packages they may have added to work with the new files.
The addition of a function added to an INC file, for example the addition of ThisIsMe's functions to the math.inc file that return dice strings when passed min and max values.
Maybe minor tweaks to cfg files as well. Again as long as they don't require mods to packages someone may have added. Although the cfg tweaks might be hard to determine whether mods are necessary or not depending on the cfg file. I'll have to think about cfg tweaks...
What constitutes a major release?
My thoughts: a new package added. Especially if it's a large package or it adds some major feature such as a new spell system.
Anything that might require changes to optional packages a user has installed. Such as the necromancy package that has it's hooks in a couple of areas already.
Major package rewrites or reorganizations. An example comes to mind that I am working on right now, attributes. I am moving all attribute related files to an attributes package. They were all over the place before.
Is there any way to automate a versioning system?
I would assume not if we are going to use somewhat subjective criteria such as I listed above.
Or should we just do minor version bumps with each commit unless the person making the commit feels that it is worth a major version bump?
This, I assume, would be much easier to automate if a version system can be automated.
I would like to hear your thoughts. Especially from developers who have had to work in an environment were versioning was used.