Headline:Spiral, Profiles, and Version Control
Date:Saturday, April 06, 2019
Posted By:Soybk Language Distribution

The most up to date version of this plan will always be found at this URL.

To cut down on confusion caused by the fact that the software the Sobyk builds also has versions, Sobyk client and server software will not have a "Version." They will have a "Spiral." Spirals will have a major version number. Major versions will be integers. There will never technically be a "minor" version for Sobyk. There will, however, be works in progress and bug fixes. A .0 version is the "work in progress". A .1 is a testing and verification. A .2 is "released to the wild". Any number after .2 is a bug fix release. And the numbers will count up however high they need to go. No new features are added after a .2, only bug fixes. If something is going to change, that change needs to go into a new spiral.

For instance, Spiral 0 is the current spiral. It represents all of the opening moves in order to roll out Spiral 1. Every spiral will have a list of specific objectives that will be met to fulfil that spiral. Every spiral will have a progress report while its is ongoing. New technology and features will be limited to only those areas that were identified by the project going into the spiral. Cool things that were discovered along the way, or new approaches to be tried have to be scheduled into a future spiral. And Spirals will be planned out in advance to keep work to related parts of the code at a time.

Future spirals of Sobyk software must be able to read configuration files and profiles written for prior versions. If a new configuration format is irreconcilable with a past release, that new configuration must go in a new file so that the original configuration can be maintained, unchanged. But ideally every format that makes it as far as .2 should never have to be changed. (Though I must recall the Ferengi Rule of acquisition #109: Dignity and an empty sack is worth the sack.)

Spirals ONLY dictate the version of the Sobyk client and server itself. Which external software that Sobyk builds will be governed by "Profiles." A profile is a specific collection of software, of specific versions, that all works together. Each profile will list specific platforms it supports, and that platform definition is free to tailor, modify, disable, enable, customize or lobotomize whatever it needs to from the generic profile. Profiles govern the binaries that are delivered, NOT the Sobyk software the delivers it. An platform that lacks a customization will attempt to conform to the generic standard.

Profiles themselves are also versioned. The version of a profile is NOT tied to Sobyk. Profiles may change, improve, and otherwise issue revisions as needed. Each profile will have a "Benevolent Dictator", who has final say and ultimate responsibility for what goes into the profile, what gets left out, and otherwise how Sobyk negotiates the landscape of the targeted platform.