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