-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Write down versioning / changing rules #858
Comments
+1 -- When I heard the v2 announcement, I immediately assumed it would include breaking changes and was surprised to find it was going to be backwards compatible. Was v2 chosen because v1.1 felt like it wasn't communicating enough "distance" from v1.0 given the new website, dplib, etc.? If so, a jump to v1.5 might be another option to create separation before/after this initiative, which I would interpret as "major overhaul but no breaking changes". ... that said my opinion isn't very strong on this, so I'm happy to defer to whatever strategy has the most consensus/momentum.
I think this is an excellent question and definitely warrants further discussion. How it is handled seems intertwined with the standard's governance structure / processes moving forward... Is this the sort of thing we want to/are planning to cover in the working group? |
I would not be surprised if there will be an edge case of some artificial piece of data being compliant with 1.0 but not with the new version because the existing wording allows things not planned to be allowed. Moreover I think a version 2.0 will more attract than discourage use. |
I don't even think we will need artificial data to hit this problem. #379 and #697 are breaking changes likely to be discussed which at some point were added1 to
Thinking about "communication simplicity" I think they should be versioned as a whole. This quote from @roll captures the problem quite well:
To give another example, I can see how Footnotes
|
I think it's a valid point, and as a Working Group, we can vote on the version when we have finished the changelog. Peter outlined the pros of staying on v1.1 so I'll add some arguments in favor of v2:
TBH, I'm not sure if the specs need 100% compliance to semver as it's not software. For example, JSON Schema versioning has been like |
@peterdesmet PS. |
I just realized "backwards compatibility" / "no breaking changes" has different levels/types of strict-ness, and I'm not clear where we stand:
Different types of modifications to the spec break in different ways:
etc. In general, it's easier to upgrade software than existing data artifacts... so I'd argue we should hold to (1) and relax (2) to give us more freedom for v2 improvements. It also puts me squarely in the v2 semver camp because although a given v2 spec implementation will be "backwards compatible with v1 data", it still is "breaking" in that v2 data will not necessarily work with a v1 implementation. |
Thanks @khusmann for the summary, I complete agree that we should hold to (1) and relax (2), i.e. future software application should still be able to read v1 data packages (since those will be around for a long time), but can be slow in adopting new features of v2. I draw a different conclusion regarding the versioning though, since a v2 spec sounds (to me) that software implementations can at some point give up on v1. A v1.1 indicates that this is still within the same major version of the spec. |
@peterdesmet
By structurally breaking change I mean something that will fail all the implementations on the next nightly-build. It will happen if we do a breaking change to one of JSON Schema profiles e.g. changing Unfortunately, as the specs in some places were written very broadly, we also have a So in my head for v2 I have these tiers (and my opinion on change possibility):
|
Also, it's the specifics of working on standards that many kinds of new features (a property added) don't have full
|
@roll, since you wanted everything related to versioning be part of this discussion, I'm also referring to this comment by @khughitt and me regarding implementations retrieving or detecting the version of the Data Package spec:
|
I think on the Standard side, we need to decide whether we provide standard version information for an individual descriptor e.g. as proposed here #444 I think every implementation is free to decide how to handle it as it's just about resources. E.g. some implementation can have a feature that it validates against versions X, Y, and Z. And some just against Y Note, that currently we consider |
I think the rules for changing the Data Package spec should be declared (on the spec website or elsewhere). I currently find it difficult to assess if PR follow the rules. Here's a first attempt: General rules(in line with @khusmann's statement that software is easier to update than data artifacts #858 (comment))
Because of these rules Versioning
Property changes
Table schema changes
New properties
Removed properties
|
Thanks for taking the time to put this together, @peterdesmet! This seems like a great idea.. I think it would be useful to use this as a starting point for a description of the revision process in the docs. I'll create a separate issue so that it can be tracked separately from the issue discussion here. |
My 2 cents here:
|
@peterdesmet And then if we have a established release cycle we can merge tested features in the core specs based on schedule. Actually using this approach feature development can be even decentrilized |
@roll sounds promising, would have to see it in action to fully understand. 😄 |
Hi all, the communication on the Frictionless specs update names it
v2
(version 2, see also #853 #857). The announcement blog post also states (emphasis mine):I'm very happy no breaking changes will be introduced, I think that should be a guiding principle. But following semantic versioning, the specs update should then be a minor version. Given that all major specs† are currently v1, I would argue that the upcoming release is
v1.1
.I understand that v2 indicates that there is serious momentum behind the current development (dedicated project, new website). But to anyone who's not closely following Frictionless v2 seems like it is a major overhaul without backward compatibility. A
v1.1
would (correctly) communicate that while Data Package is now its own standard and most things will work as expected. It also sets us on a path to incorporate more changes in future (minor) releases.Sidenote: will we version Data Package (the collection of standards) as a whole or will the 4 standards be versioned separately (current approach)? I see benefits and downsides with both approaches.
†All major specs are v1: Data Package, Tabular Data Package, Data Resource, Tabular Data Resource and Table Schema. The exception is CSV Dialect which is v1.2, but it seems this one is renamed to
Table dialect
so one could argue to start over. Some of the other experimental specs (like Fiscal Package or Views) have other version numbers like 1.0-rc.1 and 1.0-beta.The text was updated successfully, but these errors were encountered: