크로미엄(Chromium) 프로젝트 기여하기

Chromium|2021. 5. 1. 09:46

chromium.googlesource.com/chromium/src/+/master/docs/contributing.md

여러분의 사용하는 구글 크롬 브라우저(오픈소스 버전은 크로미엄 브라우저라고 부름)는 오픈소스로 관리된다. 소스코드를 공개되어 있고 여러분의 컴퓨터에서 빌드하고 테스트가 가능하다. 그리고 코드를 수정해서 크로미엄 사이트에 올리면 리뷰 과정을 거쳐서 코드가 반영된다. 아주 어려운 일은 아니다. 잘 찾아보면 아무도 신경 안쓰는 수정하기 쉬운 버그도 있다.

우선 크롬 브라우저가 어떻게 동작하는지 대충 알아야할 것이다. 구글에서 만든 수 많은 기술 문서가 있지만, 우선 아래 문서와 발표 자료를 꼭 들어보자.

크롬 브라우저는 어떻게 동작하는가?

Life Of a Pixel

Life of Pixel 문서는 말 그대로 크로미임 브라우저가 어떻게 웹페이지를 화면 출력하는지를 자세하게 소개하고 있다. 발표 자료와 함께 강의 비디오도 Youtube에 있다. 

 

Life of a Pixel

This is the evergreen copy of "Life of a Pixel". Video of the presentation at Chromium University (Nov 2020): http://bit.ly/loap-2020-video LIFE OF A Steve Kobes skobes@chromium.org Nov 2020 slides: bit.ly/lifeofapixel with special thanks to past presenter

docs.google.com

 

 

 Inside look at modern web browser

구글 엔지니어가 직접 만든 문서이다. 가장 자세하게 전반적으로 크롬 브라우저의 동작을 설명한 문서이다.

어떻게 기여하는가?

크로미엄 프로젝트에서 공식적으로 만든 기여를 위한 안내서(Contributing to Chromium)을 먼저 읽어본다. 크로미엄 코드는 C++로 만들어져있으므로 기본적으로 Google C++ Style Guide를 지키고 예외적은 것은 Chromium C++ style guide 로 정리해두었다.  크로미엄 프로젝트는 조금은 느리지만 가능한 모던C++ 기능을 많이 수용하려고 노력하고 있다. 현재는 C++14를 목표로 필요한 기능을 적용하고 있다. 네이버 Deview에서 발표된 "Modern C++ 무조건 써야해?"도 읽어보면 좋다.

또한 크로미엄 프로젝트에서 자체 제공하는 여러 클래스 라이브러리가 있는데, 이는 크로스 플랫폼을 지원을 위해 개발되었다. C++ 표준 라이브러리로 조금씩 대체되고 있지만, 사용방법을 알아두면 코드를 이해하는데 도움이 있다. 몇가지 예제가 있으니 참고 바란다.

버그를 찾자.

Chromium issue tracke사이트에서 버그를 검색해본다.

이번 글은 여기까지, 다음글에서는 패치를 올리고 리뷰 받는 법을 소개해볼까 한다.

 

댓글()

크로미움 프로젝트 커미터 (Chromiun Project Committer)

FOSS|2016. 11. 6. 04:33

얼마전 크로미움 프로젝트 커미터(Chromiun Project Committer)가 되었다. 프로젝트에 기여한지 3년이 되었지만, 사실상 다른 업무로 많은 기여를 하지 못했다. 올해 어느 정도 여유가 생겨서 평소에 관심이 있었던 Blink엔진의 Editing 부분에 집중적으로 기여했다. 

