google summer of code, mentor summit, and open...
TRANSCRIPT
Google Summer of Code, Mentor Summit,
and Open Source Software Development
Keiichiro OnoUC, San DiegoDepartment of Medicine
@SCDN Dec. 5, 2009
1
自己紹介
大野圭一朗 (Keiichiro Ono)
UC, San Diego 医学部Trey Ideker LabResearch Associate/Software Engineer
2
My Main Project: Cytoscape
3
• オープンソースソフトウェアとは?
• Googleとオープンソース
• Google Summer of Code
• Mentor Summit
• オープンソースソフトウェア開発の実際
本日の講演の概要
4
オープンソースソフトウェアとは?
5
Open Source Initiativeによる定義• 再配布の自由
• ソースコードの公開
• 同一ライセンス下での派生物作成、配布の自由
• ソースコード完全性
• 個人やグループに対する差別の禁止
• 適用分野の制限の禁止
• 特定製品でのみ有効なライセンスの禁止
• 他のソフトウェアを制限するライセンスの禁止
• 技術的中立
6
オープンソース = フリーソフトウェア?
• フリーソフトウェアは、よりラディカルな概念
• 結論から言えばNO
• オープンソースライセンスには様々なものがあり、必ずしも商用利用と対立する概念ではない
• オープンソースソフトウェアを業務として開発している企業在籍の開発者もたくさん居る
7
Open Source is Everywhere
• 先人たちの努力のおかげで、今やあらゆるものがオープンソースプロジェクトとして存在する
• OS
• ブラウザ
• オフィスソフト
• ゲーム
• 開発言語・環境
8
Googleとオープンソース
9
Googleとオープンソース
• Googleは、巨大なOSS供給者
• Chromium
• Google Web Toolkit
• Android
• かつ、OSSのヘビーユーザー
• Webkit
• Python
• Subversion
• Linux
10
基本的なスタンス
• 使えるものがすでに存在するならそれを使う
• そして改良が必要ならそうして公開する
• そもそもGoogleはオープンソース開発者を大量に雇用している
• オープンソースコミュニティとは、間接・直接を問わず交流/支援を続けている
• そのような活動の一つがGoogle Summer of Code (GSoC)
11
Google Summer of Codeとは?
12
• 米国の夏休みの期間、Googleがオープンソースソフトウェアプロジェクトに資金を提供し、それによって学生を雇用できる制度
• 学生を指導するプロジェクトは、メンター組織と呼ばれる
• コーディングのコンテストではない
• 最初に計画したものをきちんと作り上げることができれば、学生は$4,500を受け取る
• 世界中どこからでも参加可能
Google Summer of Codeとは?
13
from http://www.youtube.com/watch?v=vBRRR0BQyz0
14
from http://www.youtube.com/watch?v=vBRRR0BQyz0
15
• まずメンター組織がGoogleに書類を提出し、枠(何人学生を雇えるか)が審査の後、与えられる
• メンター組織が参考になるプロジェクトアイデアを出し、学生が募集期間中にプロジェクトの計画表を提出する
• メンター組織が、計画表や学生のバックグラウンド(学部や経験など)を元に、受け入れる学生を選ぶ
• あとはひたすら目標に向かってハック!
• 最終的に大体の目的を達成できれば、学生は$4,500を受け取る
主な流れ
16
今年の参加プロジェクトGoogle
Summer of Code 200917
超有名プロジェクト
• The Apache Software Foundation
• Eclipse Foundation
• The FreeBSD Project
• The Linux Foundation
• Mozilla Project
18
開発ツール/言語
• Boost C++ Libraries
• GCC
• Git
• Ruby on Rails
• haskell.org
19
科学系
• Center for the Study of Complex Systems, University of Michigan
• GenMAPP
• OMII-UK
• R Foundation for Statistical Computing
20
その他
• Free Software Initiative of Japan (FSIJ)
• 日本のオープンソース普及と啓蒙を目的としたNPO
• Battle of Wesnoth
• オープンソースで開発されているシミュレーションゲーム
• グラフィックスなども全部ボランティアベース
• Chromium / Native Client
• Google自信が関わっているプロジェクトもある。
21
GSoCの参加プロジェクト
• 必ずしもGoogleが将来使いそうなソフトウェアであるという必要は無い
• 言語や開発ツールからゲームまで、ありとあらゆる分野のプロジェクトが参加している
• プロジェクトの規模は、必ずしも選考基準の再重要項目ではない(らしい)
22
誰がメンターになれるか?
• まずそのプロジェクトがオープンソースであること
• 基本的にはそのプロジェクトのコミッター等、ある程度そのプロジェクトに関わっている人
• 中には、メンターを公募するプロジェクトもある
• 超絶技巧を持つハッカーである必要はない
➡ だったら私はメンターをやってません
23
メンター組織のタイプ
• 独立型プロジェクト
• 大手に多い
• 基本的に一つのプロジェクトが単独で参加
• アンブレラ組織
• 似たタイプのプロジェクトの集合体
• 例:ライフサイエンス系アプリ、OMII-UKなど
24
具体的な流れ: GenMAPPプロジェクトの場合
25
GenMAPPプロジェクト
• ライフサイエンス、特にシステム生物学と呼ばれるような分野で使われるソフトウェアを開発しているグループの集まり
• 一種のアンブレラ組織
• GenMAPP
• Cytoscape
• WikiPathways
• PathVisio
26
IDEA 5: Superpathways in Cytoscape ¶
Goal: Create a Cytoscape plugin that merges multiple pathways into a single Cytoscape network
Biological pathways are highly interconnected. To find out how different processes influence each other, it can be useful to visualize the connectivity between pathways by merging them into a single superpathway. Cytoscape would be an ideal tool for such a visualization, since it has interactive layouts, making it possible to work with a large number of nodes. The goal of this project is to create a Cytoscape plugin that allows you to select multiple pathways from Wiki Pathways and load them in a single network. The plugin needs to merge nodes that represent the same biological entity (e.g. gene, protein or molecule). Existing code already provide some functionality that is needed to make this work:
• AdvancedNetworkMerge plugin, merges nodes and edges from different networks based on their attribute values
• GpmlPlugin for Cytoscape, load WikiPathways pathways as a Cytoscape network• Synonym databases, connect genes, proteins and metabolites that are annotated to different database systems
By reusing as much existing code as possible, it should be possible to create a user friendly tool that allows researchers to combine different pathways on the fly. Features you could think of to make this work are a dialog to search and select pathways, a custom layout that groups nodes from the same pathway and a visualization that indicates the origin pathway of each node (e.g. by color-coding it).
Language and Skills: Java
Idea by: Thomas Kelder
Potential Mentors: Thomas Kelder, Martijn Van Iersel, Alexander Pico
アイデアリストの作成
27
参加する学生の選定
28
• Community Bonding Period
• メーリングリストや電話会議などを通して、学生とメンターがお互いのことを紹介しあう
• 大まかな今後の予定を組む
• 必要があれば、開発に必要なツールや、必要な知識を得るためのドキュメントなどを学生に紹介する
• このプロセスが終わったあと、実際のプロジェクトがスタート
参加する学生が決定した後
29
プロジェクト期間中
• メーリングリスト、Skypeなどで定期的な連絡を取り、学生の進捗状況を確認する
• 必要があればヒントを与えたり、実際にコーディングを手伝う
• 必要に応じて軌道修正しながら、最終的な成果物を計画のモノに近づける
30
Google Summer of Code終了後
31
• 成功すれば、Googleから学生にお金が支払われる
• 失敗したら(=メンターが失敗とみなせば)ナシ
• 学生がまだそのプロジェクトを改良したい、他のことも行ってみたい
➡新しいコミッターへ
• メンターの一部は、Google本社で行われるMentor Summitに参加出来る
プロジェクト終了後・・・
32
Google Summer of Code Mentor Summit
33
• GSoCに参加したメンター組織の中から、代表者が二人くらいづつ参加する
• Googleが本社までの旅費と滞在費を負担してくれる
• 一応はコンファレンスのようなものだが、基本的にはオープンソース開発者のお祭りのようなもの
• メインはプロジェクト間の交流
• アンカンファレンスという形式で行われる
Google Summer of Code Mentor Summit
34
Unconference?
• タイムスケジュールなどは予め決めず、大まかなトピックだけをまず持ち寄る
• トピックごとに部屋割りをして、そのトピックに興味がある人は、指定された時間にその場所に行ってディスカッションを行う
35
どんなことが話しあわれるのか?
• ソフトウェア開発に関係あることなら何でもあり
• 技術的なトピック
• 並列プログラミング、バージョン管理、テストカバレッジ...
• OSSプロジェクトマネジメント的なこと
• 良い学生・開発者の選び方、今後のホスティングサービス、女性OSS開発者の数の少なさ...
36
個人的に面白いと思ったトピック
37
新世代のUI
• マルチタッチ、Wiiのリモコンみたいな新しいデバイスのサポートとユースケース
• データ可視化とか
• オープンソース実装のものが結構いろいろ出はじめている
http://nuigroup.com/
38
プロジェクトホスティング• SCM, Wiki, Issue Tracker, Build
System, etc.
• なかなか自分たちの思うような組み合わせが無いので、自前でホスティングしているプロジェクトが結構多い
• GitHubなどの新世代や、SourceForgeなどの老舗もどんどん良くなってきているので試してみる価値はあり
39
OSSでのデザイン ユーザーインタラクションなど
40
・・・でも基本はお祭り41
実際に活用するには?
42
• 様々なプロジェクトがあるが、レベルもコミュニティの性質も千差万別
• つまり、必ずしも超ハイレベルなコーディング技術が無くとも、オープンソースの世界にはコミットできる
• 特に商業ソフトで開発経験のある人なら、いくらでも参加可能
• 学生のうちに彼らと何らかの関わりを持てば、それは凄い資産になる
オープンソースの実際
43
オープンソース開発者• 完全ボランティアの人もいるが、(私のように)仕事の一環で関わる人もいる
• 企業でフルタイム開発者としてOSSを書いている人もけっこういる
• 基本的には技術オタクが多い
• しかし全員がRMSみたいな原理主義者でもない
44
実際に参加してみる
45
OSSのはじめ方
• もちろん自分ひとりで作りたいものを作り始める、という方法もある
• しかし、独りで出来ることには限界もあるし、既存の優れたプロジェクトを改良する方が、成果物を広く使ってもらえる可能性が高い
• まずはじめは自分の得意分野で面白そうなプロジェクトを探して・・・
• コードを読む
• 開発者向けメーリングリストに参加する
46
日本人とオープンソース
• 何と言っても一番のネックは英語
• しかし、ここに居られる方々はそのハンデが無い!
• それだけで結構大きなアドバンテージ
• 積極的にメーリングリストなどに参加するうちに、自ずと参加出来そうなポイントが見えてくるはず
• バグフィックスのパッチなどを作って送るのが一番喜ばれるかも
47
技術的な事 必須のツール
48
OSS開発の基本ツール
• ソースコード管理 - Subversion, Git, etc.
• まずはこれが無いと始まらない
• 情報の共有 - Wiki, CMS, Issue Tracker
• 遠隔地の人々との共同作業になるので必須
• 継続的インテグレーション - 自動ビルドとテスト
• 現在の主流はナイトリービルドでは無く、コードのチェックインが自動テストとビルドをトリガする方式
49
開発のインフラ
• 今は様々なホスティングサービスが無料で利用可能
• Google Code
• Source Forge
• GitHub
• すぐに使ってみる!
50
とにかく参加する事が大事
• まずメーリングリストなどに参加
• 自分の分かる分野なら、積極的にユーザーからの質問などに答える
51
まとめ
• Googleは、GSoC等も含めた様々なオープンソース支援活動を行っているので、積極的に利用すべき
• メンターは基本的にはボランティアだが、いい経験なのでやってみる価値はあり
• うまく行けば新しいコミッターが得られる
• Mentor Summitも機会があれば是非参加してみるべき
• 様々な制度を活用してプロジェクトを充実させて行ける
52
Thank You!
53