The Froyo Code Drop

old/Basic 2010. 7. 6. 12:11

The Froyo Code Drop

Googleplex 안팎으로 소스 코드를 트럭으로 나르는 Jean-Baptiste Queru의 글
 
 
 
오늘은 심장이 빨라지는 그런 날 중 하나다. 우리는 방금 안드로이드 2.2 소스 코드를 공개했다.
이는 안드로이드 에코시스템 전체를 위해 큰 진보라고 할 수 있다.
이 최신 소스 코드를 다운로드 하느라 또 한번 서버가 녹아버리는 일이 없기를…
 
이 블로그는 대개 SDK와 NDK를 사용하여 안드로이드 애플리케이션을 개발하는 것에 대해 논의한다.
그러나, 플랫폼 공헌자의 기술도 근본적으로는 애플리케이션 개발자들의 것과 다르지 않다.
동일한 기술 집합을 사용하는데 단지 역할만 다를 뿐이다. 경험이 많은 전세계의 안드로이드 프로그래머들에게
안드로이드 오픈 소스 프로젝트에서의 최근 개발 사항을 소개하고자 한다.
 
안드로이드를 가지고 일하는 엔지니어들이라면 대부분 공개되는 각 버전을 그 코드 이름으로 안다.
(안드로이드 코드명은 맛있게 차린 별미들 중에서 알파벳 순서로 선택하여 붙여진다.)
필자는 이 글에서 안드로이드 2.2를 그 코드 이름인 “프로요”라고 부를 것이다.
딱딱한 버전 숫자를 생각하는 것보다는 캘리포니아의 여름에 만끽하는 차가운 디저트를 생각하는 것이
훨씬 군침 도는 일이다. 
 
새로운 프로요 소스의 멋진 특성들에 대해 살펴본 후,
안드로이드 오픈 소스 프로젝트의 몇 가지 주목할 만한 요소들로 다시 돌아가보자.
 
필자는 안드로이드의 이전 오픈 소스 릴리스에 점점 더 많이 개입하여,
처음 코드를 공개하는 것부터 이클레어에서 오픈소스 관련 git 레벨의 작업에 이르기까지 관여해왔다.
그러한 경로를 따라, 프로요는 처음부터 끝까지 안드로이드 오픈 소스 프로젝트에 가장 초점을 맞추었던
최초의 버전이다. 이 일의 많은 분량을 함께 하며 필자를 도와준 모든 안드로이드 팀에 감사를 표한다.
여기, 필자가 자랑스러워하는 프로요의 특성 몇 가지를 소개하고자 한다.
물론 덕분에 지난 몇 달 동안 계속 바빴지만 말이다.
  • 세계 각 곳에서 안드로이드 오픈 소스 프로젝트에 업로드 했던
    수백 가지의 플랫폼 변경 사항들이 채택되어 프로요에 병합되었다.
    컨트리뷰션을 수용하여 병합하는 과정은 이제는 기름칠이 잘 된 기계가 돌아가는 것처럼 순조롭고,
    앞으로 있을 많은 컨트리뷰션들도 잘 변환할 것으로 본다.

  • 오픈 소스 공개는 단일한 스텝으로 이루어졌다.
    이제 안드로이드 2.2 플랫폼 전체를 위한 모든 소스 트리를 사용할 수 있으며, 변경 이력들도 모두 공개되었다.
    이 내용들을 살펴본다면 개발자들이 이전 버전에서 프로요로 이동하는 데 가속도가 붙을 것이다.
    뿐만 아니라 프로요는 이미 오픈 소스 마스터 트리에도 전체가 병합되었다.
    그 결과, 우리는 당장에 리뷰를 하고 프로요를 기반으로 플랫폼 컨트리뷰션을 수용할 수 있게 되었다.
    따라서 오픈 소스 트리에 대한 컨트리뷰션과
    구글 내부의 마스터 트리(이는 컨트리뷰션들이 궁극적으로 반영될 목적지이다)의 변경 사항을 병합해야 하는
    위험요소가 줄어들 것이다.

  • 디바이스 제조사들과 커스텀 시스템 빌더들이 프로요를 보다 쉽게 사용할 수 있도록 하기 위해,
    우리의 소스 트리를 오픈 소스 트리에서, 별도의 클로즈드 소스 모듈로 재구성하였다.
    우리는 오픈 소스 코드 자체에 많은 수정을 가하여 원치 않게 클로즈드 소스 소프트웨어에 의존하는 부분들을 제거했다.
    또한 안드로이드 오픈 소스 프로젝트의 소스 코드를 그 자체로 빌드할 수 있도록,
    필요한 모든 컨피규레이션 파일들을 코어 플랫폼 내에 통합시켰다.
    여러분은 이제 Dream (ADP1), Sapphire (ADP2), Passion (Nexus One) 뿐만 아니라 에뮬레이터를 위해서도,
    곧바로 온전한 오픈 소스 시스템 이미지를 빌드하고 부팅시킬 수 있다.

  • 디바이스 지원에 대해 말하자면,
    우리는 이전 버전에서는 클로즈드 소스였던 하드웨어 관련 라이브러리들도 오픈 소스화 시켰다.
    이로 인해 보다 많은 컨트리뷰션들에게 문을 열게 되었다.
    예를 들면, Dream, Sapphire, Passion을 위한 복구 UI 코드, 그리고 미디어 프레임워크와 퀄컴 칩셋 간의
    인터페이스 등을 들 수 있다.
