I'm Krishna Babani, and I study Software Engineering at San Jose State University. I look forward to participate in GSoC for the very first time. I'm interested in working on the "Customizable package templates" project.
Swift Package Manager is a tool that manages the Swift code distribution. It's developed to simplify the process of managing, distributing, building and downloading the Swift code. Ultimately, resulting into a streamlined and efficient experience. It ensures the correct version of libraries been used across the project, helping developers manage and incorporate dependencies or external libraries into their projects. It complies these dependencies and code automatically with a built-in build system. Lastly, SwiftPM supports the creation and distribution of Swift packages that can be reused by other developers.
Apart from the core responsibilities, SwiftPM offers a command-line interface for running tests, creating a new package, adding dependencies, etc.
Currently, SwiftPM offers hard-coded templates in the command-line in order to create new packages, but developers may want the "customizable package template" option for several reasons:
- To fulfill their specific requirements, and not being limited to what SwiftPM currently offers. Makes it easy to structure the packages without any constraints.
- Providing a more streamlined and rapid procedure than is presently followed.
- It could help the community by having certain pre-defined structure and configuration.
- Can also include pre-configured CI/CD settings.
I hope to fully comprehend the project's objectives and intended outcomes. At present, I have cloned the SwiftPM repository to my local machine in order to familiarize myself with the code structure and various aspects of the project.
One potential approach to accomplish the goal is to create a new module that enables package template customization. This module would function as an extension, allowing us to avoid altering the existing codebase. Subsequently, we could seamlessly integrate the new module with the SwiftPM command-line tool. However, I am uncertain if this is the optimal direction.
I would greatly appreciate any feedback from the community and mentor @NeoNacho may have, particularly regarding any overlooked aspects or alternative strategies that I have not yet explored.