-
Notifications
You must be signed in to change notification settings - Fork 517
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding an AIP to introduce versioning, to help API authors point at older AIP guidance as it evolves.
- Loading branch information
1 parent
3845935
commit eeb1f04
Showing
1 changed file
with
45 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
id: 3 | ||
state: approved | ||
created: 2023-03-28 | ||
placement: | ||
category: meta | ||
order: 30 | ||
--- | ||
|
||
# AIP Versioning | ||
|
||
This AIP defines the versioning scheme of the AIPs. | ||
|
||
## Guidance | ||
|
||
- The AIPs **must** be versioned by date, using the [ISO-8601 format of | ||
`YYYY-MM-DD`](https://www.w3.org/TR/NOTE-datetime), that corresponds to the | ||
date the version was added. | ||
- AIPs versions **must** be available as a tag on the source control system used | ||
to store the AIPs, of the format `v{version}`. Example: `v2023-03-28`. | ||
- The AIPs **must** have a new version when there is a significant change to one | ||
or more AIPs. | ||
- Each AIP **must** include a changelog section, with the date the change was | ||
made and a short description. | ||
|
||
## Rationale | ||
|
||
Versions serve as reference points to AIPs at a specific point in time. They are | ||
crucial since guidance on an AIP can be reversed, or include significant changes | ||
such that they are no longer similar to the original design. APIs using AIPs may | ||
need to reference older AIP guidance to justify their design choice. | ||
|
||
### Rationale for date-based versioning | ||
|
||
With date-based versioning, a client can easily find the AIP guidance at the | ||
time an API was authored. | ||
|
||
### Why not individually versioned AIPs | ||
|
||
An alternative to a universal version is to have specific versions attached to | ||
each AIP. | ||
|
||
AIPs often cross-reference one another. If each AIP had a specific version, then | ||
cross-references would also have to specify specific versions of those | ||
referenced AIPs to provide complete guidance. |