Swifter {Swift Developer}

메뉴

CocoaPods와 Carthage의 차이점

Cocoa 관련 라이브러리 의존성 관리로 CocoaPods가 사실상 없는 상태였지만, 지난 11월에 새로운 라이브러리 의존성 관리 시스템 Carthage가 나왔습니다. 이 시점에서 CocoaPods는 아직까지 Swift를 대응이 늦고 있었습니다. 하지만 CocoaPods도 Swift 대응이 0.36베타가 크리스마스 때 출시되어 Swift라이브러리를 사용할 수 있는 상태로 되어가고 있었습니다.

이런 상황에서 각각의 차이점에 대해서 조사하면서 Carthage의 README ‘Differences between Carthage and CocoaPods’항목이 재미있어 번역해 봅니다.

CocoaPods와 Carthage의 차이점

https://github.com/Carthage/Carthage/blob/master/README.md

CocoaPods is a long=standing dependency manager for Cocoa. So why was Carthage created?

CocoaPods는 오랫동안 Cocoa 종속적 관리 매니저였습니다. 그런데 왜 Carthage를 만든 것일까요?

우선 첫번째, CocoaPods는 기본적으로 자동으로 앱에 대한 Xocde 워크스페이스와 모든 종속성을 만들고 업데이트합니다. Carthage는 프레임웍 바이너리를 xcodebuild를 사용하여 빌드되지만, 프로젝트에 통합까지는 하지 않고 통합 작업은 사용자에게 맡기고 있습니다. CocoaPods 접근은 사용자에게 친숙하지만, Carthage측은 유연하고 강요하지 않는 방법입니다.

CocoaPods 목표는 README에 다음과 같이 적혀 있습니다. CocoaPods 목표는 더 중앙집중적인 에코시스템을 만드는 것으로 타사의 오픈소스 라이브러리를 더 쉽게 찾고 관련성을 해결해나가는 것입니다.

대조적으로 Carthage는 반 중앙집중식 관리 매니저입니다. Carthage에는 프로젝트 목록이 없습니다. 이는 유지보수 작업의 부담을 줄여 오류지점을 없앨 수 있습니다. 그러나 프로젝트를 찾는 작업은 어렵습니다. 사용자는 Github 트렌딩 페이지를 정렬하거나 유사한 방법으로 프로젝트를 찾아야 합니다.

CocoaPods 프로젝트는 podspec file로 알려진 구조를 가지고 있고, 그 파일에 프로젝트 및 빌드 방법의 정의등 메타 데이터가 포함되어 있습니다. Carthage의존을 빌드할 떄 하나의 작업 공간에 프로젝트를 통합하는 대신에 xcodebuild를 사용합니다. 그래서 그런 사양의 파일이 필요하지 않습니다. 그러나, 프로젝트를 어떻게 빌드하는 종속성은 프로젝트 자체의 Xcode프로젝트에 포함되어 있어야 합니다.

결국, 우리는 우리가 가장 간단한 의존 관리 매니저를 원해서 만들었습니다. Xcode역할을 뺴앗지 않고 프레임웍의 작성자에게 불필요한 일을 늘리지 않고 실행되는 간단한 것들입니다. CocoaPods은 놀랍게도 많은 기능을 제공합니다. 다만 그 대신 복잡성이 증가하는 대가를 치르고 있습니다.

테스트해본 느낌

Carthage은 단순하게 빨리 동적인 프레임웍을 지원하는 의존 관리 시스템뿐만 아니라, CocoaPods에 대한 명확한 불만에서 태어났다는 점을 목표로 하고 있는 의존 관리 시스템임을 알 수 있습니다. 다른 것에서 할 수 있는 다른 것을 맡겨 단순하게 유지하는 Carthage와 모든 것을 첨부하여 뭐든지 할 수 있는 CocoaPods라고 말하고 싶습니다.

필자도 Carthage를 사용해보았지만, 분명히 작업공간이 없는 Xcode구조를 그대로 사용하여 이동할 수 있는 점이 간단하고 이상하게 오류가 나는 것도 적을 것 같아 좋다고 판단됩니다. 하지만, 이미 CocoaPods가 대중적으로 사용되고 있어 CocoaPods밖에 없는 라이브러리에 의존하면 결국 작업공간이 필요하다는 점은 신경이 쓰입니다. (물론 직접 포크하고 Carthage에 대응시키고 PR 응답을 해달라는 것은 가능)

또는 Reactive Cocoa가 Carthage킬할 수 있는 라이브러리가 단번에 보급될지가 관건일듯 보여집니다.

 

Facebook Comments

카테고리:   Swift

댓글

죄송하지만 댓글은 닫혀 있습니다.