google summer of code, mentor summit, and open...

53
Google Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro Ono UC, San Diego Department of Medicine @SCDN Dec. 5, 2009 1

Upload: others

Post on 25-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Google Summer of Code, Mentor Summit,

and Open Source Software Development

Keiichiro OnoUC, San DiegoDepartment of Medicine

@SCDN Dec. 5, 2009

1

Page 2: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

自己紹介

大野圭一朗 (Keiichiro Ono)

UC, San Diego 医学部Trey Ideker LabResearch Associate/Software Engineer

2

Page 3: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

My Main Project: Cytoscape

3

Page 4: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• オープンソースソフトウェアとは?

• Googleとオープンソース

• Google Summer of Code

• Mentor Summit

• オープンソースソフトウェア開発の実際

本日の講演の概要

4

Page 5: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

オープンソースソフトウェアとは?

5

Page 6: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Open Source Initiativeによる定義• 再配布の自由

• ソースコードの公開

• 同一ライセンス下での派生物作成、配布の自由

• ソースコード完全性

• 個人やグループに対する差別の禁止

• 適用分野の制限の禁止

• 特定製品でのみ有効なライセンスの禁止

• 他のソフトウェアを制限するライセンスの禁止

• 技術的中立

6

Page 7: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

オープンソース = フリーソフトウェア?

• フリーソフトウェアは、よりラディカルな概念

• 結論から言えばNO

• オープンソースライセンスには様々なものがあり、必ずしも商用利用と対立する概念ではない

• オープンソースソフトウェアを業務として開発している企業在籍の開発者もたくさん居る

7

Page 8: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Open Source is Everywhere

• 先人たちの努力のおかげで、今やあらゆるものがオープンソースプロジェクトとして存在する

• OS

• ブラウザ

• オフィスソフト

• ゲーム

• 開発言語・環境

8

Page 9: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Googleとオープンソース

9

Page 10: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Googleとオープンソース

• Googleは、巨大なOSS供給者

• Chromium

• Google Web Toolkit

• Android

• かつ、OSSのヘビーユーザー

• Webkit

• Python

• Subversion

• Linux

10

Page 11: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

基本的なスタンス

• 使えるものがすでに存在するならそれを使う

• そして改良が必要ならそうして公開する

• そもそもGoogleはオープンソース開発者を大量に雇用している

• オープンソースコミュニティとは、間接・直接を問わず交流/支援を続けている

• そのような活動の一つがGoogle Summer of Code (GSoC)

11

Page 12: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Google Summer of Codeとは?

12

Page 13: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• 米国の夏休みの期間、Googleがオープンソースソフトウェアプロジェクトに資金を提供し、それによって学生を雇用できる制度

• 学生を指導するプロジェクトは、メンター組織と呼ばれる

• コーディングのコンテストではない

• 最初に計画したものをきちんと作り上げることができれば、学生は$4,500を受け取る

• 世界中どこからでも参加可能

Google Summer of Codeとは?

13

Page 14: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

from http://www.youtube.com/watch?v=vBRRR0BQyz0

14

Page 15: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

from http://www.youtube.com/watch?v=vBRRR0BQyz0

15

Page 16: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• まずメンター組織がGoogleに書類を提出し、枠(何人学生を雇えるか)が審査の後、与えられる

• メンター組織が参考になるプロジェクトアイデアを出し、学生が募集期間中にプロジェクトの計画表を提出する

• メンター組織が、計画表や学生のバックグラウンド(学部や経験など)を元に、受け入れる学生を選ぶ

• あとはひたすら目標に向かってハック!

• 最終的に大体の目的を達成できれば、学生は$4,500を受け取る

主な流れ

16

Page 17: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

今年の参加プロジェクトGoogle

Summer of Code 200917

Page 18: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

超有名プロジェクト

• The Apache Software Foundation

• Eclipse Foundation

• The FreeBSD Project

• The Linux Foundation

• Mozilla Project

18

Page 19: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

開発ツール/言語

• Boost C++ Libraries

• GCC

• Git

• Ruby on Rails

