Repository navigation
Introduce straightforward, comprehensible version scheme #39
Description
Activity
It might be worth starting a new numbered spec file for each major release and having a
latestfile that is a symlink to the most recent major release, plus adraftfile where you add things that are not ready for the main files.draft.md latest.md -> appimagespec-v3.md appimagespec-v3.md appimagespec-v2.mdThis way implementors can quickly see what the spec used to look like for a particular version without having to trawl through the Git history, plus it saves you having to write "New in version X" all over the place. The system could be extended to minor versions too, though that might be more trouble than it's worth.
draft.md latest.md -> spec/3/appimagespec-v3.2.md spec/3/appimagespec-v3.2.md spec/3/appimagespec-v3.1.md spec/3/appimagespec-v3.0.md spec/2/appimagespec-v2.0.mdCaveat: now the Git history wouldn't show the difference between versions (since each version is in a new file) although the history of
draft.mdwould essentially show this.As per discussion with TheAssassin, we will simplify things as follows:
- Instead of having multiple types (type 0, type 1, type 2) which were originally intented to be used like different profiles (as in PDF), we see that in reality only one type (the newest one) is actively used
- Hence, going forward, we will not have multiple AppImage types at the same time
- The types will hence be called versions from now on
- The AppImageSpec will try to follow semver with major and minor versions
- The AppImage runtime that implements a certain version of the AppImageSpec will have the same version number as the AppImageSpec, plus a patch level
Reacted by TheAssassin and Peter Jonas@shoogle have a look at https://github.com/AppImage/AppImageSpec/tree/next (still wip)
Reacted by Peter JonasBasically, this means whenever a new "type" (version) is released, all the tools will be switched to a new major version, same for the runtime. The old stuff will continue to work in theory, but we are going to cease support immediately since we are a small team anyway.
Let's hope we won't end up like USB (in German but probably understandable even if you don't understand German) ;-)
Reacted by Peter Jonas and Kornelius

#34 suggests to just release a 1.0. In a recent discussion with @probonopd, I proposed an alternative scheme which I think is very much superior to just starting with a 1.x release with the current state for multiple reasons. Before a decision is made, I think it makes sense to thoroughly discuss the semantics of such versioning.
Yes, I know, another lengthy issue... but there is no point in rushing things either...
In my opinion, the spec version number should be equivalent to the current AppImage type, and should be extended to a full major.minor.patch number. We could use semantic versioning, a concept widely used and well understood by programmers.
As a result, the current specification would be released as a 2.0.0, marking the initial release.
Keeping the numbers in sync makes it very straightforward for people seeking to implement support for a specific type to find the correct document. It makes it easier for us to ensure some sane versioning semantics on either end. And, after all, it is close to what we have done so far with the spec.
Main Semantics
The AppImage community can expect the following semantics:
Challenges
.zipin between the runtime and the payload, as described in some other issue.I'm sure there are more. Please add yours in a comment.