Skip to content

Commit 0288be2

Browse files
committed
Add data model page
1 parent 4985739 commit 0288be2

File tree

2 files changed

+119
-1
lines changed

2 files changed

+119
-1
lines changed

content/pages/data-model.md

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
Title: Apache Trusted Release Data Model
2+
license: https://www.apache.org/licenses/LICENSE-2.0
3+
4+
5+
_This is a discussion and the actual implementation will diverge._
6+
7+
Here is an introduction to the ATR's data model.
8+
9+
> The view here is descriptive of a JSON model, but the implementation will be a combination of filesystem files and subdirs along with a database schema.
10+
11+
## PMCs
12+
13+
Projects are run by a PMC with members and committers, have metadata, vote policy settings, and product lines.
14+
15+
1. Key
16+
2. Project Name
17+
9. Product Lines
18+
4. User role lists:
19+
- PMC Members
20+
- Committers
21+
- Release Managers
22+
5. Public Signing Keys
23+
8. Vote Policy
24+
25+
### Product Lines
26+
27+
One or more product lines with separate releases including the main one. A product line may override PMC vote policy.
28+
29+
1. Key
30+
2. PMC
31+
3. Product Name
32+
4. Latest Version
33+
5. Distribution Channels
34+
8. Vote Policy
35+
9. Release lists:
36+
- Candidates
37+
- Current
38+
- Archived
39+
40+
### Public Signing Keys
41+
42+
Public Signing Keys are stored using the User ID of the owner as the key.
43+
44+
1. User
45+
2. Public Signing Key
46+
3. Type
47+
4. Expiration
48+
49+
### Vote Policy
50+
51+
These are a set of choices which control how a release vote is conducted by the ATR.
52+
53+
1. Mailto Addresses for Emails - defaults to the project dev list, but the PMC can change these and add contacts.
54+
This will be helpful in getting dependent projects to check releases early.
55+
3. Manual Vote Process flag - if this is set then the vote will be completely manual and following policy is ignored.
56+
4. Minimum Number of Hours - the minimum time to run the vote. If set to `0` then wait until 3 +1 votes and more +1 than -1.
57+
5. Release Checklist - markdown text describing how to test release candidates.
58+
6. Pause for RM check if any -1 votes flag - normally when the vote passes we proceed to the next steps,
59+
but we should allow the RM a chance to confirm if a -1 vote should stop the release.
60+
61+
## Releases
62+
63+
Releases are related groups of packages. Candidate releases go through stages and these have phases.
64+
When approved to be released the stage is moved to current.
65+
Current releases have initial phases to distribute and announce the release.
66+
67+
1. Storage key
68+
2. Stage
69+
3. Phase
70+
4. PMC
71+
5. Product Line
72+
6. Package Managers
73+
3. Version
74+
5. Packages - List of triples of file, signature, and checksum that are the downloadable components of a release.
75+
> Should we use Artifacts instead of Packages?
76+
6. SBOMs - in an acceptable SBOM format and maintained in Phases using standard Python libraries.
77+
8. Vote Policy
78+
5. Votes
79+
- Pass or Fail
80+
- Summary
81+
- Binding votes
82+
- Community votes
83+
- Start
84+
- End
85+
86+
## Distribution Channels
87+
88+
Distribution channels are where PMCs distribute release packages. These need to be defined in the ATR.
89+
Distribution channels may be for test packages. Package Managers will be automated over time.
90+
91+
1. Name
92+
2. Key
93+
3. URL
94+
4. Credentials
95+
5. Is Test?
96+
6. Automation endpoint
97+
98+
## User Roles
99+
100+
Multiple roles are possible and available actions are composed. Empty cells denote "no".
101+
102+
| Activity | PMC Member | Release Manager | Committer | Visitor | ASF Member | SysAdmin
103+
| ---------- | ---------- | --------------- | --------- | ------- | ---------- | -----
104+
| binding vote | yes | | | | |
105+
| vote | yes | yes | yes | yes | yes |
106+
| release admin | yes | yes | | | | yes
107+
| project admin | yes | | | | | yes
108+
| product admin | yes | | | | | yes
109+
| manage key | yes | yes | | | |
110+
| run phase | yes | yes | | | | yes
111+
| channel admin | | | | | | yes
112+
| view release events | yes | yes | yes | yes | yes | yes
113+
| view project events | yes | yes | yes | yes | yes | yes
114+
| search all events | | | | | yes | yes
115+
116+
> To vote _visitors_ must provide PII and we need to explain how we are protecting their privacy.
117+
118+
> The authorization and authentication for `GitHub PATs` will be specific and fine-grained, but should be similar to a "release manager"

content/pages/platform.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ https://releases.apache.org
1313
1. Release Storage. A large filesystem with folders for each release's files.
1414
2. Metadata Database. A database on the server with the metadata schema.
1515

16-
See [Data Model](https://github.com/apache/tooling-docs/blob/main/apache-trusted-release/data-model.md) for a discussion of the objects managed by the ATR.
16+
See [Data Model](data-model.html) for a discussion of the objects managed by the ATR.
1717

1818
## Web Service
1919

0 commit comments

Comments
 (0)