

원문: React Native Firebase: One True Version
react-native-firebase 버전은 어떻게 배포되고, breaking changes는 어떻게 핸들링 해야 하는지에 대해.
v5는 당장 마이그레이션이 필요한 구 버전이며, "현재 버전 관리 방법' 섹션으로 바로 건너 뛰면 된다. v5는 One True Version을 사용했기 때문에, 일부 사람들은 'history'라고 생각하는 것이 실제로는 '그 일이 일어났다는 것을 깨닫지 못할 정도로 오랫동안 무시한 것'일 정도로 지나치게 미뤄졌다. 이것이 여전히 v5를 사용하는 유일한 이점일 수는 있다.
(글이 작성된 2021년 3월 10일 기준 early releases)
'독립적으로 버전을 관리'한다. 예를 들어, analytics의 버전은 현재 버전으로 계속 유지되면서도 다른 특정 앱 패키지가 새로운 버전 번호로 릴리즈 될 수 있다. 이러한 배포 방식은 기술적으로는 문제 없지만, 어떤 패키지가 어떤 패키지와 함께 동작할 수 있는지? 내가 사용 중인 버전을 어떻게 전달해야할지? 하는 실용적인 부분에서는 약간 엉망으로 보일 수 있다.
근간이 되는 Android용 기본 라이브러리로, Google Firebase 팀에서 제공한다. 이 프로젝트는 여전히 각 모듈에 대해 독립적인 버전 관리를 사용하지만, 최근 하나의 번호로 가지고 있는 모든 버전을 명기할 수 있는 One True Version이 포함된 'Bill of Materials(BoM)' 파일을 제공하기 시작했다. (예시: firebase-android-sdk v26.6.0)
근간이 되는 iOS용 기본 라이브러리로, Google Firebase 팀에서 제공한다. 이 프로젝트는 독립적인 버전 관리를 사용해 왔지만, 사용자 피드백을 받은 후 One True Version으로 스타일을 변경했다. 따라서 firebase-ios-sdk v7.7.0과 같은 하나의 번호로 버전을 설명할 수 있다.
이것이 예전에는 어떻게 설명되어 왔는지(독립 버전. 그럼 내가 지금 사용하고 있는 버전을 어떻게 알 수 있나요? 어떤 버전과 어떤 버전을 같이 사용해야 동작하나요?) 그리고 기본 native iOS와 Android SDKs는 지금 어떻게 관리되는지(One True Version)에 대한 history이다.
react-native-firebase v10 릴리즈의 경우, firebase-ios-sdk가 One True Version으로 전환되는 것을 보고 이 방식이 더 낫다는 합의가 있었다.
모든 릴리즈가 통합되고, 모든 패키지의 버전이 One True Version으로 관리되며, 모든 릴리즈 노트를 한 곳에 통합하도록 릴리즈 정책을 변경했다. 이제 어떤 버전들이 함께 작동하는지를 알 수 있고, 사용 중인 버전을 쉽게 전달할 수 있으며, 릴리즈 정보를 확인할 수 있는 곳은 한 곳뿐이다. (이 정책 변경이 마음에 들기를!)
앞으로 어떤 버전을 배포할지는 어떻게 결정하나요? 간단하게 답하자면, semantic 버전 규칙을 엄격히 따르도록 최선을 다한다.
x.x.N+1 릴리즈. (더 이상의 고민은 필요 없다)x.N+1.0 릴리즈. 제대로 작동하는지 확인해야 한다.N+1.x.x 릴리즈가 된다. 릴리즈 노트를 반드시 확인하길!최신 버전은 이미 v10을 넘어섰다. (글 작성 시점 기준 v11+)
breaking changes를 릴리즈하는 것을 주저하지 않으므로 메이저 버전은 상당히 빨리 바뀔 수도 있지만, 메이저 버전의 변경이니만큼 항상 주의 깊게 확인해야 할 것이다.
Breaking change는 불가피한 부산물이지만, breaking changes가 생겼을 때 실망스러울 수 있음을 당연히 이해한다. 버전 업그레이드를 처리하는 데 필요한 정보를 쉽게 얻을 수 있도록 노력한다.
CHANGELOG의 커밋 내역 및 릴리즈 노트를 통해 '정확히 어떤 조치를 취해야 하는지'에 대한 정보를 breaking change 릴리즈에 포함시킬 것이다. 이 정보를 사용하면 버전 업그레이드를 쉽게 처리할 수 있을 것이다.
다음은 v11.0.0 릴리즈의 breaking changes를 어떻게 전달하는지를 보여주는 스크린샷이다.

functions 항목에 breaking change가 있는 것을 볼 수 있으며, 필요한 경우 실제 커밋을 추적할 수 있다. 그리고 firebase-ios-sdk와 firebase-android-sdk에 대한 최소 버전 요구 사항이 높아짐에 따른 충돌이 있을 수 있음을 분명히 전달한다. SDK 버전을 기본값에서 override한 경우, 잘 호환되는지 확인하거나 react-native-firebase v11을 채택할 때까지 기다려야 하지만, 둘 중 어느 쪽이든 필요한 작업은 명확하다.
행운을 빕니다!