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

[DISCUSSION]: Formally document the backwards compatibility process for FOCUS #578

Closed
AWS-ZachErdman opened this issue Sep 30, 2024 · 12 comments
Assignees
Labels
1.2 consideration To be considered for release 1.2 backward compatibility Potentially affects compatibility with past FOCUS releases discussion topic Item or question to be discussed by the community needs work item Needs an issue that adheres to the Work Item issue template, prior to consideration by stakeholders spec process Related to how the spec is produced
Milestone

Comments

@AWS-ZachErdman
Copy link
Contributor

Description

FOCUS has been receiving some backwards incompatible changes in 1.1. We need to:

  1. Document our definition of backwards incompatibility
  2. Document our process for validating and merging backwards incompatible changes to a future version

Proposed Approach

This documentation should be in the FOCUS repo for future reference, but need not be in the specification document.

GitHub Issue or Reference

No response

Context

No response

Data Submission for Discussion

No response

@AWS-ZachErdman AWS-ZachErdman added the discussion topic Item or question to be discussed by the community label Sep 30, 2024
@github-project-automation github-project-automation bot moved this to Triage in FOCUS WG Sep 30, 2024
@jpradocueva jpradocueva moved this from Triage to R&A in FOCUS WG Oct 2, 2024
@jpradocueva jpradocueva added this to the v1.1 milestone Oct 2, 2024
@jpradocueva
Copy link
Contributor

Action Items from TF-2 call on Oct 3rd:

@jpradocueva
Copy link
Contributor

