- Mockito 핵심 유지관리자가 2026년 3월을 기준으로 약 10년간의 유지관리 역할을 마무리하고, 향후 몇 달간 점진적 권한 이양을 진행할 계획을 밝힘
- 결정의 직접적 계기 중 하나로 JVM 22에서의 에이전트 정책 변경을 언급하며, 보안 목적의 변화 자체는 공감하지만 대안 없는 일방적 전환 요구와 생태계 차원의 고려 부족이 큰 부담으로 작용했음
- 특히 Mockito가 JVM 에이전트의 최대 사용자 중 하나임에도 불구하고, 빌드 도구 지원이나 협업적 논의 없이 문제 해결을 떠안게 된 구조가 자원 소진과 책임 과중으로 이어졌다고 설명함
- 또 다른 요인으로 Kotlin 지원의 구조적 복잡성을 지적하며, Kotlin 특유의 JVM 동작 방식과 불일치한 기능들이 Mockito 내부에 중복 API와 분기 로직을 증가시켜 유지보수를 어렵게 만들고 있음을 밝힘
- 최근에는 Rust 기반 웹 엔진 Servo 작업에서 더 큰 즐거움과 동기를 느끼고 있으며, 제한된 개인 시간을 고려할 때 의무처럼 느껴지는 자원봉사 유지관리 작업을 지속하기 어렵다는 판단에 도달했음을 공유함
10년이라는 마일스톤과 역할 이양 결정
- 2026년 3월로 Mockito 유지관리 10주년을 맞이하며, 해당 시점을 자연스러운 책임 이양의 분기점으로 판단함
- 향후 몇 달간 기존 유지관리자로서 지식 이전과 전환 안정화에 집중할 계획임
- 차기 유지관리 체계와 장기 로드맵 논의는 별도의 GitHub 이슈에서 진행 예정임
JVM 에이전트 정책 변경으로 인한 소진
- Mockito 5에서 기본 아티팩트가 JVM 에이전트로 전환된 배경에는 JVM 22부터 동적 에이전트 부착이 플래그 뒤로 숨겨진 정책 변화가 있음
- 보안 관점의 변경 취지에는 동의하지만, 대체 설계나 마이그레이션 지원 없이 결정이 기정사실화된 점이 문제로 지적됨
- Mockito가 JVM 기능 선도 사례로 자주 활용되어 왔음에도, 이번 변화에서는 협업적 피드백 루프가 작동하지 않았음
- 에이전트에 대한 빌드 도구 차원의 지원이 여전히 부족한 현실이 해당 기능의 우선순위가 낮음을 보여준다고 평가함
- 자발적 기여자인 유지관리자에게 과도한 압박이 가해질 경우 오픈소스 협업 구조가 쉽게 붕괴됨을 강조함
Kotlin 지원이 초래한 구조적 부담
- Kotlin의 확산 자체는 부정하지 않지만, JVM 내부 동작 방식의 차이로 인해 mockito-core에 Kotlin 전용 처리 흐름이 다수 추가됨
- suspend 함수 등 Kotlin 기능이 일관되게 동작하지 않는 사례가 존재해 API 중복과 복잡성이 증가함
- 결과적으로 코드베이스가 스파게티화되고 유지보수 난이도가 상승했으며, 이에 대한 작업이 개인적으로 즐겁지 않다고 솔직히 언급함
- Kotlin 중심의 미래가 장기적으로 Mockito 유지관리 동기를 약화시키는 요소로 작용했음
다른 오픈소스 활동에서의 즐거움 회복
- 다수의 오픈소스 프로젝트에 기여해 왔으며, 최근에는 Rust 기반 웹 엔진 Servo 작업을 통해 개발의 즐거움을 다시 느끼고 있음
- 제한된 저녁 시간 선택지에서 Mockito보다 다른 프로젝트가 더 큰 만족을 제공하는 상황이 지속됨
- 자원봉사 기반 유지관리 작업이 장기간 의무처럼 느껴지는 상태는 바람직하지 않다고 판단함
결정의 종합적 배경과 메시지
- JVM 정책 변화로 인한 회의감, Kotlin 지원 구조의 한계, 그리고 다른 프로젝트에서의 동기 회복이 결정의 핵심 요인으로 작용함
- 해당 요인들이 모든 기여자에게 동일하게 적용되지는 않으며, 다른 이들이 Kotlin 지원에 더 적극적일 수 있음을 인정함
- 유지관리자 교체가 프로젝트의 장기적 건강성에 더 이롭다는 판단 아래 역할을 내려놓기로 결정함
- 오픈소스 유지관리 경험 자체는 영광이자 특권이었다고 평가하며, 다른 이들에게도 자원봉사적 기여를 권장함