Looking forward for your opinions.
To Michele:
I prefer the version system we have. The 90-day cycle will create the desired impression that Trinity is an active project. The long lapse caused by R14 has not helped us and is unusual, but hasn't killed us either --- we did have two maintenance releases.
To David:
We are not embracing a rapid release schedule. We are embracing a maintenance release schedule. The focus is a timely release of bug and security fixes. We do not have the resources for rapid release. We do not have the desire for rapid release. Trinity is not about using software as a playground to test ideas and brainstorms while users suffer. Trinity is all about retaining a traditional desktop interface. The types of new features we introduce conform to that project goal, which means we should never see a feature that breaks everything.
I am not in favor of Yet Another Number in the Version scheme. Three numbers is enough. I'll scream and shout for anything longer than tree.
I don't mind the R14 version scheme. I was not in favor of using 3.5.13.1 and 3.5.13.2 as versions. Those versions should have been 3.5.14 and 3.5.15. Or, because of ABI breakage, 3.6 and 3.6.1. What is done is done. Moving forward we need the new version scheme to form our own identity. We discussed all of this long ago, even before you departed for many months.
The new version scheme is explained in the release notes. Open the help handbook, select the "Welcome to TDE" handbook, and select the Release Notes link.
I won't resist dropping the "R" from the version number. I'm fine with R14.0.0 or 14.0.0.
Soap box time:
===========================
The current version scheme is explained in tdeversion.h:
R <ABI VERSION> . <FEATURE REVISION> . <BUG AND SECURITY PATCH LEVEL>
Initial release is always R<ABI VERSION>.0.0.
BUG AND SECURITY PATCH LEVEL is always updated with a point release.
FEATURE REVISION is updated when new features are introduced or existing features are significantly updated.
A FEATURE REVISION release does NOT include ABI changes.
A new FEATURE REVISION level always resets the BUG AND SECURITY PATCHLEVEL.
A new ABI version resets both the FEATURE REVISION and BUG AND SECURITY PATCH LEVEL.
===========================
The big difference between current practices and post R14.0.0? We have to plan and to discipline ourselves. We have not done that at all during the R14 cycle. We just push and build.
Considering the way things have been done in the past, our current version scheme will always requires a main branch.
We are not finished with package and library renaming. More to come.
ABI/API breakage seems to occur frequently enough. Or, did frequently enough at one time. Usually unannounced. Future ABI/API breakage will have to be planned. Such patches will have to sit and wait until all other plans are finished and everybody is ready to proceed.
Throughout the R14 cycle, we have not adhered to this version scheme. We have been regularly throwing darts and changing everything. After R14.0.0 we will have to discipline ourselves.
===========================
From a public awareness perspective, and I emphasize public awareness perspective, we're not dead yet as a project, but the R14 cycle has been a slow and painful journey toward death for Trinity.
I want to emphasize and defend that we need a maintenance release cycle. We need to get back into the public eye. The R14 cycle has been grueling. Many users have all but forgotten Trinity. That is not good for us. Better awareness in the free/libre community means more users, more eyes, hopefully more people helping patch and improve Trinity.
We have been super cautious about releasing R14. I believe we will be rewarded with good reviews.
We need to motivate ourselves with keeping users happy. We do that with a maintenance release cycle. They have not been seeing Trinity much in the news the past 18 months. They are not seeing bug fixes. Is Trinity dead? A maintenance release cycle stifles such questions.
The Xfce project is a good example. They strictly use the "release when ready" strategy. Their last release announcement on their web site is getting close to two years old. Not comforting to users.
I appreciate Michele's long thoughts about the challenges we face. At the moment I remain open but I am not convinced to release the main trunk. Why?
* Our commit history is evidence for not doing that.
* We have no quality control program.
* We have no cmake conversion audit program.
* We have no mechanism to ensure i18n files are updated concurrently with parent modules (within the limitations of translation).
* We have no program to ensure help handbooks are updated timely, which includes i18n too.
* We tend to push patches that "work for me" but occasionally do not work for others (and all of us have pushed such patches, including me).
That is, releasing from the main trunk will slowly hurt the project to the point that the only users will be the developers.
I appreciate the energy required to maintain multiple branches. But unlike LO, we will only maintain two active branches. When the R14.0.1 tarballs are released we stop supporting R14.0.1 and that branch is frozen, perhaps even deleted after the tarballs are released. We then create the R14.0.2 or R14.1.0 branch. Or, the R14.0.1 branch automatically becomes the R14.0.2 or R14.1.0 branch after the tarballs are released. We need only maintain the main trunk and the next maintenance release branch. Simple.
We will need to plan future releases. That way we know exactly what to backport and when.
===========================
Our goals with the 90-day cycle is not to play the idiotic version scheme of some well-known software. Our goals include 1) ensuring bug fixes are released in a timely manner and 2) keeping Trinity in the public eye.
After R14.0.0 we need to keep bug and security patches rolling. The ultra long R14 cycle has been a grand exception.
A nominal press release every 90 days keeps Trinity in the news. A 90-day release cycle keeps the bug patches flowing in a timely manner.
Yes, the 90-day schedule is intended to be hard-fast. Whether we release with 3 bug fixes or 30 is irrelevant. We release every 90 days.
No, the 90-day schedule is not intended to be a rapid release schedule. The focus is very much timely releases of bug patches.
We can release sooner than 90 days but only when a show stopper bug slips by all of us and cause great pain for users. Likewise for severe security issues.
By design, each maintenance release will increment the last number in the version sequence: R14.0.1, R14.0.2, etc.
Renaming changes and new features will increment the MINOR number in the version sequence: R14.1.0, R14.2.0, etc.
===========================
A significant difference between future maintenance releases and 3.5.13.1 and 3.5.13.2 is we won't suffer the challenge of renaming. The bug fix patches included in the 3.5.13.x releases all had to revert renaming changes. That was a huge burden. That will not happen in future maintenance releases. We will have no need to revert renaming changes in the maintenance release cycle. All we need do with future renaming changes is bump the MINOR version number.
Future renaming changes are <FEATURE REVISION> and not <BUG AND SECURITY PATCH LEVEL>. The first set of renaming changes after R14.0.0 bumps the version to R14.1.0. This includes cmake conversions. We have seen renaming changes introduce severe bugs. We will need to plan and test renaming changes in the main trunk before backporting to the next maintenance release.
We need to discipline ourselves. Unlike the R14 cycle, we need to plan renaming events. There are many apps that we can and should rename. tdevelop and tdesdk remain a convoluted mess of tde* and kde* names. We don't blindly push such patches. We agree on when such patches will be pushed. We agree on when such patches are backported. Agreeing on such patches will reduce stress and help maintain the multiple branches in a sane manner.
We can push almost anything into the main trunk, but what gets pulled into the next maintenance release branch should be a part of a plan. For example, R14.0.1: bug fixes only. R14.1.0: tde-i18n changes and bug fixes. R14.1.1: bug fixes. Bug fixes always get backported to the next maintenance release branch. Other patches might not get backported immediately, but if we backport more than bug fixes then we bump the MINOR number.
All of us involved at the development level will need to learn from other projects how people maintain different branches. For example, the LO folks now have a main trunk, a 4.2 branch, a 4.1 branch, a 3.6 branch. How do they decide what gets backported? Yet they seem to handle this with no problems. We learn how to do likewise.
===========================
To summarize:
Maintenance releases will be released as tarballs. Users are never affected by anything that happens in the main trunk. Easy to forget that those of us using git are volunteer guinea pigs. Users are not.
This is not a rapid release schedule. Primarily this is a focus on timely releases of bug fixes and planned feature releases.
Future releases will be planned.
At the moment I'm comfortable with the current version scheme and am not in favor of pushing the main trunk as an official release.
Darrell