Action Items from the Mebmers' call on October 3rd:

  • [Maintainers-#578] Zach, @AWS-ZachErdman to draft a process for breaking change documentation.

@ijurica
Copy link
Contributor

ijurica commented Oct 7, 2024

A few notes on (potential) breaking changes introduced in FOCUS version 1.1 compared to version 1.0...


Assuming a breaking change is defined as any modification to an existing FOCUS column, attribute, or Metadata element that could cause previously functioning SQL queries (supporting a specific use case) to fail or behave differently, the following changes introduced in FOCUS version 1.1, compared to version 1.0, are considered breaking changes:

  • ConsumedQuantity column update:

    • According to the normative requirements specified in version 1.1, ConsumedQuantity MUST be null if ChargeCategory is 'Usage', CommitmentDiscountStatus is 'Unused', and ChargeClass is not 'Correction'.
    • In contrast, version 1.0 specified that ConsumedQuantity MUST NOT be null if ChargeCategory is 'Usage' and ChargeClass is not 'Correction', regardless of the CommitmentDiscountStatus.
    • Note: An alternative to this breaking change was considered (see PR Have consumedquantity be 0 for unused commitment #598 for details). We discussed the pros and cons and decided to proceed with the current version.
  • ConsumedUnit column update:

    • According to the normative requirements specified in version 1.1, ConsumedUnit MUST be null if ChargeCategory is 'Usage', CommitmentDiscountStatus is 'Unused', and ChargeClass is not 'Correction'.
    • In contrast, version 1.0 specified that ConsumedUnit MUST NOT be null if ChargeCategory is 'Usage' and ChargeClass is not 'Correction', regardless of the CommitmentDiscountStatus.
    • Note: An alternative to this breaking change was considered (see PR Have consumedquantity be 0 for unused commitment #598 for details). We discussed the pros and cons and decided to proceed with the current version.
  • PricingCategory column update:

    • According to the normative requirements specified in version 1.1, PricingCategory MUST be 'Committed' when the charge is subject to an existing commitment discount and is not related to the purchase of the commitment discount.
    • In contrast, version 1.0 specified that PricingCategory MUST be 'Committed' when the charge is subject to an existing commitment discount, even in cases where the charge pertains to the purchase of the commitment discount.
  • CommitmentDiscountStatus / CommitmentDiscountCategory column update:

    • According to the normative requirements specified in version 1.1, CommitmentDiscountStatus MUST be one of the allowed values: 'Used' or 'Unused'. Due to an oversight in version 1.0, the same requirement for the CommitmentDiscountStatus column was incorrectly written as: "The CommitmentDiscountCategory MUST be one of the allowed values: 'Used' or 'Unused'."
    • This oversight might also be classified as an editorial change.

@ijurica
Copy link
Contributor

ijurica commented Oct 7, 2024

Some Common Characteristics of Breaking Changes:

  • Schema/Structure Changes:

    • Changes in data structure, such as renaming or removing columns or metadata elements, can break existing integrations or queries.
    • Example: Removing or renaming a column in a dataset would require consumers (practitioners, ETL systems, etc.) to adapt their queries or processing logic.
  • Modifying Data Types:

    • Changing the data type of a column can cause failures if consumers were designed to handle the previous format or behavior.
    • Example: Changing a column’s data type from String to Decimal.
  • Modifying Constraints That Result in a Change in Expected Behavior:

    • Any modification that alters column nullability (e.g., MUST be null vs. MUST NOT be null), the list of available values, or the expected value for a particular use case scenario can potentially cause the same queries to yield different outputs or results.
    • Example: If a query against a dataset returns different results due to changes in column nullability or available value definitions, this constitutes a breaking change.
  • Etc.

Additional topics to discuss:

  • Should we focus on the practitioner’s (consumer’s) perspective, or should we encompass both consumers and producers?
    • For example, introduction of stricter validation or constraints - such as a more limited value range, or changing from "MAY be null" or "MAY NOT be null" to "MUST", etc.

@shawnalpay shawnalpay added backward compatibility Potentially affects compatibility with past FOCUS releases spec process Related to how the spec is produced labels Oct 10, 2024
@shawnalpay
Copy link
Contributor

shawnalpay commented Oct 10, 2024

Assigning this one to @AWS-ZachErdman and @ijurica, per our discussions this past week.

EDIT: per the Oct 10 Member call, adding @ahullah and @rileyjenk as assignees as well.

@jpradocueva
Copy link
Contributor

Action Items during Members' call on Oct 11:

  • [Members-#578] Zach, @AWS-ZachErdman , Alex, @ahullah, Riley, @rileyjenk : Create a formal document outlining the backwards compatibility process.
  • [Members-#578] Zach, @AWS-ZachErdman , Alex, @ahullah, Riley, @rileyjenk : Develop a checklist of evaluation criteria to be used for assessing proposed changes.
  • [Members-#578] Joaquin: Schedule follow-up meetings to review specific scenarios and refine the process.

@jpradocueva
Copy link
Contributor

Summary Members' call on Oct 17:

Primary Issue: Backwards compatibility between versions 1.1 and 1.2 needs to be formally documented.
Core Problem: Some changes in version 1.1 were considered breaking changes, raising concerns about compatibility.
Divergent Views: Members disagreed on what constitutes a breaking change and how to document these criteria.
Final Agreement: The group will create formal documentation defining breaking changes and the backward compatibility process.
Action Items:

@shawnalpay shawnalpay added the 1.2 consideration To be considered for release 1.2 label Oct 21, 2024
@shawnalpay shawnalpay added the needs work item Needs an issue that adheres to the Work Item issue template, prior to consideration by stakeholders label Oct 24, 2024
@shawnalpay
Copy link
Contributor

@AWS-ZachErdman (cc @ahullah and @rileyjenk)
Defining and aligning on this issue is quite important to moving forward on a few other issues currently up for 1.2 consideration, like #540 and #557. Have you had a chance to move this one forward yet? Let's discuss soon.

@jpradocueva
Copy link
Contributor

jpradocueva commented Nov 2, 2024

Action Items from Maintainers' call on Oct 21:

[#578] Zach @AWS-ZachErdman to present a draft backward compatibility definition in the next meeting.

Comments from Members' call on Oct 31:

Analysis:
This topic involves establishing a formal definition and approach to backward compatibility for FOCUS releases. The team needs to outline principles around maintaining compatibility across versions to ensure that existing implementations aren’t disrupted by updates. This is particularly important as more organizations adopt FOCUS, requiring predictable upgrade paths and minimized disruption for legacy implementations.
Agreements:
Prioritize defining clear guidelines for backward compatibility to support stable versioning and adoption by practitioners.

@jpradocueva
Copy link
Contributor

Notes from the Maintainers' call on November 4:

Context: Backward compatibility principles are essential for ensuring future spec updates do not disrupt existing implementations. This item aims to formalize compatibility guidelines to prevent potential disruptions.
Level of Effort Required: High — Defining backward compatibility requires thorough planning and agreement across the specification to account for all potential future changes.

@shawnalpay
Copy link
Contributor

#643 looks good to me! @AWS-ZachErdman, is it alright if I close this issue in favor of that Work Item?

@AWS-ZachErdman
Copy link
Contributor Author

Of course - I'll close it out!

@github-project-automation github-project-automation bot moved this from W.I.P to Closed in FOCUS WG Nov 11, 2024
@AWS-ZachErdman AWS-ZachErdman closed this as not planned Won't fix, can't repro, duplicate, stale Nov 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.2 consideration To be considered for release 1.2 backward compatibility Potentially affects compatibility with past FOCUS releases discussion topic Item or question to be discussed by the community needs work item Needs an issue that adheres to the Work Item issue template, prior to consideration by stakeholders spec process Related to how the spec is produced
Projects
Status: Closed
Development

No branches or pull requests

8 participants