어느 오픈소스 프로젝트나 커미터가 되려면 많은 노력이 필요하다. 어떻게 보면 쉽고 어떻게 보면 어렵다. 크로미움 프로젝트의 경우, 주요한 10개의 patch를 기존 커미터들이 평가하는데, 반대 없이 3명 이상의  +1을 받아야 한다.  기여한 patch의 개수는 중요하지 않다.  실제 버그를 수정하고, Feature를 개발하고 성능을 높이고, refactoring도 큰 수준으로 해야 다른 커미터로 부터 커미터 지명을 받을 수 있다. 사실 구글 직원이 아니면 이런 기여를 하기가 쉽지 않다. 누가 멘토를 해주는 것도 아니고, 자기 스스로 문제를 찾고 feature를 개발해야 하는데, 구글의 허락 없이는 feature를 추가하는 것은 불가능하다. 주요 feature들은 이미 Googler들에게 할당되어 있기 때문에 새로운 분야를 찾는 것 역시 어렵다. 그래서 가장 쉬운 것이 버그를 잡는 것이다. Issue Tracker에 등록된 버그를 해결하는 것이 빠른 일이지만, 사실상 Googler들이 해결 안하는 버그들 역시 고치기 어려운 것이 대부분이다. :-( 하지만, 기역할 분야를 결정하고 하나 하나 버그를 잡다보면 코드를 이해하게 되고, 비슷한 버그를 쉽게 수정할 수 있다. 이때, 가능한 많은 사람들이 관심을 가져주는 급한 버그를 해결하면 더 의미가 있다. 아래는 이번에 커미터가 되기 위해 제출한 주요 patch 목록이다.

Blink Editing

  1. [Issue 226941] Contenteditable issues related to backspace handling
  2. [Issue 318925] Copy and paste sometimes removes spaces between words
  1. [Issue 310149] ContentEditable:   is forced on SPACE between text nodes
  2. [Issue 335955] Unwanted spans inserted in contentEditable elements
  3. [issue 571420] chrome hangs on when creating bullet list in contenteditable
  1. [Issue 634482] Formatting tags converted to spans with styles on cut/paste
  2. [Issue 625802] Unnecessary quote appears after clicking on indent more option in compose box.
  3. [Issue 582225] document.queryCommandState isn't working well with <sub> and <sup>
  4. [Issue 584939] document.queryCommandState returns true for bold, italic, underline, and strikethrough after selecting image
  5. [Issue 385374] queryCommandState can return true for both list types
 

Linux and Wayland support

  1. [Issue 408481] System dialogs (e.g. 'Save As...') are not modal on Ubuntu
  2. [Issue 473228] Make *::ShowWithWindowState(minimized, maximized, fullscreen) consistent across platforms
  3. Issue 578890 upstream wayland backend for ozone

한국인 크로미움 커미터는 이미 9명이 있다. 많은 대기업에서 크로미움 기반으로 브라우저를 개발하고 있어서 그 수가 많은 편이다.  이렇게 다양한 사람들이 함께 내가 사용하는 웹브라우저를 개발한다는 것이 오픈소스가 주는 매력이 아닐까 싶다. 지금 이 순간도 수 많은 사람들이 크롬 브라우저에서 문서를 편집할 때 마다, 내가 추가한 코드가 실행된다고 생각하면 개발자로서 이 보다 보람찬 일은 없을 것이다.

댓글()

Qt의 열린 지배 모델

FOSS|2010. 6. 5. 19:25


Qt의 Git Repository가 공개된지 1주년이 되었습니다. 국내에는 불과 몇 종류의 심비안(Symbian)기반의 스마트폰이 소개되었고, Maemo5를 사용한 N900단말도 출시되지 않았기 때문에, 최근 Nokia 횡보에 관심을 가져주는 매체는 많지 않습니다. 요즘은 연일 iPad, iPhone, Android에 대한 기사를 쏟아내기 바쁘죠.

조용하지만, Nokia Maemo와 Intel Moblin이 합쳐진 MeeGo v1.0이 정식 릴리스 되었고, 조금씩 그 기세를 키워나가고 있습니다.

Android가 비록 Linux Kernel을 사용하고 플랫폼 자체는 오픈소스(Open Source)화되었지만, 사실 기존 오픈소스 커뮤니티에 큰 관심을 주지  못하고 있습니다.

근본적인 이유는 개발 중인  소스코드 저장소(repository)가 공개되어 있지 않은 점, 코드를 기여할 수 있는 프로세스가 없다는 점 복잡한 점 등을 들을 수 있지만,  플랫폼을 구성하는 주요 컴포넌트는 원래  독점 소프트웨어이기 때문에 커뮤니티 자체가 존재하지 않는 부분이 주된 이유인 것 같습니다.

그래서 GNOME, KDE, Linux Kernel 등과 같은 오픈소스 커뮤니티가 Maemo와 Moblin의 통합에 관심을 갖는 것은 자연스러운 일이였습니다.

현재, Nokia는 Qt의 개발용 저장소를 공개하므로서 개발 상황을 공유하고 있고, 외부 개발자의 patch도 받아들이고 있습니다. 앞으로 기술적 논의 뿐만 아니라 로드맵, 일정과 같이 제품에 영향을 주는 의사결정까지도 공개적으로 하겠다고 합니다.
또한, 커뮤니티가 QA 프로세스에 접근할 수 있는 권한을 준다고 합니다. 테스트 결과나 통합 빌드 보고서 등을 공유한다는 것입니다. 이에 더 나아가 의사 결정 과정에 Contributor를 참여시킬 계획을 갖고 있습니다.

이를 통해 Nokia는 더 많은 커뮤니티의 참여를 이끌어 내고, 신뢰성 있는 제품을 개발할 수 있게 됩니다. 커뮤니티의 개발 참여를 통해 다양한 아이디어도 쉽게 받아들일 수 있고, QA에 드는 비용도 절감할 수 있습니다.

이런 시도가 얼마나  큰 성공을 가져다 줄지는 사실 알 수 없으나,  Intel과의 협업을 이끌어내는 등 소기의 성과도 얻었습니다. 물론, Apple, Google에 비해 모바일 플랫폼 경쟁에 뒤떨어져있는 Nokia가 취할 수 밖에 없는 전략일 수도 있지만, Nokia의 이런 행동이 실제로 오픈소스 커뮤니티의 참여를 이끌어 내는 것도 사실입니다.

Nokia는 Post Symbian 시대를 준비하기 위해 Maemo, Qt에 투자하면서 오픈소스를 전략적으로 잘 활용하고 있으며, 이런 움직임이 다른 제조사에게도 영향을 주고 있습니다.

Nokia를 통해 제조사가 더 많은 것을 공개할 수록 더 많은 회사, 개발자를 우리편으로 만들고 그 바탕으로 좀 더 좋은 플랫폼, 제품을 개발하는 성공적인 모델을 기대해봅니다.

댓글()