API 안정성 및 릴리스 유형
API 안정성
Koin 프로젝트는 버전 간에 높은 수준의 호환성을 유지하기 위해 노력하고 있습니다. Kotzilla 팀과 모든 활성 유지보수 담당자들은 새 릴리스에 도입되는 변경 사항, 개선 사항 또는 최적화가 기존 애플리케이션을 손상시키지 않도록 노력하고 있습니다. 저희는 안정적이고 예측 가능한 업그레이드 경로가 사용자에게 중요하다는 것을 이해하며, API를 발전시킬 때 발생할 수 있는 중단을 최소화하기 위해 노력합니다.
실험적 API - @KoinExperimentalAPI
혁신을 촉진하고 동시에 귀중한 커뮤니티 피드백을 수집하기 위해, 새로운 기능과 API를 @KoinExperimentalAPI
애너테이션으로 도입합니다. 이 지정은 다음을 나타냅니다:
- 활발한 개발 중: 해당 API는 아직 설계 단계에 있으며 변경될 수 있습니다.
- 피드백 권장: 개발자들이 이러한 기능을 테스트하고 경험을 공유하여, 설계 개선 및 향상에 도움을 주시도록 권장합니다.
- 잠재적 호환성 파괴 변경: 이러한 API는 실험적이므로, 커뮤니티 의견을 바탕으로 반복 작업함에 따라 후속 릴리스에서 수정되거나 제거될 수 있습니다.
사용 중단 정책 - @Deprecated
API의 일부가 단계적으로 폐기될 때 원활한 전환을 보장하기 위해 Koin은 @Deprecated
애너테이션을 사용하여 해당 영역을 명확하게 표시합니다. 당사의 사용 중단 전략에는 다음이 포함됩니다:
명확한 경고: 사용 중단된 API는 권장되는 대안 또는 사용 중단 이유를 나타내는 메시지와 함께 제공됩니다.
사용 중단 수준:
- 경고: 해당 API가 여전히 사용 가능하지만, 사용이 권장되지 않으며 가능한 한 빨리 교체해야 함을 나타냅니다.
- 오류: 해당 API가 더 이상 사용되지 않으며 컴파일되지 않을 것임을 나타내어, 중요한 변경 사항이 즉시 처리되도록 보장합니다.
이 접근 방식은 개발자들이 오래된 API에 의존하는 코드를 식별하고 업데이트하여 기술 부채를 줄이고 더 깔끔하고 견고한 코드베이스를 위한 길을 열도록 돕습니다. ReplaceWith
는 업데이트의 복잡성에 따라 API와 함께 제공될 수 있습니다.
내부 API - @KoinInternalAPI
Koin 프레임워크 내에서 내부적으로만 사용하도록 엄격히 의도된 기능의 경우, @KoinInternalAPI
애너테이션을 도입합니다. 이러한 API는 공개 계약의 일부가 아니며 다음을 따릅니다:
- 내부 전용: Koin의 내부 메커니즘을 위해서만 설계되었습니다.
- 변경될 수 있음: 사전 통지 없이 향후 릴리스에서 수정되거나 제거될 수 있습니다.
- 외부 사용 자제: 장기적인 호환성을 유지하기 위해 개발자들이 애플리케이션 코드에서 이러한 API를 사용하는 것을 권장하지 않습니다.
Kotlin의 @OptIn
애너테이션으로 옵트인(Opting In)
Koin에서 실험적 및 사용 중단된 API 사용은 모두 옵트인을 요구하며, 이는 개발자가 API의 상태와 잠재적 위험을 완전히 인지하도록 보장합니다. Kotlin의 @OptIn
애너테이션을 사용함으로써, 귀하의 코드가 실험적이거나 사용 중단 예정으로 표시된 API에 의존하고 있음을 명시적으로 인정하는 것입니다.
릴리스 유형
Koin은 각 릴리스의 성숙도와 의도된 사용을 나타내는 추가 접두사 식별자를 사용하여 시맨틱 버저닝(SemVer)을 따릅니다. 우리가 사용하는 접두사는 다음과 같습니다:
- 릴리스 후보 (RC): 이 릴리스는 안정 버전을 위한 기능 완성 후보입니다. 최종 테스트 및 개선 과정을 거칩니다. RC 버전은 높은 호환성을 목표로 하지만, 공식 릴리스 전 최종 피드백에 따라 사소한 변경이 여전히 발생할 수 있습니다.
- 알파 / 베타: 알파 및 베타 버전은 주로 테스트 및 피드백을 위해 제공됩니다. 이들은 종종 실험적 기능을 포함하며, 안정적인 API 보장을 완전히 따르지 않을 수 있습니다. 개발자들은 잠재적 문제를 식별하고 향후 개선 사항을 안내하는 데 도움을 주기 위해 비프로덕션 환경에서 이러한 릴리스를 사용해 볼 것을 권장합니다.