Replies: 4 comments 18 replies
-
Great Writeup!
This is true for incremental numerical values too. In order to figure out what the newest version of a plugin is a third party would have to check out the git repo and search through git tags to identify the newest version. Any caching of the newest version number in the titles of releases, api endpoints, filenames, etc, could be mimicked by a hashed based version number too. Currently, nexus goes to github and tries to identify what the newest release number is. Then it checks if it's version is less than that number and if it is then it updates. Using a commit hash instead means that that The only advantage a numerical only version number gives you when querying newness is "is version x newer than version y". Users dont normally want to update to the next version, they want to update to the newest version. However there is a good point to be made about addon managers primarily supporting numerical/semver and nothing else. This of course could be changed with a pr to said addon manager. I am not opposed to semantic versioning from an ideological perspective. There are good non-update reasons to use other version systems
Using a hash is zero recurring work and also very little upfront work, hashes are automatically provisioned by git. An incremental solution requiring the same amount of recurring work, like some listed below, would be an acceptable end result.
We dont have any workflows that run on-release right now. We could though if it is the right decision. Right now the release process follows the pattern:
Something to note in this process today is that the My ideal release workflow is
One solution to achieve both an incremental version count and not have any manual input is this is to ditch semver and just have a single incrementing number as the version number. It appears arcdps does this, and many other applications outside of the gw2 addon sphere do this too. Obtaining this number without human interaction can be a bit tricky but there are a few options, and probably plenty more with a little bit of research.
I think I will need to really think hard about how we can automate this best. I really want to move in the direction of fully automated releases but I agree that cutting a new release multiple times a day if there are say 2 merges is a bad idea. One thing we could do is automatically cut a release every Tuesday if there are changes since the last release. I pick Tuesday only because that is the same day that gw2 updates. If we need to do an emergency release for a bug or a crash or something we can add a way to run the workfow manually somehow. Maybe via the github ui but there are also more programmatic options that can be included in runbooks too. This could still create a release that had very few user facing changes in it though, I personally am ok with that.
This type of attitude is pretty common unfortunately, but far from the majority. I see it especially inside video game spheres. It can be hard to ignore them because belittling comments hurt, but these comments usually come people that have little to no experience creating or running projects like this themselves, even if they are programmers. I often see things like "this project needs" or "you must do x". Just remember to treat them with respect because the fact that they are upset means that they care enough to be upset and could one day be proponents of the project.
If they were talking about window manager complexity then: yep it is, I hope to fix that one day but it is way more complicated than automatic version updates.
A great attitude. |
Beta Was this translation helpful? Give feedback.
-
I agree that our release schedule could be improved. Most of the work I have been doing is on the back end and your support for the project is inspiring for finishing this work. Once the xml converter is fully finished, I think Burrito will be in a great state for additional front end features. My ideal update structure would be one where the program checks its version on launch, prompts the user to update, and updates without any additional work done by the user. Many updates are going to be small changes and bug fixes. I agree with your statement that the version number should be in the format that is supported my mod managers. I find Symver the easiest human readable that conveys something about the state of the project as well. I think the biggest thing to gain from manual releases is publishing a change log of the updates that have been made. Perhaps we could do those for larger changes or critical bug fixes. |
Beta Was this translation helpful? Give feedback.
-
For the distribution of burrito itself. This was not part of my initial post, but it came up a few times already. Building packages is by far no witchcraft I am packaging software for rpm & deb distributions for years (including burrito) . @Technetium1 seems to be involved in Arch, so we only need someone who can help us with flatpak and we got the whole ecosystem covered, including steam deck. |
Beta Was this translation helpful? Give feedback.
-
Here is what I am thinking we do. There are two types of releases, "weekly" and "major". Weekly - Every Tuesday. No release note, or a list of PRs merged in since the last release. Updates the
Major - Likely infrequent. Triggered manually. Contains manually written release notes. Updates the
Version numbers are tracked via git tags. Tags will use the pattern Tasks
@Masgalor @klingbolt what do you think about this? It is likely one or both will be writing this code assuming the xml_converter stuff wraps up soon freeing kling, while my next goal is the vm graphics stack testing harness. |
Beta Was this translation helpful? Give feedback.
-
I recently opened two pull-requests to implement support for a addon manager called Nexus.
The meta issue for this effort can be found here #325 , but this is not subject of this discussion.
While discussing the details of the implementation @AsherGlick and I drifted into another discussion about how releases are handled and how the versioning scheme should look like. @AsherGlick gave a lengthy explanation of his thoughts here #326 (comment) , while I respect every decision made by the project owner, I disagree with some of the points made in that post, so I would like to have a discussion about this topic so we can hear more opinions on this matter.
Why do I even care about releases and version-numbers?
I already mentioned in other issues and discussions here, that this project lacks public visibility. Where ever I see people talk about
Burrito
, be it on reddit, the official forums or ingame, the subtitle is often something likeit's dead anyway
it's too complicated
I know no-one who made it work
. This needs to change! And to change it I see a need for more frequent releases (better release workflow) and easier access/installation (addon helper/manager).As always I'm not here to talk empty words, but I'm down to work on PR's and workflows as long as there is a clear target everyone agrees to.
What I think we should discuss here.
1. The version format
Independent of the value that is represented what style should be used.
While there are several options like
alphanumerical (6f6062b)
alphanumerical.numerical.numerical (alpha1.4.0)
numerical.numerical.numerical (1.4.0)
, I think this is not up for discussion, because every addon manager includingarcdps chainloading
expects three numbers with an optional 4th. This makes sense for a lot of people including me, with three numerals it is always possible to sort the versions historically without any other information. If we just put a commit hash in there no third party is able to tell what version is the most relevant without checking out the relevant branch and looking atHEAD
or even worse walking down the whole tree until both hashes were found.2. The version value
So where do we get the numbers from?
I assume here, we will continue with 3 to 4 numerals, if this is not the case the following thoughts might not be relevant.
There are three popular ways to fill the fields, SemVer
1.4.0
, date & time2024.08.10.15
(this is limited to one release per hour), unix timestamp172.329.627.4
(this is limited to one release per second). The point here is always that the most left number changes the least and the most right number changes the most.3. Release frequency and workflow
When do we publish a new release and how does that work.
At the moment a new release is only published if some big goal was accomplished, this is great because updating to a new release gives an experience like
whoa all that great new stuff here amazing
. But a lot of people are also looking at the commits made and at the release section with roughly one release per year and go likeoh man a bug I've encountered was fixed, but until it is released I am no longer playing this game
. Or as a friend of mine said, be aware strong language ahead,an alpha with barely one release per year is more than useless, it's dead
.As for the frequency I think we should publish a release every time we change/fix something that is notable to the user. The last commit to master for example 6f6062b would not warrant a release in my eyes, but 4185432 would definitely. Too frequent releases would bother people, because they need to move several files by hand to several different places.
For the workflow I agree that there should be no manual work necessary, but at the same time I don't see where you would do anything by hand. No matter how the version scheme looks all you do as a maintainer is go to the github release section hit
new Release
and put some number in the required tag-field. That's it, everything else is done by workflows and/or build-tools, and if that is not the case yet we need to work on those.That's all from my side, I hope a lot of people tell us their opinion about those topics, and that we can get this project more of the appreciation it deserves.
Beta Was this translation helpful? Give feedback.
All reactions