オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

14
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University オオオオオオオオオオオオオオオオオオ SCM オオオオオオオオオオオ オオオ オオオオオオオオオオオオオオ

description

オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発. 松下誠 大阪大学大学院情報科学研究科. 今日の話題. 「オープンソースソフトウェア (OSS) 」とは OSS 開発概観 OSS 開発における SCM の役割 開発事例 まとめ. オープンソースソフトウェア (OSS) とは. “The Open Source Definition,” http://www.opensource.org/docs/definition.php - PowerPoint PPT Presentation

Transcript of オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Page 1: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

オープンソースソフトウェア開発に見る

SCM 中心型ソフトウェア開発

松下誠大阪大学大学院情報科学研究科

Page 2: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

今日の話題 「オープンソースソフトウェア (OSS) 」とは OSS 開発概観 OSS 開発における SCM の役割 開発事例 まとめ

Page 3: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

オープンソースソフトウェア(OSS) とは

“The Open Source Definition,” http://www.opensource.org/docs/definition.php ( OSS のひとつである) Debian が採用していた The De

bian Free Software Guidelines に由来 OSS が満たすべき 10 の条件を列挙

ソースコードや派生ソフトウェアの頒布,再頒布の自由差別の禁止,特定の状況下のみ有効なライセンスの禁止,など

開発プロセスでも製品でもなく,製品の「ライセンス形態」

しかし,一般的には… 「とりあえず無料で入手できるソフト」「良いらしい」 なんだかよくわからないけど,好きな人が勝手に作ってい

Page 4: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

OSS と OSS 「開発」 OSS そのものは「結果」

誰が,いつ,どのようにして作成したかには依存しない 手に入れたバイナリやソースコードがすべて

作った人が存在しているかどうかも関係ない 場合によっては,その後自分自身が作ることも可能

OSS 開発は「ソフトウェアの開発(過程)」 人の手によって,ソフトウェアが scratch から作られる

通常のソフトウェア開発と「何も」違わない お金や時間などでは解決できない制約下での開発

ユーザ不在(あるいは,開発者自身がユーザ) 開発「組織」があいまい(互いに何らかの制約を持つことはま

れ) 時間や空間を共有しにくい(世界中に分散した開発者)

Page 5: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

OSS 開発概観 OSS 開発は多様な形態がありえる

OSS 自身が開発方法について何か決めているわけではない 比較的「良くある」 OSS 開発の場合…

互いに独立している複数の開発者(グループ)「利用者」と「開発者」の境界はあいまい開発に参加している理由づけもあいまい(かもしれない)

Internet 上で(ほぼすべての)開発者相互のやり取りを行うコミュニケーション (email, irc, wiki, blog, …)成果物 (code, documents, …)

個人(グループ)開発の寄せ集めによる開発作業これからの開発内容は決まっていないかもしれない何をいつまでにやるべきかも決まっていないかもしれない

Page 6: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

OSS 開発における SCM の役割「使いたい」ではなく「ないと困る」 SCM

生成物を保持するための貯蔵庫 自分の作ったものを起き,他人に利用してもらう 必要な部分だけを入手,あるいは保存

開発プロセスを円滑に進めるための支援システム 作業者や変更内容の把握 変更理由をあわせて管理 議論の材料

Page 7: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

貯蔵庫としての SCM

開発形態からくる制約 個別に行われた作業をまとめる場所

個人で行っているならば不要(かもしれない)全体の取りまとめ役を SCM に任せる

ソフトウェアを配布する手段(開発対象となる)最新のソースコードを配布任意の時点でのソースコードを提供可能

Page 8: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

開発プロセス支援としての SCM 作業者や変更内容の把握

誰がいつどんな変更をしたのか記録したい 逐一変更報告するのは面倒

変更理由の管理 修正した「理由」を登録時にあわせて記録できる 変更の歴史が残る

議論の材料 「この修正が問題だ」と示す

過去の変更履歴を保持している メーリングリスト等との連携

「こういう修正はどうか」と示す 任意の時点のコードに対する差分を容易に作れる バグ管理システム等との連携

Page 9: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

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 開発向けに無償ライセンスを提供

Page 10: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

CVS と共に用いられるツール 電子メールやメーリングリスト

CVS リポジトリに対する変更内容をメールで配布 開発用メーリングリストに変更内容のメールを流す

Web インターフェイス : CVSweb, viewcvs, etc CVS リポジトリ閲覧用 手元に CVS の利用環境がなくても使える

CVSup: http://www.cvsup.org/CVS リポジトリに特化したファイル同期用ツール

CVS サーバ もともと cvs はネットワーク環境下での利用を想定していな

い 遠隔操作を安全に行うためのサーバ

sandbox 構築, cvsd などの専用サーバ,など

Page 11: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

いわゆる BSD UNIX のひとつ 開発当初より CVS を採用

過去の BSD は SCM として SCCS を採用 11 年分のソースコードが約 1.4GB の CVS リポジト

リへ格納(ソースコード全体で約 440MB ) 開発組織

総計約 340 人(うち 220 人がソースコード修正可能)

開発者相互の選挙で選ばれた core team 目的別のチーム

リリース管理, ports (アプリケーション集),ほか

OSS 開発事例 : FreeBSD

Page 12: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

FreeBSD におけるソフトウェア開発

一般に公開された CVS リポジトリ CVSup を用いて世界中に複製される(必要なら手元にも) 適宜リポジトリからソースコードを取り出して利用

単にコンパイルして使うだけ,という形態もある CVS リポジトリと連動したメーリングリスト

開発者向けだが,最新の開発動向を知ることも可能 CVS への登録時につけたコメントから生まれる議論

その修正は間違っている,その理由付けには疑問がある,など 開発者や利用者相互のメーリングリスト

修正は CVS リポジトリ内のコードに対する差分で示される

Page 13: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

SCM を用いた開発が行われる理由

「 SCM は有用である,ないと困る」という意識 ソースコードを自由に手に入れたい

いちいち他人の手を煩わせたくはない欲しいときに,欲しいものを,いつでも

残された記録の重要なぜそういうコードが書かれたかを知る修正した人がわかれば直接聞ける過去のミスを繰り返さないための記録

Page 14: オープンソースソフトウェア開発に見る SCM 中心型ソフトウェア開発

Nov/01/2005 第15回S-openホットセッション14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめ OSS と OSS 開発 OSS 開発における SCM の役割

ファイル共有 開発プロセス支援

SCM の利用事例CVS を用いた FreeBSD 開発