Closed hdamker closed 3 weeks ago
How to group repositories within Github:
Transfering to https://github.com/camaraproject/ReleaseManagement
I think I like the idea of “API family working groups” as it would enable the same group of people working on APIs in the same “domain” even if they are not closely related.
I also like the idea of sub project only including one or a few APIs that are closely related. Makes sense.
I read between the lines that an “API family working group” could handle several sub projects.
What it does not address (from what I can see) is challenge of the repository release number vs the version of the individual APIs in the repository. As an example:
Device Location. Repository release 0.2 will include
This has previously lead to confusion for those APIs that have not the same version as the repository version. This could very well happen in the future when APIs mature. Say that in the future it is only one of the APIs that would have changes in a repository release. Something like (hypothetical example) Location Verification API goes to 2.0 (non backward compatible change). The whole “repo” should make increase a major version as well? And then Location Retrieval API goes 2.0 – also a non backward compatible change. Now “repo” is not backward compatible with “repo 2.0” state, should it be 3.0 now?
Device Location (repository) | 1.0 | 1.1 | 1.2 | 1.1 | 1.5 | 2.0? | 3.0? |
Location Verification API | 1.0 | 1.0 | 1.1 | 1.1 | 1.1 | 2.0 | 2.0 |
Location Retrieval API | 1.0 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 2.2 |
Geofencing API | 1.0 | 1.0 | 1.0 | 1.1 | 1.1 | 1.1 | 1.1 |
New API | - | - | - | - | 0.1 | 0.1 | 0.1 |
Another example As of now SimSwap group has 2 APIs inside:
These two APIs expected to be rather loosely coupled: right now for the whole group version 0.4.0 is released, and this release does not include event notification API at all. Following the suggested approach: these two APIs must be split into two subprojects/repos. This solves versioning issue.
What I’m not sure about is – there is no common umbrella like “SimSwap” for them anymore:
For the mismatch of release number and API :
As long as the release is sequential then it does not need to be a number. So it could be a date (like e.g. Gaia-X releases) or (like Android releases), names with ascending initial letter. E.g. The Android Lollipop release encapsulated multiple libraries all with different versions.
The release management process now decouples the release numbering from the API version numbering. It is also allowed to release closely related APIs together in one release under certain conditions if these APIs are not split out into individual repositories. The recommendation is to move this issue for the discussion on use of working groups for API families / groupings to the Governance project @hdamker
Closing as discussed within TSC June 6th (Replaced by #142).
Introduction
Addressing the topic of “API Families” vs “APIs” seems to be prerequisite for a proper release management. It is also addresses observed concerns to onboard new API proposals as independent sub projects (due to the number of projects and its overhead and the risk of “API islands”).
The proposal below is derived from the presentation held within the TSC Meeting on Nov 2nd, 2023. It is related to camaraproject/ReleaseManagement#4 and the consolidation sssue for open points release management camaraproject/Governance#67 in Commonalities.
Problem description
CAMARA has currently a very heterogenous structure, one release management solution would not fit for all:
Proposal
The proposal is to restrict the scope of a Sub Project to the development of one API or a few closely related APIs which have the same life cycle. Work across multiple APIs which should be maintained together due to their dependencies ("API Families" or categories of APIs) should be done within a Working Group.
An “API Family” working group
Sub projects will manage only one or few very closely related APIs with same release cycles
Benefits of this proposal
Possible next steps
Note: not all API sub projects need immediately moved into a working group – well running projects shouldn’t be disturbed.