Skip to content
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

Add version compatibility documentation #229

Merged
merged 4 commits into from
Jun 17, 2024

Conversation

TheNeuralBit
Copy link
Contributor

This PR proposes some version compatibility documentation, as discussed in #228. I'm just aiming to get the conversation started here. I welcome any bike shedding or nits. Or if someone more closely aligned with the project wants to take this over I'm happy to support that as well.

@cholmes
Copy link
Member

cholmes commented Jun 16, 2024

Thanks for the contribution @TheNeuralBit - it looks good! I don't have any particular nits on this, and it'd be a good thing to have in.

@cholmes cholmes added this to the 1.1 milestone Jun 16, 2024
@kylebarron
Copy link
Collaborator

I removed a trailing space on one line to fix the lint CI check

@jorisvandenbossche
Copy link
Collaborator

The examples clarifying the policy look great to me. On the exact terminology of "backwards compatible", I am not entirely sure it is correct or whether it should be "forwards compatible" in context of the format spec.

For example https://arrow.apache.org/docs/dev/format/Versioning.html only uses "backwards compatibility" for library versions, while it used "forward compatibility" for minor versions of the format:

An increase in the minor version of the format version, such as 1.0.0 to 1.1.0, indicates that 1.1.0 contains new features not available in 1.0.0. So long as these features are not used (such as a new data type), forward compatibility is preserved.

Now, as @paleolimbot mentioned in the meeting, maybe the current wording here is fine, as you can say that a backwards compatible addition to the format spec ensures to preserve forward compatibility.

@jorisvandenbossche
Copy link
Collaborator

As additional context, there is a WIP update for the Parquet format itself to better describe this (apache/parquet-format#258). The current version of the PR defines:

  1. Backwards compatible. A file written under an older version of the format
    should be readable under a newer version of the format.

  2. Forwards compatible. A file written under a newer version of the format with
    the feature enabled can be read under an older version of the format, but
    some information might be missing or performance might be suboptimal.

  3. Forwards incompatible. A file written under a newer version of the format with
    the feature enabled cannot be read under an older version of the format (e.g.
    adding and using a new compression algorithm).

This defines "forward compatibility" a bit different, as we explicitly say that it is fine to add new features as long as old readers can detect that the new feature is being used.

@TheNeuralBit
Copy link
Contributor Author

Thanks for the comments. I think you're right we should talk about forward compatibility here. It's not necessarily true that a backward compatible change is forward compatible. It would be backwards compatible to add a new field that, when specified, changes the interpretation of some other field, but that's not forward compatible (an older reader would get incorrect results by ignoring the new field).

Copy link
Collaborator

@jorisvandenbossche jorisvandenbossche left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update!

@cholmes
Copy link
Member

cholmes commented Jun 17, 2024

Looks great, merging in.

@cholmes cholmes merged commit ff89bd4 into opengeospatial:main Jun 17, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants