camaraproject / Governance

Telco network capabilities exposed through APIs provide a large benefit for customers. By simplifying telco network complexity with APIs and making the APIs available across telco networks and countries, CAMARA enables easy and seamless access.
53 stars 44 forks source link

Proposal to establish API Families as Working Groups across API Sub Projects #135

Closed hdamker closed 3 weeks ago

hdamker commented 7 months ago

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.

hdamker commented 7 months ago

How to group repositories within Github:

hdamker commented 7 months ago

Transfering to https://github.com/camaraproject/ReleaseManagement

Bart-Ericsson commented 7 months ago

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:

  1. GetDate and CheckSimSwap are described as a single API with two endpoints (this is questionable, but this is so).
  2. event notifications - separate swagger file, not yet merged to the master.

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:

Kevsy commented 7 months ago

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.

tanjadegroot commented 1 month ago

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

hdamker commented 3 weeks ago

Closing as discussed within TSC June 6th (Replaced by #142).