GitHub Star는 북마크다. 진짜 가치를 반영하지 않는다. 그래서 우리는 RVS(Repo Vitality Score)를 만들었다. 이 글은 RVS의 5가지 지표 각각에 대한 이유와 산정 기준을 상세히 설명한다.

RVS = M30 + F20 + H25 + E15 + C10

지표가중치핵심 질문
Momentum30%성장하고 있는가?
Freshness20%현재 살아있는가?
Health25%관리가 잘 되고 있는가?
Engagement15%커뮤니티가 있는가?
Contemporary10%2026년에도 유효한가?

1. Momentum (30%) — "성장하고 있는가"

왜 30%인가: 과거의 영광이 아니라 지금 얼마나 성장 중인지가 가장 중요하다. Star 1만 개라도 최근 6개월 정체됐다면 의미가 없다.

측정:

  • 최근 30일/90일 Star 증가 추세 (10%) — 가속 중인가, 감속 중인가?
  • 최근 30일 다운로드/PyPI 설치 건수 (10%) — 실제 사용량이 성장 증거
  • 포크 수 증가율 (5%) — 사람들이 가져가서 쓰고 있는가?
  • 새로운 Contributor 유입 (5%) — 신규 개발자가 참여하는 생태계인가?

Hacker News의 한 논의: "Star가 높다고 무조건 좋은 프로젝트는 아니다. 10,000 Star를 3년에 걸쳐 받은 프로젝트와 1,000 Star를 지난달에 받은 프로젝트 중 후자가 더 흥미롭다."

2. Freshness (20%) — "현재 살아있는가"

왜 20%인가: 마지막 커밋이 6개월 전이면 죽은 프로젝트다. 기술 생태계에서 6개월은 영원이다.

측정:

  • 최종 커밋 경과일 (10%) — 7일 이내=만점, 30일=50%, 90일=0점
  • 최근 30일 커밋 빈도 (5%) — 꾸준히 개선되고 있는가?
  • 릴리즈 주기 (5%) — 정기 릴리즈 사이클이 있는가?

3. Health (25%) — "관리가 잘 되고 있는가"

왜 25%인가: 이슈가 쌓여만 있고 PR이 방치되는 레포는 건강하지 않다. Momentum이 '속도'라면 Health는 '체력'이다.

측정:

  • 이슈 처리율 (10%) — 열린 이슈/닫힌 이슈 비율. 0.5 이하=건강
  • PR 평균 응답 시간 (10%) — PR 올리고 머지까지 평균 시간
  • 버그 이슈 비율 (5%) — 전체 이슈 중 버그 비율. 높으면 불안정

4. Engagement (15%) — "커뮤니티가 있는가"

왜 15%인가: 혼자 만드는 프로젝트보다 활발한 토론이 있는 프로젝트가 장기 생존 가능성이 높다. 하지만 커뮤니티만 크고 코드는 별로인 '수다쟁이 레포'도 경계해야 해서 가중치를 낮췄다.

측정:

  • 이슈당 평균 댓글 수 (5%) — 의미 있는 토론이 있는가?
  • 참여자 다양성 (5%) — 특정인에 의존하는가? (버스 팩터)
  • 외부 기여 비율 (5%) — 코어 팀 외부에서 온 PR 비율

5. Contemporary (10%) — "2026년에도 유효한가"

왜 10%인가: 오래된 기술이 나쁜 건 아니지만, 2026년 AI 시대에 프레임워크·언어·패러다임이 현재 기술 스택과 맞아야 한다. 이 지표는 가장 주관적이고 신중하게 적용해야 해서 가중치가 가장 낮다.

측정:

  • 기술 스택 현대성 (5%) — Python 3.12+ 지원? 최신 의존성?
  • 컨테이너/클라우드 친화성 (3%) — Dockerfile, K8s 지원, 서버리스 가능?
  • 문서 품질 (2%) — README가 현대적인가, 마이그레이션 가이드가 있는가?

왜 이렇게 하는가

Reddit r/programming에서 자주 인용되는 말: "Star-based ranking is the influencer economy of open source. It measures popularity, not quality."

RVS는 이 문제를 해결하기 위해 만들어졌다. 모든 지표는 공개 데이터(GitHub API, PyPI, npm)로 계산 가능하며, 누구나 검증할 수 있다. 가중치는 AlignsDot의 관점 — '실제로 쓸 만한가'에 초점을 맞췄다.

이 방법론은 계속 진화한다. 좋은 피드백이 있으면 가중치도 조정한다. 중요한 건 숫자가 아니라 숫자에 담긴 생각이다.