월요일, 8월 24, 2009

[B급 프로그래머] 리눅스 커널 개발 관련 통계...

특정 소프트웨어를 개발하기 위해 누가 얼마나 오래동안 얼마나 많은 코드를 작성하는지 궁금한 경우가 있다. 예를 들어, 마이크로소프트 윈도우 개발에 몇 명이 투입되어 어느 정도 규모의 코드를 작성할까? 유감스럽게도 상업적인 소프트웨어를 개발하는 대다수 회사들은 이런 극비 정보를 꽁꽁 감춘다. 이런 정보 자체가 상대편 회사에게 프로젝트 일정을 예측하도록 도와주는 중요한 힌트가 되기 때문이다. 하지만 오픈 소스라면 상황이 달라진다. 통계자료를 제대로 만들어서 배포하면 오픈 소스 공동체에 도움을 주기 때문이다.



이번에 리눅스 파운데이션에서 발표한 Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It: An August 2009 Update은 리눅스 커널 개발 과정에서 나타나는 여러 가지 흥미로운 통계자료를 담고 있다.



바쁜 여러분을 위해 몇 가지 흥미로운 사실을 정리해보았다.




  • 마이너 버전 사이 배포 간격: 2.6.x와 2.6.x+1 사이 간격은 평균적으로 3달 정도로 보여진다. 3달은 반복 주기로서 너무 짧지도 너무 길지도 않는 시간으로, 마이크로소프트 사도 오피스 개발에 대략 3달 주기로 반복을 진행했다고 알고 있다(부탁: 마이크로소프트 사 개발팀에 속한 애독자의 내부 제보가 필요하다).
  • 시간당 코드 변경 내역: 개발 일수가 늘어날수록 시간당 코드 변경 내역도 많아진다. 다음 표를 참고하자.



  • 커널 버전당 리펙터링 활동: 커널 버전이 올라갈수록 커널에 추가되고 제거되고 변경되는 코드가 많아진다. 지속적으로 살아 움직이는 프로젝트는 이런 추세를 따를거다.



  • 커널 버전당 참여하는 개발자 숫자: 커널 버전이 올라갈수록 투입되는 개발자 숫자도 늘어난다.



  • 리누스 토발즈는 더 이상 전체 코드 리뷰를 맡지 않는다. 프로젝트 규모가 커짐에 따라 분권적으로 움직인다는 의미다. 통계 자료를 보면 앤드류가 10.5%인 반면 리누스는 2.7%에 불과하다.




운영체제 만드는 작업이 후반부로 갈수록 인력 투입이 집중되고 코드 변경이 급격하게 일어난다는 사실은 그리 놀랍지 않다. 초반에 전체 아키텍처를 잡기 위해 핵심 코드를 작성하는 상황에서 벗어나 다양한 디바이스 드라이버를 추가하며, 그 동안 등한시했던 리펙터링 작업을 집중하기 때문이다. 여러분이 현재 수행하고 있는 프로젝트는 상태가 어떤가? 아무리 바쁘더라도 오후에 잠깐 코딩을 멈추고 SVN과 TRAC 통계자료를 한번 뒤적여보자.

EOB

댓글 2개:

  1. 요새 커널 소스를 보고 있는 중인데
    위의 통계자료가 아주 흥미롭네요
    커널 소스를 보다보니 커널 버전에 따른 커널 소스 변경 부분에 관심을 갖게 되는데
    2.6.x와 2.6.x+1 사이에도 생각보다 너무 많은 변경 부분이 있어서 놀라기도 하였습니다
    사용자 입장일때는 버전 올라가는 것이 마냥 좋았는데 커널 소스를 보다보니 좀 천천히 올라갔으면 하는 생각도^^;

    답글삭제
  2. // 학생님, 중간 중간 퀀텀 점프하는 경우가 가장 따라가기 어렵습니다. 2.4, 2.6 모두 중간에 몇 차례 엄청난 개선이 있었습니다.

    - jrogue

    답글삭제