awslabs / aws-sdk-swift

Apache License 2.0
403 stars 80 forks source link

Improve local developer experience with using the aws-sdk-swift Package #821

Open epau opened 1 year ago

epau commented 1 year ago

Describe the feature

The aws-sdk-swift swift package is large (currently contains ~335+ products) since we create a product for each service. All of the code for all services is downloaded and added as part of the package even if a customer only wishes to use one or two services. This can causes a few issues that can be quite frustrating.

Ideally, only code for the selected services would be provided to the customer.

Use Case

N/A

Proposed Solution

Provide downloadable xcframeworks for each service module

We can produce xcframework artifacts for each service module and provide a way to access them. Perhaps even attached to the release in github. Then folks that want to have a better local development experience, can, by downloading and adding the specific service frameworks they want.

Develop our own package registry

With swift 5.7, SPM supports package registry services (rather than just supporting git) This is a pretty large undertaking and would include a significant cost to maintain the service. That being said, it would remove our dependency on github and allow each service to be their own package. Customers would add each individual service package to their project, rather than just adding the aws-sdk-swift package and selecting the products.

Storing each service in it's own git repo

Pretty straightforward and self explanatory. I believe this is unrealistic but wanted to include for completeness. Each service would have it's own git repo where the corresponding service code and Package manifest would be stored. Customers would add each individual service package to their project, rather than just adding the aws-sdk-swift package and selecting the products.

Other Information

No response

Acknowledgements

luiabrah commented 1 year ago

I think the xcframeworks solution would only work on those developing on macOS and we may be leaving out those who develop on Linux or other platforms.