Module version:
2.1+, Godot 3.2 and 4.0+.
Issue description:
As you may know, Godot is currently undergoing major rewrite for 4.0. Some changes has already introduced compatibility breakage which need to be resolved in the module.
Currently, the module's master
branch aims to be in sync with the latest development changes in Godot as noted in README
. That worked well up until now, because rewriting the module means that:
- new features are going to end up to be only 4.0-compatible;
- new features need to be ported to 3.2 manually for each.
Given that the engine won't be usable nor stable for quite a long time (and most people would be actually using the released version of the engine which is Godot 3.2), I think it would be reasonable to change the branching model. Cherry-picking features from 4.0 to 3.2 is just going to be double work, and it's expected that new features can be added against Godot 3.2 too.
Instead, I propose that for each major engine version, there should be a separate branch. Namely:
- rename
master
branch to <module_version>-<engine_major_version>
;
- create a new branch for the next major engine version in development.
Some examples of how it would look like:
2.1-gd3
(2.1
as of now)
2.1-gd4
3.0-gd3
dev-gd3
(master
as of now)
dev-gd4
For stable releases (by stability I define that no new features are added to that version), the version tags would look like:
v2.1-gd3-stable
v2.1-gd4-alpha
It also means that each engine-specific version can diverge and have different set of features (ideally they shouldn't), and depending on community needs they can be cross-ported between versions (bumping the major
component of the module itself for each branch, if necessary). Once Godot 4.0 is released to the public, any Godot 3.x-specific features can be finally moved to 4.0.
I'm just announcing this publicly and perhaps people can suggest something better, especially the naming prefixes/suffixes to encode engine major version for branches. I think this kind of distinction will work better in the long run. I'm not that familiar with other branching models out there.
Note that there will be no master
branch anymore, and the default branch is going to be dev-gd3
for "nightly" versions, and there will be another dev-gd4
branch similarly.
Also note that the module is currently imitating the branching/versioning model similarly to Godot, for consistency. So might be worth naming development branches as master-gd3
branch similarly instead of dev-gd3
.