Libraries Version Scheme #14
-
@thoni56, I was thinking that for the various StartLib implementations we should adopt Semantic Versioning 2.0.0 as the versioning scheme standard. This mean that end users would be able to look at any latest library version number and immediately deduce whether they use it in their adventures without having to tweak their code. But this would also mean that we'll be seeing quite a lot of MAJOR version bumps in the initial stages, for many of the pending changes to integrate new ALAN feature would introduce breaking changes — e.g. dropping the I'm not sure whether that's a problem or not, but I noticed that many people who aren't used to SemVer find it puzzling that a library bumps-up its MAJOR version due to a single backward breaking change — yet, it's such a useful convention! For this reason, SemVer is so often misused (even on GitHub), where many authors believe that MAJOR version bumps should only be associate with major code rewrites or ton of new features. The summary description of SemVer 2.0:
Obviously, the extra segment for pre-release and metadata labels would only really be used in development branches, when collaborative editing is at play. I personally find this scheme so intuitive and practical, especially for our libraries. But if we adopt the SemVer scheme, we need to ensure that contributors adhere to it. Versioning Multiple LibrariesAnother issue related to version numbers is whether the different language implementation of the library should somehow be kept in synch in this respect, or if each library follows and independent version. We'd naturally hope that improvements in the English library would also be replayed on other languages, but we don't really have any guarantees in this respect, for that depends on whoever is maintaining the port to a specific locale — i.e. developers who master that target language —, but these might not always be actively maintaining their ported work (the Spanish library was resumed from the web, so we don't even have a maintainer for it right now). Personally, I think that every library (i.e. locale port) should have its independent version scheme, and that it doesn't matter if the English lib has reached v5.x.x and the Spanish is still v1.x.x, regardless of which features were added/updated in each — e.g. on library might introduce multiple breaking changes at once, hence bumping a single MAJOR version number, whereas another library might add these changes one at the time, resulting in multiple MAJOR bumps for the same changeset of features. Starting PointIn any case, once we reach and agreement on the versioning scheme, I would like to proceed with setting the English and Spanish libraries to v1.0.0 (or whatever scheme), since I think that their first release should match their upstream unchanged code. After that, we can start changing them and bumping up their version number. That's mostly because it simplifies tracking changes in their ChangeLog, since that's a strict requirement of the Artistic License 2.0. ChangeLogs and Artistic LicenseI was thinking that since we've renamed the libraries, we could refer to their original Lib v0.6 upstream version for their older ChangeLogs (i.e. linking to their archived version on the ALAN Goodies project, to which I've recently also added an archive copy of the original Spanish pALANte library). This would allow us to keep the ChangeLogs in this project shorter and more consistent, and I believe that since the libraries here are new derivate works, this is in compliance with the Artistic License, especially since our org also maintains their archived copies, with ChangeLogs and all. But I wanted to ear your opinion on this, since you've been using this license much longer than I have. We surely don't won't to handle licensing wrongly here. |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 2 replies
-
Actually, I'm no expert on licensing, I have just adopted what seems as a reasonable one given my very limited understanding, so I might not give "expert advice" on that. But I do tend to like SemVer in principle, although I haven't (probably) been rigorous in using it. But I agree that following that is a good thing and would help users a lot. I agree with using 0.6 in the Goodies project as a stepping stone is a good idea and make some things much easier, so let's do that. When it comes to having the libraries in sync, again, I agree with your sentiment that this is not required, and might be prohibitive as it would imply that a library maintainer was forced to follow the English library, which is more of a wish than a rule. Also all features in the English library might not be easy to port and vice versa, so it's better to have some leeway/freedom here. Wrt. many MAJOR updates in early develpment, maybe we can adopt a tiny tweak to the AL2.0 by saying that as long as we're in the 0.x.y there might be MAJOR incompatibilities between versions. Then we have the option to decide when 1.0.0 is released and becomes the real "MAJOR" version baseline. This of course opens up the question about what we'd consider 1.0.0. And I think there are at least a few things that we want in that (although I'm not sure they'd considered to be MAJOR incompatibilities):
Thinking about it we should probably define what MAJOR and MINOR incompatibilities actually mean in the libraries. A small change in a message might make all your tests fail, is that allowed for a PATCH or does it force a MINOR, or even MAJOR version update?Obviously not a MAJOR, but anyway. Building on that here's a first attempt to get that discussion rolling:
This is just an initial, of the top of my head, list. There are probably other types of changes that should go into this list. Primarily we should consider what impact to a game author it might have, as I've done above, but, we should also think about how frequent various types of changes might be, so that that type ends up in a reasonable change level. E.g. if text output changes would force a MAJOR update then we'd soon be in three digit major versions... ;-) |
Beta Was this translation helpful? Give feedback.
-
StartLib EN v0.1.0@thoni56, I've finally managed to clean up the English library sources and docs and create the initial Beta v0.1.0, ad discussed. I've updated the CHANGELOG, making it clear that we'll be only tracking changes since the Lib 0.6.2 (as archived on ALAN Goodies). I've renamed the main module I've also updated the CONTRIBUTING doc, providing some guidelines for porters of the library to new languages. I've suggested some conventions that seem to make sense to me, but which are (of course) open to suggestions and changes. These include naming the main library module Italian Library WIP NewsMy work on the Italian port is going ahead, and I'm sharing it on the |
Beta Was this translation helpful? Give feedback.
-
StartLib ES v0.1.0@thoni56, I've now also cleaned up the Spanish library sources and docs and create the initial Beta v0.1.0, as discussed. All changes mirror those of the English v0.1.0, so we have a consistent baseline for all the legacy libraries that were imported into the project. I've been reading through the Spanish Lib sources, and noticed a few things that might benefit from improvements in terms of code, and others that don't quite convince me. I should be able to handle code updates that don't involve touching generated text, but we'll eventually need to either contact Bruce Humphrey and see if he's willing to take on its maintenance (11 years have past!) or else make an announcement in the various IF groups (especially the Spanish ones) to see if any native speaker comes forward for the task. My problem is that I can read and understand Spanish, but have no clue whatsoever on how to write it, spell it, etc. My knowledge of the language has no academic grounds, just my personal experience from having lived in Spain for a while. So, there are obvious limits to my contributions to the Spanish library code base. |
Beta Was this translation helpful? Give feedback.
-
Versioning Doc UpdatedI've dropped the old This is an heavily updated version of the article explaining how the library version scheme works, now providing practical examples to simplify understanding how library version numbers should be interpreted in terms of how they can affect existing adventures. I've also added more text, digging deeper into how SemVer works, and improved the pre-existing text. I've switched to the AsciiDoc format since this article will ultimately be included in the distribution package in HTML format — possibly as part of a larger document that ships with the libraries. Unfortunately, the way GtiHub renders the AsciiDoc preview is fairly poor, it lacks basic styling for the core AsciiDoc elements (example blocks, admonitions, etc.) and those that are styled are poorly styled too (misaligned contents in grid-based layouts, etc.). I never quite understood why GitHub has invested so little energy in optimizing the CSS for previewing AsciiDoc documents. That's rather unfortunate, especially since GitLab has greatly improved AsciiDoc rendering in the course of time. Anyhow, I hope that the new updated article is clearer for authors who are new to SenVer, and to version schemes in general. I've opted for a shorter file name too, since |
Beta Was this translation helpful? Give feedback.
Actually, I'm no expert on licensing, I have just adopted what seems as a reasonable one given my very limited understanding, so I might not give "expert advice" on that.
But I do tend to like SemVer in principle, although I haven't (probably) been rigorous in using it. But I agree that following that is a good thing and would help users a lot.
I agree with using 0.6 in the Goodies project as a stepping stone is a good idea and make some things much easier, so let's do that.
When it comes to having the libraries in sync, again, I agree with your sentiment that this is not required, and might be prohibitive as it would imply that a library maintainer was forced to follow the English librar…