• haskell.org

19

Page 20: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

科学系

• Center for the Study of Complex Systems, University of Michigan

• GenMAPP

• OMII-UK

• R Foundation for Statistical Computing

20

Page 21: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

その他

• Free Software Initiative of Japan (FSIJ)

• 日本のオープンソース普及と啓蒙を目的としたNPO

• Battle of Wesnoth

• オープンソースで開発されているシミュレーションゲーム

• グラフィックスなども全部ボランティアベース

• Chromium / Native Client

• Google自信が関わっているプロジェクトもある。

21

Page 22: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

GSoCの参加プロジェクト

• 必ずしもGoogleが将来使いそうなソフトウェアであるという必要は無い

• 言語や開発ツールからゲームまで、ありとあらゆる分野のプロジェクトが参加している

• プロジェクトの規模は、必ずしも選考基準の再重要項目ではない(らしい)

22

Page 23: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

誰がメンターになれるか?

• まずそのプロジェクトがオープンソースであること

• 基本的にはそのプロジェクトのコミッター等、ある程度そのプロジェクトに関わっている人

• 中には、メンターを公募するプロジェクトもある

• 超絶技巧を持つハッカーである必要はない

➡ だったら私はメンターをやってません

23

Page 24: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

メンター組織のタイプ

• 独立型プロジェクト

• 大手に多い

• 基本的に一つのプロジェクトが単独で参加

• アンブレラ組織

• 似たタイプのプロジェクトの集合体

• 例:ライフサイエンス系アプリ、OMII-UKなど

24

Page 25: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

具体的な流れ: GenMAPPプロジェクトの場合

25

Page 26: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

GenMAPPプロジェクト

• ライフサイエンス、特にシステム生物学と呼ばれるような分野で使われるソフトウェアを開発しているグループの集まり

• 一種のアンブレラ組織

• GenMAPP

• Cytoscape

• WikiPathways

• PathVisio

26

Page 27: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

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

Page 28: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

参加する学生の選定

28

Page 29: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• Community Bonding Period

• メーリングリストや電話会議などを通して、学生とメンターがお互いのことを紹介しあう

• 大まかな今後の予定を組む

• 必要があれば、開発に必要なツールや、必要な知識を得るためのドキュメントなどを学生に紹介する

• このプロセスが終わったあと、実際のプロジェクトがスタート

参加する学生が決定した後

29

Page 30: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

プロジェクト期間中

• メーリングリスト、Skypeなどで定期的な連絡を取り、学生の進捗状況を確認する

• 必要があればヒントを与えたり、実際にコーディングを手伝う

• 必要に応じて軌道修正しながら、最終的な成果物を計画のモノに近づける

30

Page 31: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Google Summer of Code終了後

31

Page 32: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• 成功すれば、Googleから学生にお金が支払われる

• 失敗したら(=メンターが失敗とみなせば)ナシ

• 学生がまだそのプロジェクトを改良したい、他のことも行ってみたい

➡新しいコミッターへ

• メンターの一部は、Google本社で行われるMentor Summitに参加出来る

プロジェクト終了後・・・

32

Page 33: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Google Summer of Code Mentor Summit

33

Page 34: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• GSoCに参加したメンター組織の中から、代表者が二人くらいづつ参加する

• Googleが本社までの旅費と滞在費を負担してくれる

• 一応はコンファレンスのようなものだが、基本的にはオープンソース開発者のお祭りのようなもの

• メインはプロジェクト間の交流

• アンカンファレンスという形式で行われる

Google Summer of Code Mentor Summit

34

Page 35: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Unconference?

• タイムスケジュールなどは予め決めず、大まかなトピックだけをまず持ち寄る

• トピックごとに部屋割りをして、そのトピックに興味がある人は、指定された時間にその場所に行ってディスカッションを行う

35

Page 36: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

どんなことが話しあわれるのか?

• ソフトウェア開発に関係あることなら何でもあり

• 技術的なトピック

• 並列プログラミング、バージョン管理、テストカバレッジ...

