1 / 14

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

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

coen
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. オープンソースソフトウェア開発に見るSCM中心型ソフトウェア開発オープンソースソフトウェア開発に見るSCM中心型ソフトウェア開発 松下誠 大阪大学大学院情報科学研究科

  2. 今日の話題 • 「オープンソースソフトウェア(OSS)」とは • OSS開発概観 • OSS開発におけるSCMの役割 • 開発事例 • まとめ 第15回S-openホットセッション

  3. オープンソースソフトウェア(OSS)とは • “The Open Source Definition,” http://www.opensource.org/docs/definition.php • (OSSのひとつである)Debianが採用していた The Debian Free Software Guidelines に由来 • OSSが満たすべき10の条件を列挙 ソースコードや派生ソフトウェアの頒布,再頒布の自由 差別の禁止,特定の状況下のみ有効なライセンスの禁止,など • 開発プロセスでも製品でもなく,製品の「ライセンス形態」 • しかし,一般的には… • 「とりあえず無料で入手できるソフト」「良いらしい」 • なんだかよくわからないけど,好きな人が勝手に作っている 第15回S-openホットセッション

  4. OSSとOSS「開発」 • OSSそのものは「結果」 • 誰が,いつ,どのようにして作成したかには依存しない • 手に入れたバイナリやソースコードがすべて • 作った人が存在しているかどうかも関係ない • 場合によっては,その後自分自身が作ることも可能 • OSS開発は「ソフトウェアの開発(過程)」 • 人の手によって,ソフトウェアがscratchから作られる 通常のソフトウェア開発と「何も」違わない • お金や時間などでは解決できない制約下での開発 • ユーザ不在(あるいは,開発者自身がユーザ) • 開発「組織」があいまい(互いに何らかの制約を持つことはまれ) • 時間や空間を共有しにくい(世界中に分散した開発者) 第15回S-openホットセッション

  5. OSS開発概観 • OSS開発は多様な形態がありえる OSS自身が開発方法について何か決めているわけではない • 比較的「良くある」OSS開発の場合… • 互いに独立している複数の開発者(グループ) • 「利用者」と「開発者」の境界はあいまい • 開発に参加している理由づけもあいまい(かもしれない) • Internet上で(ほぼすべての)開発者相互のやり取りを行う • コミュニケーション (email, irc, wiki, blog, …) • 成果物 (code, documents, …) • 個人(グループ)開発の寄せ集めによる開発作業 • これからの開発内容は決まっていないかもしれない • 何をいつまでにやるべきかも決まっていないかもしれない 第15回S-openホットセッション

  6. OSS開発におけるSCMの役割 「使いたい」ではなく「ないと困る」SCM • 生成物を保持するための貯蔵庫 • 自分の作ったものを起き,他人に利用してもらう • 必要な部分だけを入手,あるいは保存 • 開発プロセスを円滑に進めるための支援システム • 作業者や変更内容の把握 • 変更理由をあわせて管理 • 議論の材料 第15回S-openホットセッション

  7. 貯蔵庫としてのSCM 開発形態からくる制約 • 個別に行われた作業をまとめる場所 • 個人で行っているならば不要(かもしれない) • 全体の取りまとめ役をSCMに任せる • ソフトウェアを配布する手段 • (開発対象となる)最新のソースコードを配布 • 任意の時点でのソースコードを提供可能 第15回S-openホットセッション

  8. 開発プロセス支援としてのSCM • 作業者や変更内容の把握 • 誰がいつどんな変更をしたのか記録したい • 逐一変更報告するのは面倒 • 変更理由の管理 • 修正した「理由」を登録時にあわせて記録できる • 変更の歴史が残る • 議論の材料 • 「この修正が問題だ」と示す • 過去の変更履歴を保持している • メーリングリスト等との連携 • 「こういう修正はどうか」と示す • 任意の時点のコードに対する差分を容易に作れる • バグ管理システム等との連携 第15回S-openホットセッション

  9. 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ホットセッション

  10. CVSと共に用いられるツール • 電子メールやメーリングリスト • CVSリポジトリに対する変更内容をメールで配布 • 開発用メーリングリストに変更内容のメールを流す • Webインターフェイス: CVSweb, viewcvs, etc • CVSリポジトリ閲覧用 • 手元にCVSの利用環境がなくても使える • CVSup: http://www.cvsup.org/ CVSリポジトリに特化したファイル同期用ツール • CVSサーバ • もともとcvsはネットワーク環境下での利用を想定していない • 遠隔操作を安全に行うためのサーバ sandbox構築,cvsd などの専用サーバ,など 第15回S-openホットセッション

  11. OSS開発事例: FreeBSD • いわゆる BSD UNIX のひとつ • 開発当初よりCVSを採用 • 過去のBSDはSCMとしてSCCSを採用 • 11年分のソースコードが約1.4GBのCVSリポジトリへ格納(ソースコード全体で約440MB) • 開発組織 • 総計約340人(うち220人がソースコード修正可能) • 開発者相互の選挙で選ばれた core team • 目的別のチーム リリース管理,ports (アプリケーション集),ほか 第15回S-openホットセッション

  12. FreeBSDにおけるソフトウェア開発 • 一般に公開されたCVSリポジトリ • CVSupを用いて世界中に複製される(必要なら手元にも) • 適宜リポジトリからソースコードを取り出して利用 単にコンパイルして使うだけ,という形態もある • CVSリポジトリと連動したメーリングリスト • 開発者向けだが,最新の開発動向を知ることも可能 • CVSへの登録時につけたコメントから生まれる議論 その修正は間違っている,その理由付けには疑問がある,など • 開発者や利用者相互のメーリングリスト • 修正はCVSリポジトリ内のコードに対する差分で示される 第15回S-openホットセッション

  13. SCMを用いた開発が行われる理由 「SCMは有用である,ないと困る」という意識 • ソースコードを自由に手に入れたい • いちいち他人の手を煩わせたくはない • 欲しいときに,欲しいものを,いつでも • 残された記録の重要 • なぜそういうコードが書かれたかを知る • 修正した人がわかれば直接聞ける • 過去のミスを繰り返さないための記録 第15回S-openホットセッション

  14. まとめ • OSSとOSS開発 • OSS開発におけるSCMの役割 • ファイル共有 • 開発プロセス支援 • SCMの利用事例 CVSを用いたFreeBSD開発 第15回S-openホットセッション

More Related