2013년 5월 19일 일요일

천재태지와 Tizen 시작하기

Tizen에서  Application개발에 관심을 가진 분은 아마도 천재태지라는 블로그를 이미 알고 있을 겁니다. 삼성전자에서 Tizen EFL을 개발하고 있고 있는 소프트웨어 엔지니어인데, 본인이 너무 좋아서 열심히 Tizen과 EFL에 정보를 많이 올리고 있습니다. 저도 Tizen 개발에 참여하고 있는데, 이 블로그에서 많은 정보를 얻고 있습니다.

처음 Tizen을 시작할 때, 도움이 될 수 있는 연재글이 있어서 제 블로그에 소개할까 합니다.

얼마전에 EFL 한국 개발자 모임도 만들고 최근에는 EFL 세미나도 개최하는 등 열심히 오픈소스 및 커뮤니티 활동을 하고 있습니다. 발표 자료를 보면 왜 오픈소스 개발이 이 분을 열정적인 Evangelist로 만들었는지 알 수 있습니다.

앞으로도 활동이 기대가 됩니다.




2013년 4월 4일 목요일

구글과 모질라의 새 브라우저 렌더링 엔진



만우절이 지난 것이 확실한데, webkit-dev mailing list로 부터 "Thank you"라는 메일이 하나왔다. Eric이 WebKit일을 그만두나 싶었는데, 구글이 Blink라는 새로운 WebKit기반의 엔진의 시작을 알리는 메일이였다.  사실 Google과 Apple은 WebKit의 WebCore만 공유한채 서로 다른 JavaScript엔진과 서로 다른 Multi-process archicture를 가져갔다. WebCore에 새로운 feature 추가를 두고 서로 논쟁도 많았는데, 드디어 다른 프로젝트로 독립한다니 무척 슬프다. 사실 WebKit은 여러 경쟁 회사가 서로 협력하는 성공적인 오픈소스 프로젝트였다. 최근 Apple의 WebKit2 리뷰 정책때문에 불만이 높기는 하지만, 따로 독립한다는 결정은 그리 쉽지 않다.  오직 Google만이 가능한 결정 같다. 하여간, 이제 WebKit를 사용하는 다른 오픈소스 커뮤니티나 회사들의 이후 움직임이 궁금해진다. 일부는 Blink로 갈 수도 있을 것 같다.

Mozilla는 좀 더 혁신적인 프로젝트를 진행중에 있다.


정말 Mozilla 다운 생각이다. Chrome브라우저가 브라우저 기술의 혁신을 주도하면서 Firefox는 다소 주춤한 상태이다. 특히, Multi-process지원은 Firefox가 빨리 수용해야 할 기술인데, Mutil-Core 지원을 중점으로 새로운 브라우저 엔진인 Servo를 개발한다니, 기대가 크다.

지난 몇 년간 Mozilla와 WebKit기반으로 여러 프로젝트를 진행해 온 개발자로서 현재 상황이 상당히 혼란스럽기는 하지만, 오픈소스 개발자로 꿈을 키우는 사람들에게는 새로운 기회가 될 것 같다.



2013년 3월 20일 수요일

오픈소스 코드 문서화가 어려운 또는 쓸모 없는 이유

많은 개발자들이 Open Source Project에 참여하기 어렵다고 불평하는 것 중 하나가 문서화다. 방대한 코드에 버그를 수정하고 기능을 추가하는 일은 쉽지 않다. 그래서 Code에 대한 어느 정도 문서화나 안내서가 있으면 좋은데, 그런 문서를 찾기가 쉽지 않다. 있다고 하더라고 오래된 문서들이다.

왜 그럴까? WebKit Project에 참여하는 입장에서 생각해보면, 코드가 너무 빠르기 변경되기 때문에 문서화하기 어렵다고 이야기할 수 있다. 어느 정도 대략적인 문서화(요구사항 및 디자인 문서) 정도는 가능하지만, 실제 구현된 내용을 Class 수준으로 이야기하는 것은 어려운 일이다.  가능은 하지만, 글쎄, 한달 정도 지나면 Class 코드에 많은 부분이 변경되어 있을 것이다. 실제로 WebKit2의 Hardware Acceleration 코드인 Coordinated Compositing를 분석하고 문서화하려고 노력하고 있는데, 지난 몇 달간 없어진 Class도 있고 Class이름은 대부분 변경되었고, UI Process와 Web Process간의 message도 절반이상 제거되었다. 개발자들이 끓임없이 refactoring하기 때문이다. 일반 프로젝트에서는 refactoring은 잘 하지 않는다. 일단 기능이 구현되어 정상 동작하면 그만이기 때문이다. 하지만, Open Source Proejct는 다르다. 잘 동작하는 기능이라고 하더라도 좀 더 이해하기 쉬운 code를 만들기 위해서 끊임없이 Refactoring을 한다.

이런 상황에서 개발자는 code를 문서화하기 보다는 보다 이해하기 쉽고 간결한 code를 만들기 위해 노력한다. Class, variable, method이름 하나 하나가 제대로 지어졌는지 또 생각하고 의미가 명확한 이름으로 바꾸려고 노력한다.

오랜 시간을 들여 상세하게 문서화를 하려고 했던 나의 시도는 결국 실패하고 말았다. Code를 이해하고, 변경되지 않는 핵심 부분을 문서화 하는 것은 좋다. 하지만, 가장 좋은 문서화는 바로 쉬운 Code를 작성하는 것이다. 가끔 주석으로 설명된 문장들이나 그림들이 성경의 한 구절처럼 느껴질 때가 있는데, 이런 것들이 진정한 문서화 같다.