Skip to content

Commit 0860eb1

Browse files
authored
RFC #76: amaranth-boards versioning policy.
2 parents 98c79d3 + 661e5c2 commit 0860eb1

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
- Start Date: (fill in with date at which the RFC is merged, 2025-05-12)
2+
- RFC PR: [amaranth-lang/rfcs#76](https://github.com/amaranth-lang/rfcs/pull/76)
3+
- Amaranth Issue: [amaranth-lang/amaranth#1595](https://github.com/amaranth-lang/amaranth/issues/1595)
4+
5+
# `amaranth-boards` versioning policy
6+
7+
## Summary
8+
[summary]: #summary
9+
10+
Add a versioning policy for `amaranth-boards`.
11+
12+
## Motivation
13+
[motivation]: #motivation
14+
15+
Packages with direct (e.g. git) dependencies aren't allowed on PyPI, so by not publishing releases on PyPI, we're blocking downstream projects depending on `amaranth-boards` from publishing their releases on PyPi without having to do workarounds.
16+
17+
## Explanation
18+
[guide-level-explanation]: #guide-level-explanation
19+
20+
- Use a `0.x.y` versioning scheme.
21+
- Increment `y` and do a new release any time there's been done significant additions.
22+
- Increment `x`, reset `y` and do a new release any time there are breaking changes.
23+
24+
A breaking change is anything that requires manual intervention for code that previously worked fine.
25+
I.e. a change to a board file which previously had two pins incorrectly swapped would not be a breaking change; a change to names of resources across multiple boards would be.
26+
27+
This should be implemented by automatically releasing every commit to `main` whose HEAD message doesn't contain `[breaking change]` or `[breaking-change]` with a version like `v0.x.y` where `y` is the number of commits since the last breaking change, and automatically tagging every commit that does with a tag `v0.(x+1).0`.
28+
29+
## Drawbacks
30+
[drawbacks]: #drawbacks
31+
32+
None.
33+
34+
## Rationale and alternatives
35+
[rationale-and-alternatives]: #rationale-and-alternatives
36+
37+
`amaranth-boards` is mainly a collection of independent board definitions where most changes consists of adding or updating definitions for one specific target.
38+
39+
Most changes will have none to limited impact on existing code, and a simple policy reducing friction for new additions and fixes is more useful than having a strict deprecation policy with regular major releases.
40+
41+
## Prior art
42+
[prior-art]: #prior-art
43+
44+
None.
45+
46+
## Unresolved questions
47+
[unresolved-questions]: #unresolved-questions
48+
49+
None.
50+
51+
## Future possibilities
52+
[future-possibilities]: #future-possibilities
53+
54+
None.

0 commit comments

Comments
 (0)