Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CocoaPods at Square

CocoaPods at Square

A Peek Into iOS Engineering at Square

4e264a4ba35b07be0661565fa5e75b81?s=128

Brian Partridge

June 09, 2015
Tweet

Transcript

  1. CocoaPods at Square BRIAN PARTRIDGE Register Team

  2. REGISTER CASH CAVIAR CUSTOMER DISPLAY INTERNAL

  3. Register Dependencies

  4. Register Dependencies SquareCore SquareData PonyExpress Protocol Buffers Register

  5. Register Dependencies SquareCore Register SquareData PonyExpress Protocol Buffers Hardware

  6. Register Dependencies SquareCore Register SquareData PonyExpress Protocol Buffers Hardware

  7. Register Dependencies SquareCore Register SquareData PonyExpress Protocol Buffers Hardware

  8. Register Dependencies SquareData SquareCore PonyExpress Hardware Protocol Buffers Register

  9. Register Dependencies SquareData SquareCore PonyExpress Hardware Protocol Buffers Register KIF

    OCMock
  10. Register Dependencies SquareData SquareCore PonyExpress Hardware Protocol Buffers Register PonyDebugger

    Reveal KIF OCMock
  11. Register Dependencies SquareData SquareCore PonyExpress Hardware Protocol Buffers Register PonyDebugger

    Reveal Crashlytics KIF OCMock
  12. Dependency Management

  13. In the dark times… Submodules Requires manipulating opaque SHAs. Vessel

    Internal tools for linking dependencies.
  14. In the dark times… Slow Builds Xcode has to build

    each target. Release Management Managing branches in multiple repositories. Lost Engineer Time 15 hours a week.
  15. In the dark times… Slow Builds Xcode has to build

    each target. Release Management Managing branches in multiple repositories. Lost Engineer Time 15 hours a week. There’s got to be a better way…
  16. The Hunt VESSEL & SUBMODULES VESSEL & SUBTREES COCOAPODS CARTHAGE

    MAVEN/GRADLE Auto Download Dependencies Auto Build Config Dependency Versioning Nested Dependencies Diamond Dependencies Conflict Detection Tools & iOS Support Team Opinion Workflow Impact
  17. CocoaPods Semantic Versioning Meaningful version numbers. a1b2c3d4… vs 1.23.45 Dependency

    Resolution Diamond dependencies are no longer surprises. Supports Libraries Does not require Frameworks. Extensibility Plugins and scripting.
  18. Podification

  19. Methodology Bottom Up Start at the leaves. Start Small Smaller

    apps with fewer dependencies. Tests Transition test targets to consume pods first. Tests@2x Use tests for validation of generated podspecs.
  20. Challenges Partial Podification Making Vessel and CocoaPods work together. Code

    Generation Protocol buffer bindings. Concurrent Development Developing a pod alongside a consumer.
  21. REGISTER CASH CAVIAR CUSTOMER DISPLAY INTERNAL

  22. Future Faster Builds Caching build artifacts from for use as

    binary pods. Plugins Podfile.local replacement.
  23. bp@squareup.com @brianpartridge