Cocoa Controls, for those of you just tuning in, offers Cocoa developers a curated database of open source and commercial components for your iOS and OS X projects.
I had the opportunity to attend the Business of Software conference in Boston this year. There, I had the pleasure of meeting Jonathan Penn, the proprietor of Cocoa Manifest and an all around great guy. We had a great talk about features I was thinking of adding to Cocoa Controls. One, in particular, that we spent a good deal of time talking about was adding support to the site for CocoaPods. Jonathan thought this would be a fantastic addition to the site, and I’ve been meaning to add it ever since.
If you’ve ever used library dependencies in your Cocoa projects, you’ve probably employed one of the following methods:
- Submodules – they can be cumbersome, prone to breaking and exceedingly difficult to manage.
- Zipballs – In other words, downloading a zipball from GitHub and manually adding it to your project. GitHub’s zipball export process is nice enough to include the short SHA1 hash in the zipball’s name, giving you a poor, but effective method of library versioning.
- CocoaPods – CocoaPods gives you robust dependency management, a separate .xcodeproj with all of your libraries, and even an easy way to generate a credits/licenses file from your dependencies. In other words, it’s the best of all worlds.
The one thing I’ve always wanted to see CocoaPods do better at is providing a more robust browsing mechanism than the GitHub file browser page for their Specs repo. No disrespect meant towards Eloy Durán or anyone else affiliated with the project. I think they’ve done amazing work. I just want…more.
And that’s where Cocoa Controls comes in. I’ve added a new section to the site where you can browse all available CocoaPods, and view ARC requirements and OS deployment targets. For projects that are already listed on Cocoa Controls (such as Gabriel Handford’s CaptureRecord project, or Oliver Drobnik’s DTCoreText), you’ll find a new section with the necessary information to add it to your Podfile:
Let me know what you think. I’m sure there are a number of additional features that could be added to this integration, and I’d love to know what direction you think this should take.