오픈소스 프로젝트와 메인테이너(Maintainer)

최근 약간의 메인테이너(maintainer) 역할을 수행해보았다. 오랜 시간 기여만 하다가 실제적으로 어떤 프로젝트를 관리하는 역할을 해본 것이다. 오픈소스 프로젝트마다 메인테이터의 역할 또는 이름이 다르기 때문에 명확하게 무슨일 한다고 이야기하기 어려울 수도 있도 있다. 이글에서는 특정 프로젝트를 소유하고 유지하는 사람을 메인테이너라고 정의하겠다. 리눅스 커널 프로젝트에서는 모듈 소유자(module owner)를 메인테이너라고 부른다. 하지만, 웹킷(WebKit) 프로젝트에서는 이런 사람을 리뷰어(reviewer)라고 부르기도 한다. 그렇다면, 오픈소스 프로젝트에서 maintainer의 역할을 무엇인가?

첫번째, 주기적으로 출시(release) 하기.

프로젝트 마다 다르지만, 정해진 일정으로 소프트웨어를 출시한다. Chrome Browser의 경우 6주마다 출시한다.  라이브러리를 개발하는 경우, 출시마다 따로 브랜치(branch)를 관리해서 버그를 따로 수정해야 한다. 왜냐하면, 해당 라이브러리를 사용하는 소프트웨어는 새 버전이 나왔다고 바로 라이브러리를 버전업하지는 않는다. 이는 새 버전이 해당 소프트웨어와 잘 동작하지 않을 수도 있으므로 충분한 테스트 후에 의존성이 있는 라이브러리를 버전업을 한다.

둘째,  외부 패치(patch)를 리뷰하고 머지(merge)여부를 결정하는 것.

메인테이너가 가장 많이 하는 일이 바로 외부 패치를 리뷰하고 머지 여부를 결정하는 것이다. 외부 기여가 많다는 것은 그 많은 그 소프트웨어가 많이 사용된다는 것을 의미한다. 그러므로, 메인테이너는 책임감을 갖고 외부 패치를 잘 리뷰하고 피드백을 가능한 빨리 줘야 한다. 그래야 기여하는 사람도 빠르게 대응할 수 있다.

세째, 주요 의사 결정 하기.

특정 모듈을 업그레이드 하거나, 새로운 메인테이너를 선정하는 등, 굵직한 의사 결정을 수행한다.

다섯째, 프로젝트 홈페이지, 메일링 리스트, 또는 소셜 네트워크에 프로젝트 진행 상황 공지하기.

몇가지 예를 소개하면 다음과 같다.

WebKitGTK+ 2.8.1 released!
This is the first bug fix release in the stable 2.8 series.

  • What’s new in the WebKitGTK+ 2.8.1 release?
    Handle keep-alive connections in GStreamer HTTP source element.
  • Fix a crash in DOMObjectCache when a wrapped object owned by the cache is unreffed by the user.
  • Fix rendering of drag and drop icon.
  • Fix the build with REDIRECTED_XCOMPOSITE_WINDOW disabled in X11 platform.
  • Fix the build with Wayland target enabled.
  • Fix the build for HPPA.

Thanks to all the contributors who made possible this release.

원본글: http://webkitgtk.org/2015/04/14/webkitgtk2.8.1-released.html

WebKitGTK+ 2.9.2 is available for download at:

http://webkitgtk.org/releases/webkitgtk-2.9.2.tar.xz (10.1MB)
md5sum: 56c88ed61de954a946f3fcf260a124a8
sha256sum: e11fc2ee67a01ab18e91ca0be7dfebaaad6c865ab602f1e3efbf59d75bff9252

This is a development release leading toward 2.10 series.

What’s new in the WebKitGTK+ 2.9.2 release?
===========================================

– Add IndexedDB support using a dedicated database process.
– Add construct property to WebKitWebContext to set the IndexedDB database directory.
– Add allow-file-access-from-file-urls to WebKitSettings.
– Improve network process disk cache performance by mapping cached resources in the
web process instead of sending the resources data via IPC.
– Prevent WorkQueue objects from being leaked and ensure its worker thread always exits.
– webkit_dom_html_element_get_children() has been deprecated in favor of
webkit_dom_element_get_children() to match the DOM spec.
– ARIA menu items no longer have anonymous block children.
– Map pre element to ATK_ROLE_SECTION instead of ATK_ROLE_PANEL.
– Always include rows in the tree of accessible tables.
– Fix the build with Netscape plugins disabled.
– Fix XPixmaps leaked by GLContext when using EGL on X11.
– Translation updates: Catalan.

What is WebKitGTK+?
===================

WebKitGTK+ is the GNOME platform port of the WebKit rendering engine.
Offering WebKit’s full functionality through a set of GObject-based
APIs, it is suitable for projects requiring any kind of web
integration, from hybrid HTML/CSS applications to full-fledged web
browsers.

Requirements
============

gtk+ >= 3.6.0
glib >= 2.33.2
libsoup >= 2.42.0
cairo >= 1.10.2
libxml >= 2.8.0
libxslt >= 1.1.7
HarfBuzz >= 0.9.2
icu
fontconfig >= 2.8.0
FreeType2 >= 2.4.2
libsecret
SQLite
enchant

Depending on your configuration options WebKitGTK+ may also depend on:

gtk+ >= 2.24.10
GObject introspection
gstreamer >= 1.0.3
GeoClue >= 2.1.5
gudev
cairo-gl >= 1.10.2

More information
================

If you want to know more about the project or get in touch with us
you may:

– Visit our website at http://www.webkitgtk.org, or the upstream
site at http://www.webkit.org. People interested in contributing
should read: http://www.webkit.org/coding/contributing.html.

– Browse the bug list at http://bugs.webkit.org, WebKitGTK+ bugs are
typically prefixed by “[GTK].” A bug report with a minimal,
reproducible test case is often just as valuable as a patch.

– Join the #webkit and #webkitgtk+ IRC channels at irc.freenode.net.

– Subscribe to the WebKitGTK+ mailing list,
http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk, or the
WebKit development mailing list,
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Thanks
======

Thanks to all the contributors who made possible this release, they
are far too many to list!

The WebKitGTK+ team,
May 27, 2015

Carlos Garcia Campos
http://pgp.rediris.es:11371/pks/lookup?op=get&search=0xF3D322D0EC4582C3

원본글: From https://lists.webkit.org/pipermail/webkit-gtk/2015-May/002359.html

트위터 글

여섯째, 컨퍼런스에서 프로젝트 소개하기

정기적으로 프로젝트 진행 상황을 소개한다. 위 예는 Blink Conference video다.

물론, 모든 일을 혼자하지는 않는다. 큰 프로젝트의 경우, 여러 메인테이너가 나누어서 한다. 이렇게 프로젝트 관리에는 개발 이외에도  해야 할일 많다. 누구나 열심히 기여하다 보면 이런 일을 맡을 수도 있다. 아니면 작은 프로젝트를 만들어서 미리 경험해보는 것도 나중에 큰 프로젝트에서 메인테이너가 되는데 도움이 된다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s