We use only cocoapods for all of our iOS app’s dependencies and the Omise SDK is the only one using Carthage. Is there a specific reason to why?
We believe the CocoaPods’ approach is fundamentally flawed. It assumes knowledge of
Xcode internals which made it very fragile and breaks for every other Xcode version. We
have encountered numerous such problems in the past on Omise’s internal projects, our SDK
and many from our customers. Each issue is a new situation in itself and each one consumes
a lot of our engineers’ and support staffs’ time. Not only that, but we have actually
seen Apple Engineers at WWDC who had to spend hours fixing various build issues from
iOS Developers at the event which were caused purely by CocoaPods itself.
We believe our focus are better spent on improving the core product rather than trying to
fix the never-ending build problems and fighting against the proprietary Xcode build
system. This is why we have switched to Carthage, which are more humble with respect to
this and do not attempt go against tide unnecessarily. Additionally it is decentralized and is more
secure and scalable as a result. Since we’ve made the switch, we have yet to see a single build issue.
Carthage does not prevent you from using it alongside CocoaPods so we believe this should
not pose a problem. Both systems can coexist peacefully. We will switch to
https://swift.org/package-manager/ if and when it is stable enough.
Good to know! Thanks for sharing. I think we’ll have a deeper look into Carthage and Cocoapods moving forward.