awslabs / awslabs/aws-c-sdkutils

ABI stability, symbol versioning, and as-appropriate SONAME updates

Open
#56 0 comments 0 reactions 0 assignees View on GitHub
needs-triage
Dominant language
C
Stars
9
Forks
26
Avg merge
4h 52m
Merged PRs (30d)
1

Description

### Describe the feature

https://github.com/awslabs/aws-c-sdkutils/blob/f678bda9e21f7217e4bbf35e0d1ea59540687933/CMakeLists.txt#L54 indicates that `aws-c-sdkutils` is not yet ABI stable.

This request is for one (or both) of the following to be done:
1. Appropriate SONAME updates when there are ABI changes (preferably limiting changes)
2. A rather stable ABI and API so that consumers do not need to change very often.

We have a *strong* preference for shared libraries to use symbol versioning as this majorly helps in backwards and forwards compatibility across library and application versions.

### Use Case

Being able to package software that uses `aws-c-sdkutils` as a dependency to be included in Amazon Linux and other Linux distributions.

In order to be packaged for Linux distributions such as Amazon Linux, applications should use shared libraries, and not statically link their dependencies, *especially* if there are multiple applications with the same dependency.

https://github.com/awslabs/mountpoint-s3/ is one example of a package that has an `aws-c-sdkutils` dependency that should be dynamically linked rather than statically, and a request for it to be packaged is fairly popular, see https://github.com/awslabs/mountpoint-s3/issues/442

### Proposed Solution

Immediate ask: `aws-c-sdkutils` project adds ABI compatibility testing, and changes the SONAME of the shared library as needed.

Preferred solution: a decently stable ABI with a library using symbol versioning in order to enhance forwards and backwards compatibility.

This ask would include the dependencies of `aws-c-sdkutils` as well.

### Other Information

This is as much policy as it is any technical work. I can very much send PRs that enable some ABI compatibility checking and enabling symbol versioning, but setting the policy of the project to care about ABI compatibility is not something I can directly do, and must come from maintainers.

### Acknowledgements

- [ ] I may be able to implement this feature request
- [ ] This feature might incur a breaking change

Contributor guide

Open the contributing guide

Research direction

Start with CMakeLists.txt at the referenced line and review how the shared library and its dependencies are built. First get maintainer agreement on ABI policy, symbol versioning, and SONAME changes; done means ABI compatibility testing and appropriate SONAME handling are defined and implemented for the library and its dependencies.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, cmake
Domain
api, build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.