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.
Significantly increases indexing time, which eats up CPU resources. (granular levers to disable indexing for a directory do not exist)
Makes it harder to locate specific files as the directory is cluttered with unused services
Makes it harder to find specific code snippets as search results are filled with matching results from unused services
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
[ ] I may be able to implement this feature request
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.
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