Thread:Extension talk:TemplateData/MediaWiki 1.22 or higher?/reply (13)

I agree 100% with using everything in Semantic Versioning 2.0.0. It is completely consistent with what I was attempting convey, and my expectations. The problem is that Extension:TemplateData is not using it. Version 0.1.0 is where you start. It is not where you leave it. To quote that page:
 * "3. Once a versioned package has been released, the contents of that version MUST NOT be modified. Any modifications MUST be released as a new version."

Versions, by definition, have been released. Whether it was desirable/intended or not, by having versions available via the ExtensionDistributor those are absolutely releases. If someone does not need to use Git to obtain the code, that is certainly a release. Further, those releases have been used in major areas (enwiki). Actually, when dealing with inter-project dependencies it is appropriate for the revision to roll even when one still has to use Git to obtain the code. Version numbers are usually used to track changes to code and are rolled when changes are released to view by people outside the specific sub-project. From the view of a sub-project the "public", to determine if it is a "release", is usually considered to any general view-ability by people outside the specific sub-project.

I really don't see why there would be resistance to rolling the version from 0.1.0 to 0.1.1 or 0.2.0, or as appropriate, when things change after each release. These are still clear and obvious development versions. To quote Semantic Versioning 2.0.0:
 * "4. Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable."

Keeping the version at 0.1.0 is only reasonable prior to having the code in use for anything other than initial development by only those specifically working on the Extension:TemplateData code alone, without releasing it into any wider use (i.e. not released for use by VisualEditor). The 0.1.0 version level is effectively for code that is at a level of "I have just started work on this and not made it available to anyone else yet." Rolling version numbers is normal. You have the whole infinite set of integers to work with. There is no reason not to use them.

You state that it is in active development to meet the criteria of one, or more, non-TemplateData projects (VisualEditor is provided as an example). That is all the more reason to actually use Semantic Versioning 2.0.0. You have given an example of exactly why it is important to use versioning: so that those interfacing with the code, who are outside of the specific TemplateData project, know what version they are running against. That it is in development to meet the needs of another project is not an argument for keeping the version at 0.1.0, it is an argument for actually using versioning as described in Semantic Versioning 2.0.0. The API is being used by another project. That, by definition, means the API is public, not private (i.e. being used only in the TemplateData project).

Just to be clear: I am only here because I am writing code which is using the JSON data provided by TemplateData. I am using data supplied by the released versions which have been running on enwiki for 8 months. There is a public API. It is defined at least at: Extension:TemplateData, here (because it is referenced on the extension page), and here. I would not be here if the TemplateData API was not already public, because I would not have been able to find it, or use it. It was public at least by 10 June 2013 when it was described on Extension:TemplateData. By the end of that month it was publicly released to millions of people by its use on enwiki, and elsewhere.

From your comments here it appears that the unstated reason you are objecting to rolling the version number is that you have not "released" the code. The reality is that the code was released months ago. It does not matter that you do not desire to consider it "released". The fact that it is available from ExtensionDistributor by definition means that it has been publicly released not just once, but twice. Further, I would say that anything that is loaded onto enwiki is certainly released. Actually, under most development situations a "release" for a sub-project is when the code is made available for use by other sub-projects, not just when it is made available to the public at large, or when the overall project is released to the general public.

I really don't understand why there is resistance to rolling the revision number to a higher 0.y.z version. Version numbers are not a finite resource that can be used up. Versions are not something that should be horded. They, the 0.y.z revisions, should be rolled freely when changes occur, as described in Semantic Versioning 2.0.0. Keeping the version at 0.1.0 is completely contrary to the concepts and reasoning at Semantic Versioning 2.0.0.