ROS2 릴리즈 개요
ROS2는 주기적인 릴리즈 사이클을 통해 새로운 기능과 성능 개선을 제공한다. 각 릴리즈는 정기적으로 계획되며, 주로 2년 주기로 장기 지원(LTS, Long-Term Support) 버전과 비-LTS 버전이 번갈아 제공된다. 이러한 릴리즈 주기는 사용자에게 예측 가능성과 안정성을 제공하며, 개발자는 그에 맞춰 소프트웨어를 관리할 수 있다.
LTS와 비-LTS 버전
ROS2의 버전 관리는 크게 두 가지 유형으로 나눌 수 있다. 장기 지원(LTS) 버전과 비-LTS 버전이다.
- LTS 버전: 장기적으로 유지보수되며, 주로 보안 패치와 중요 버그 수정만이 포함된다. LTS 버전은 약 5년간의 지원을 받으며, ROS2 시스템을 안정적으로 운영하려는 사용자에게 적합한다.
- 비-LTS 버전: 최신 기능과 개선 사항을 포함하나, 비교적 짧은 기간 동안 지원된다. 이 버전은 주로 새로운 기능을 테스트하고 개발하는 사용자에게 유리한다.
릴리즈 사이클
ROS2는 새로운 릴리즈가 6개월마다 한 번씩 이루어진다. 이 중 짝수 년에 출시되는 버전은 LTS 버전으로 간주되며, 약 2년간의 일반 지원과 추가 3년간의 유지보수 지원을 받는다. 비-LTS 버전은 1년간 지원을 받으며, 이 기간 동안 새로운 기능 테스트와 개선이 이루어진다.
릴리즈 명명 규칙
ROS2의 릴리즈는 알파벳 순서대로 이름이 부여된다. 예를 들어, ROS2의 릴리즈 이름은 Ardent, Bouncy, Crystal, Dashing, Eloquent, Foxy, Galactic, Humble 등이 있으며, 각 버전은 해당 알파벳의 첫 글자로 시작한다. 이러한 규칙은 사용자가 릴리즈 버전을 쉽게 구분할 수 있도록 돕는다.
버전 관리 체계
ROS2의 버전 관리 체계는 SemVer(Semantic Versioning) 원칙에 따라 이루어진다. 이는 ROS2 버전이 다음과 같이 표현됨을 의미한다:
- MAJOR(주 버전): 호환되지 않는 API 변경이 있을 때 증가한다.
- MINOR(부 버전): 하위 호환성을 유지한 상태에서 새로운 기능이 추가될 때 증가한다.
- PATCH(패치 버전): 하위 호환성을 유지하면서 버그 수정이 이루어질 때 증가한다.
이러한 버전 관리 체계는 개발자가 시스템의 변경 사항을 명확하게 이해하고, 해당 버전이 자신의 프로젝트에 미치는 영향을 쉽게 파악할 수 있도록 설계되었다.
ROS2 버전의 지원 기간
ROS2 릴리즈는 각각 일정 기간 동안 지원을 받으며, 이 기간 동안 기능 업데이트, 보안 패치, 버그 수정 등이 제공된다. 일반적으로 LTS 릴리즈는 2년간의 일반 지원과 추가 3년간의 유지보수 지원을 받으며, 총 5년간 유지된다. 반면 비-LTS 릴리즈는 1년간의 짧은 지원 기간을 갖는다. 이를 통해 ROS2는 최신 기술을 반영하면서도 안정성을 유지할 수 있도록 설계되었다.
ROS2 버전 간의 호환성
ROS2는 버전 간 호환성을 최대한 유지하려는 노력을 기울이다. 그러나 MAJOR 버전의 업데이트가 이루어질 때, 즉 큰 변화가 있을 경우 기존의 ROS2 패키지나 노드가 새로운 버전에서 호환되지 않을 수 있다. 이를 해결하기 위해서는 각 버전의 릴리즈 노트를 참고하여 호환성을 확인하고, 필요한 경우 코드를 업데이트하는 과정이 필요하다.
- ROS2 패키지 간 호환성: 각 패키지는 특정 버전의 ROS2에서 정상적으로 동작하도록 설계되지만, MAJOR 버전이 업데이트될 때는 호환성 문제가 발생할 수 있다. 이러한 문제를 방지하기 위해 패키지 의존성을 명확히 정의하고, ROS2 릴리즈 사이클에 맞춰 패키지를 업데이트해야 한다.
ROS2의 릴리즈 도구
ROS2의 릴리즈는 일반적으로 다양한 자동화 도구를 통해 관리된다. 이러한 도구들은 ROS2 커뮤니티와 개발자들이 릴리즈 과정을 더 효율적으로 관리하고, 릴리즈 주기를 따라갈 수 있도록 돕는다.
- bloom: ROS 패키지 배포 자동화를 지원하는 도구로, 사용자는 이를 통해 패키지를 쉽게 릴리즈할 수 있다.
- rosdistro: ROS 및 ROS2 패키지 배포를 관리하는 데이터베이스로, 각 버전의 패키지 정보를 저장하고 관리한다.
- release repositories: 각 패키지의 릴리즈된 버전이 저장되는 저장소로, 사용자는 이를 통해 안정적인 버전의 패키지를 사용할 수 있다.
이러한 도구들을 사용하여 패키지를 릴리즈하면, ROS2 생태계 내에서 안정적인 패키지 관리와 배포가 가능해진다.