オープンソースソフトウェア開発に見る 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
© Copyright 2024 ExpyDoc