OSS開発に見る SCM中心型ソフトウェア開発

オープンソースソフトウェア開発に見る
SCM中心型ソフトウェア開発
松下誠
大阪大学大学院情報科学研究科
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
今日の話題
 「オープンソースソフトウェア(OSS)」とは
 OSS開発概観
 OSS開発におけるSCMの役割
 開発事例
 まとめ
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
オープンソースソフトウェア(OSS)とは
 “The Open Source Definition,”
http://www.opensource.org/docs/definition.php
 (OSSのひとつである)Debianが採用していた The Debian
Free Software Guidelines に由来
 OSSが満たすべき10の条件を列挙
ソースコードや派生ソフトウェアの頒布,再頒布の自由
差別の禁止,特定の状況下のみ有効なライセンスの禁止,など
 開発プロセスでも製品でもなく,製品の「ライセンス形態」
 しかし,一般的には…
 「とりあえず無料で入手できるソフト」「良いらしい」
 なんだかよくわからないけど,好きな人が勝手に作っている
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
OSSとOSS「開発」
 OSSそのものは「結果」
 誰が,いつ,どのようにして作成したかには依存しない
 手に入れたバイナリやソースコードがすべて
 作った人が存在しているかどうかも関係ない
 場合によっては,その後自分自身が作ることも可能
 OSS開発は「ソフトウェアの開発(過程)」
 人の手によって,ソフトウェアがscratchから作られる
通常のソフトウェア開発と「何も」違わない
 お金や時間などでは解決できない制約下での開発
 ユーザ不在(あるいは,開発者自身がユーザ)
 開発「組織」があいまい(互いに何らかの制約を持つことはまれ)
 時間や空間を共有しにくい(世界中に分散した開発者)
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
OSS開発概観
 OSS開発は多様な形態がありえる
OSS自身が開発方法について何か決めているわけではない
 比較的「良くある」OSS開発の場合…
 互いに独立している複数の開発者(グループ)
 「利用者」と「開発者」の境界はあいまい
 開発に参加している理由づけもあいまい(かもしれない)
 Internet上で(ほぼすべての)開発者相互のやり取りを行う
 コミュニケーション (email, irc, wiki, blog, …)
 成果物 (code, documents, …)
 個人(グループ)開発の寄せ集めによる開発作業
 これからの開発内容は決まっていないかもしれない
 何をいつまでにやるべきかも決まっていないかもしれない
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
OSS開発におけるSCMの役割
「使いたい」ではなく「ないと困る」SCM
 生成物を保持するための貯蔵庫
 自分の作ったものを起き,他人に利用してもらう
 必要な部分だけを入手,あるいは保存
 開発プロセスを円滑に進めるための支援システム
 作業者や変更内容の把握
 変更理由をあわせて管理
 議論の材料
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
貯蔵庫としてのSCM
開発形態からくる制約
 個別に行われた作業をまとめる場所
個人で行っているならば不要(かもしれない)
全体の取りまとめ役をSCMに任せる
 ソフトウェアを配布する手段
(開発対象となる)最新のソースコードを配布
任意の時点でのソースコードを提供可能
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
開発プロセス支援としてのSCM
 作業者や変更内容の把握
 誰がいつどんな変更をしたのか記録したい
 逐一変更報告するのは面倒
 変更理由の管理
 修正した「理由」を登録時にあわせて記録できる
 変更の歴史が残る
 議論の材料
 「この修正が問題だ」と示す
 過去の変更履歴を保持している
 メーリングリスト等との連携
 「こういう修正はどうか」と示す
 任意の時点のコードに対する差分を容易に作れる
 バグ管理システム等との連携
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
OSSで使われるSCMの例
 CVS: http://www.nongnu.org/cvs/
 RCSからの派生物,古いが事実上の標準
 ロックなし check-in/check-out モデル
 差分情報を保存(RCS互換のテキストデータ)
 ブランチ作成等,基本的な機能は一通りそろっている
 最近使われつつある新しいSCM
 subversion: http://subversion.tigris.org/
 “better CVS” として一から作成される
 ネットワーク対応,一貫性の保証,容易なブランチ操作
 Perforce: http://www.perforce.com/
 Perforce社による商用製品
 OSS開発向けに無償ライセンスを提供
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
CVSと共に用いられるツール
 電子メールやメーリングリスト
 CVSリポジトリに対する変更内容をメールで配布
 開発用メーリングリストに変更内容のメールを流す
 Webインターフェイス: CVSweb, viewcvs, etc
 CVSリポジトリ閲覧用
 手元にCVSの利用環境がなくても使える
 CVSup: http://www.cvsup.org/
CVSリポジトリに特化したファイル同期用ツール
 CVSサーバ
 もともとcvsはネットワーク環境下での利用を想定していない
 遠隔操作を安全に行うためのサーバ
sandbox構築,cvsd などの専用サーバ,など
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
OSS開発事例: FreeBSD
 いわゆる BSD UNIX のひとつ
 開発当初よりCVSを採用
 過去のBSDはSCMとしてSCCSを採用
 11年分のソースコードが約1.4GBのCVSリポジトリへ格納
(ソースコード全体で約440MB)
 開発組織
 総計約340人(うち220人がソースコード修正可能)
 開発者相互の選挙で選ばれた core team
 目的別のチーム
リリース管理,ports (アプリケーション集),ほか
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
FreeBSDにおけるソフトウェア開発
 一般に公開されたCVSリポジトリ
 CVSupを用いて世界中に複製される(必要なら手元にも)
 適宜リポジトリからソースコードを取り出して利用
単にコンパイルして使うだけ,という形態もある
 CVSリポジトリと連動したメーリングリスト
 開発者向けだが,最新の開発動向を知ることも可能
 CVSへの登録時につけたコメントから生まれる議論
その修正は間違っている,その理由付けには疑問がある,など
 開発者や利用者相互のメーリングリスト
 修正はCVSリポジトリ内のコードに対する差分で示される
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
SCMを用いた開発が行われる理由
「SCMは有用である,ないと困る」という意識
 ソースコードを自由に手に入れたい
いちいち他人の手を煩わせたくはない
欲しいときに,欲しいものを,いつでも
 残された記録の重要
なぜそういうコードが書かれたかを知る
修正した人がわかれば直接聞ける
過去のミスを繰り返さないための記録
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
まとめ
 OSSとOSS開発
 OSS開発におけるSCMの役割
 ファイル共有
 開発プロセス支援
 SCMの利用事例
CVSを用いたFreeBSD開発
Nov/01/2005
第15回S-openホットセッション
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14