I said before WWDC this year that my biggest hope for the conference was that Apple would announce first class support for the Swift Package Manager. I got my wish, and I was very happy to see my hopes turned into reality during the opening keynotes on Monday.
Widespread adoption of a single package manager tool for Swift can only be a good thing. Given that the Swift Package Manager is decentralised, an important piece of that adoption will be to have a really great way to find packages.
That’s what I’ve been working on for the last few weeks. It’s far from perfect but it’s ready enough that I’d love to start getting your feedback on it.
Introducing, the SwiftPM Library! It’s a Swift Package Manager search engine. There’s more information here but it should be fairly obvious what it does and how to use it.
Picking the right dependencies to add to your project is hard, and that’s what the SwiftPM Library aims to help with. There’s much more to do on that side of things, but I’m already analysing the Package.swift file, any relevant Xcode project files inside the library and the git history for each package to make sure that the search results recommend the best quality libraries first. I want to make it easy for you to make great decisions about what dependencies to use.
What about the GitHub Package Registry?
Yes, I know it’s coming, and it’ll probably kill this little project of mine dead. 😬 That said, I still went ahead and built this.
CocoaPods Quality Index
The idea for the SwiftPM Library was very much inspired by the CocoaPods Quality Index and the old quality based search that used to power their home page. Unfortunately this metadata is no longer being updated or reported by CocoaPods, but the idea behind my site can be directly traced back to that idea.
I want to publicly thank everyone who was, and continues to be involved with CocoaPods for everything they have done for the community. 🙏
What can this become?
Right now, the site is quite basic. Package search results are being ordered by a “package quality” type score, but it’s fairly rudimentary so far. This aspect of the site is where I see a huge potential for expansion. There are so many possibilities for building an incredible set of metrics to identify mature and reliable dependencies.
What I have right now is a really solid foundation though. I’m cloning repositories, extracting metadata, finding the right Xcode project file if it exists, inspecting git history and running other checks past it. Adding more metadata and scoring parameters from there is the easy bit, and that’s what comes next.
So please add your packages, and play with it. Let me know what you think, and if you have any feature requests (I’m sure you do!) then I’ve made a public roadmap Trello board which I’d love your contributions, discussions and votes on.
Thanks for reading this far! Also, thank you so much if you gave me feedback or encouragement on the idea, and whether to build it. Or if you helped test the site in the last week or so while I’ve been ironing out a few problems.
I’d also love to thank Toby Herbert and Chris Tucker Mear for their help in bringing my Rails skills back from the brink of extinction! 😂
No matter what becomes popular or not, I’ve had a ton of fun building it so far, and that’s mainly what matters. 🎉
Do you want to make a comment? Talk to me on Twitter instead.