프로요 소스 코드 공개 외에도, 필자는 안드로이드 오픈 소스 프로젝트에서의 몇 가지 개선된 사실들을 언급하고자 한다:
  • 우리는 그 동안 20 군데가 넘는 회사와 많은 개인 개발자들로부터 컨트리뷰션을 받았다.
    Gerrit 코드 리뷰 서버에는 거의 4천 명이나 되는 등록된 유저들이 있고,
    각 사람이 평균 두 건의 컨트리뷰션을 주었다.
    깊게는 C 라이브러리에서부터 락 스크린의 UI에 이르기까지, 시스템의 모든 영역에 대한 개선안들이었다.
    또한 문서의 오류를 고치거나 코드를 리포맷하는 것에서부터 개발자가 볼 수 있는 API들을 더하거나
    사용자가 볼 수 있는 기능에 이르기까지 다양한 수준의 컨트리뷰션들이었다.
    필자는 모든 공헌자들이 작업을 하며 들인 수고와 인내에 감사한다.  

  • 우리는 이제 플랫폼 컨트리뷰션들에 보다 빠르게 응대한다.
    대부분의 변경들은 업로드된 지 업무일 3, 4일 이내에 검토가 되며,
    몇 주가 지나도록 정체된 채 머무르는 변경은 얼마 되지 않는다.
    우리는 보다 빨리, 보다 자주 리뷰하려고 노력 중이다.
    이 글을 타이핑 하고 있는 지금도, 플랫폼 컨트리뷰션 중에 아직 살펴보지 못한 것은 여남은 개이고,
    그 중 사흘 된 것이 가장 오래 된 것이다.
    지난 2주 동안 플랫폼 코드에 관련된 컨트리뷰션들 중 90% 이상을 열심히 검토하였다.
    프로세스가 빠르게 전개되어 코드 리뷰 동안 상호작용이 더 활발하게 일어나길 희망한다.
    그럼에도 불구하고 전세계 공헌자들과 소통할 때 시차 문제 때문에 실시간으로 소통하는 것이 사뭇 어렵다는 것을 느낀다.

  • 지난 두 달 남짓, 우리는 Gerrit 서버에 업로드된 천 여 가지 변경 사항들에 대해 최종 결정을 내렸다.
    즉, 검토를 통해 ‘채택’ 혹은 ‘거절’ 여부가 판가름 났다는 것이다.
    안드로이드 오픈 소스 프로젝트의 모든 역사에 걸쳐 얻은 컨트리뷰션들이 매우 수준이 높아서
    그 중 80% 정도를 꾸준히 메인 저장소에 병합할 수 있었다.
    그 메인 저장소에서 공식 릴리스 대상으로 이동하는 것이다.
    말하자면, 지난 2개월 동안 매 업무일마다 평균 스무 가지 변경 사항들이 안드로이드 오픈 소스 프로젝트를 통해
    공용 git 저장소로 수용되었다는 것이다.

  • 우리는 최근 안드로이드 오픈 소스 프로젝트와 관련하여 공식 구글 그룹 두 개를 만들었다.
    Android-building은 특히 빌드 이슈를 다룰 의도로 만들어졌다(글을 포스팅 하기 전에 아카이브를 면밀히 검색해보라).
    Android-contrib은 실제적인 컨트리뷰션을 논의하는 데 사용된다(진짜로 오픈 소스에 공헌을 하고 리뷰 프로세스를
    따라갈 의도가 아니라면, 또한 여러분 스스로 한 두 시간 연구해보기 전에는 포스트하지 말아주시길.)

  • 우리는 개발자 툴을 오픈 소스 프로젝트에서 직접 만들고 있다.
    이 영역에는 닫힌 문 뒤로 몰래 일어나는 일이라고는 없다.
    여기에는 이클립스 플러그인과 에뮬레이터, 그리고 다른 많은 SDK 관련 툴들이 포함된다.

  • 특정 플랫폼 버전이 일단 오픈 소스화 되고 나면,
    그 버전과 관련된 모든 호환성 테스트 수트 (Compatibility Test Suite) 개선사항이 오픈 소스 트리에 직접 만들어진다.
    사실, 2.1 CTS의 버전 2는 100% 그러한 방식으로 이루어졌다. 개발과 테스팅, 릴리스 프로세스가
    곧장 오픈 소스 트리에서 이루어졌다. 프로요 역시 그렇다.
    그리고 우리는 현재 CTS 프로젝트의 프로요 부문으로 컨트리뷰션들을 수용하고 있다.
필자는 마지막 언급한 두 가지 측면이 애플리케이션 개발자들에게 중요하다고 믿는다.
여러분이 애플리케이션 개발자이고 여러분과 동료 개발자들이 사용하는 툴들을 개선하고 싶다면,
그 분야에서의 변경을 이루어내는 과정들이 지금은 훨씬 투명해졌다.
이와 유사하게, 애플리케이션 개발 도중 기기들 간에 호환이 안 된다는 것을 발견했을 때,
그리고 그러한 비호환성이 문자적으로나 실제적으로 안드로이드의 호환성 의미 밖에 있다고 여길 때,
그 영역을 위한 CTS 테스트로 공헌함으로써 상황을 개선하도록 도움을 줄 수 있다.
 
이제 안드로이드 2.2가 오픈 소스 세상에 공개되었으므로, 그리고 리뷰 프로세스가 원활하게 작동하고 있으므로,
필자는 수준 높은 컨트리뷰션들이 보다 많이 나와서 미래의 안드로이드 버전에 사용될 수 있기를 기대한다.
필자의 가장 달콤한 꿈은 (또한 가장 끔찍한 악몽이기도 하지만) 좋은 컨트리뷰션들이 하도 많이 쏟아져서
내가 도저히 따라잡을 수 없을 정도가 되는 것이다. 부디 이 단꿈에서 나를 깨우지 말아주시길.
Posted by jazzlife
,