• OSSプロジェクトマネジメント的なこと

• 良い学生・開発者の選び方、今後のホスティングサービス、女性OSS開発者の数の少なさ...

36

Page 37: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

個人的に面白いと思ったトピック

37

Page 38: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

新世代のUI

• マルチタッチ、Wiiのリモコンみたいな新しいデバイスのサポートとユースケース

• データ可視化とか

• オープンソース実装のものが結構いろいろ出はじめている

http://nuigroup.com/

38

Page 39: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

プロジェクトホスティング• SCM, Wiki, Issue Tracker, Build

System, etc.

• なかなか自分たちの思うような組み合わせが無いので、自前でホスティングしているプロジェクトが結構多い

• GitHubなどの新世代や、SourceForgeなどの老舗もどんどん良くなってきているので試してみる価値はあり

39

Page 40: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

OSSでのデザイン ユーザーインタラクションなど

40

Page 41: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

・・・でも基本はお祭り41

Page 42: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

実際に活用するには?

42

Page 43: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

• 様々なプロジェクトがあるが、レベルもコミュニティの性質も千差万別

• つまり、必ずしも超ハイレベルなコーディング技術が無くとも、オープンソースの世界にはコミットできる

• 特に商業ソフトで開発経験のある人なら、いくらでも参加可能

• 学生のうちに彼らと何らかの関わりを持てば、それは凄い資産になる

オープンソースの実際

43

Page 44: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

オープンソース開発者• 完全ボランティアの人もいるが、(私のように)仕事の一環で関わる人もいる

• 企業でフルタイム開発者としてOSSを書いている人もけっこういる

• 基本的には技術オタクが多い

• しかし全員がRMSみたいな原理主義者でもない

44

Page 45: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

実際に参加してみる

45

Page 46: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

OSSのはじめ方

• もちろん自分ひとりで作りたいものを作り始める、という方法もある

• しかし、独りで出来ることには限界もあるし、既存の優れたプロジェクトを改良する方が、成果物を広く使ってもらえる可能性が高い

• まずはじめは自分の得意分野で面白そうなプロジェクトを探して・・・

• コードを読む

• 開発者向けメーリングリストに参加する

46

Page 47: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

日本人とオープンソース

• 何と言っても一番のネックは英語

• しかし、ここに居られる方々はそのハンデが無い!

• それだけで結構大きなアドバンテージ

• 積極的にメーリングリストなどに参加するうちに、自ずと参加出来そうなポイントが見えてくるはず

• バグフィックスのパッチなどを作って送るのが一番喜ばれるかも

47

Page 48: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

技術的な事 必須のツール

48

Page 49: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

OSS開発の基本ツール

• ソースコード管理 - Subversion, Git, etc.

• まずはこれが無いと始まらない

• 情報の共有 - Wiki, CMS, Issue Tracker

• 遠隔地の人々との共同作業になるので必須

• 継続的インテグレーション - 自動ビルドとテスト

• 現在の主流はナイトリービルドでは無く、コードのチェックインが自動テストとビルドをトリガする方式

49

Page 50: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

開発のインフラ

• 今は様々なホスティングサービスが無料で利用可能

• Google Code

• Source Forge

• GitHub

• すぐに使ってみる!

50

Page 51: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

とにかく参加する事が大事

• まずメーリングリストなどに参加

• 自分の分かる分野なら、積極的にユーザーからの質問などに答える

51

Page 52: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

まとめ

• Googleは、GSoC等も含めた様々なオープンソース支援活動を行っているので、積極的に利用すべき

• メンターは基本的にはボランティアだが、いい経験なのでやってみる価値はあり

• うまく行けば新しいコミッターが得られる

• Mentor Summitも機会があれば是非参加してみるべき

• 様々な制度を活用してプロジェクトを充実させて行ける

52

Page 53: Google Summer of Code, Mentor Summit, and Open …chianti.ucsd.edu/~kono/data/scdn_12_5_2009_keiono.pdfGoogle Summer of Code, Mentor Summit, and Open Source Software Development Keiichiro

Thank You!

53