🎉

オープンソースソフトウェアいろいろ

2022/01/07に公開

オープンソースソフトウェア(以下OSS)にはいろんなものがあることについて書きます。さんざ語りつくされてきたことですけど、自分でもう一度整理したくなったので書きます。

オープンソースなソフトウェアとそうでないものの区別

オープンソースは「俺がオープンソースと言ったらオープンソース」とか「人によっていろいろな考え方があるよね」とかではなく、明確な定義があります。

以下Open Source Initiativeによる定義です。

https://opensource.org/docs/osd

八田さんによる邦訳。

https://opensource.jp/osd/osd19/

これ以降は邦訳のほうを使って説明します。

OSSについてのよくある勘違いに「ソースが公開されていればOSSでしょ」というものがありますです。これはたとえば「3. 派生ソフトウェア」を見れば、違っていることがわかります。

ライセンスは、ソフトウェアの変更と派生ソフトウェアの作成、並びに派生ソフトウェアを元のソフトウェアと同じライセンスの下で頒布することを許可しなければなりません。

つまりライセンスに「変更しちゃだめ」とか「変更してもいいけど、それを再頒布しちゃだめ」とか書いてるとオープンソースとは言えません。

二つ目は「5. 個人やグループに対する差別の禁止」です。

ライセンスは特定の個人やグループを差別してはなりません。

したがって「名前が"武内覚"(筆者の名前です)なやつは嫌いだから再頒布禁止」というのはできません。極論を言うと、世界征服をもくろむ悪の組織がソフトウェアを使おうとしたときにも、それをライセンスによって妨げてはいけません[1]

プロジェクトごとの違い

世界にはOSSのプロジェクトが大量にあります。それらはソースコードが前述の定義に従ったライセンスによって頒布されていればよくて、裏を返せば、それ以外のところは物によって全然違います。

まずは開発リソースがどこから出てきているかという観点があります。開発者が誰かというと、企業の社員だったり、研究者だったり、個人だったりします。それらの人を突き動かすものが何かというと、企業を含むなんらかの組織から支援を受けていることもありますし、無償で気合いで頑張っている人もいます。よく見るのは「企業が自社の利益のために予算をとって社員を開発者にしている」「個人が気合いでやっている」です。お金がもらえるかそうでないかは大きな問題なので、「気合いドリブンでやっていたけど、ある時燃え尽きてメンテをやめてしまった」という話は枚挙にいとまがありません。

プロジェクトの方針を誰が決めているかという観点でいうと、特定個人が決めたり、開発者間の合議によって決まったり、あるいはプロジェクトをバックアップしている企業の意向によって決まったりします。企業のバックアップを受けているプロジェクトでも、企業の色がついていない人がすべてを取り仕切っていることもあります。このへんはプロジェクトによって違いますし、時間の経過にともなって変わっていくことも珍しくありません。

プロジェクトを立ち上げた人たち以外の貢献受け入れているのかという観点もあります。OSSの利点の一つに「誰でも開発に参加できる」が挙げられることがありますが、実際には外部からのコードはなかなか受け入れられなかったり、そもそも受け入れないと表明しているプロジェクトもあります。オープンソースなことと開発がオープンかどうかは別の話です。そして、どちらがいいとかいう話でもありません。これについてもプロジェクトの方針が変われば受け入れ具合が変わったりします。

開発スタイルもプロジェクトによって全然違います。一例を挙げると、新機能を取り込む際に「まずコードを出せ、話はそれからだ」というプロジェクトもありますし、「まずはproposalを出して。それをもとにじっくり議論してからコードを書き始めよう」というプロジェクトもあります。開発ツールも色々で、githubなどの有名どころのツールを使うこともあれば、メーリングリストベースの開発をしているところもあります。細かいところでいうと「コミットメッセージにsigned-off-byを付けるか否か」「PRコメント反映時に、レビュー結果を反映した新commitを積み重ねるか、あるいはもとのcommitを更新してforce pushするか」なんていう違いもあります。

プロジェクトごとの違いはドキュメントを読んだり、githubやslackやメーリングリストなどをしばらくROMってみたりするとなんとなくわかってきます。もしユーザあるいは開発者としてプロジェクトに入りたければ、そこの文化を理解をした上でうまく溶け込むといいのかなと思います。

おわりに

他にもいっぱいあると思うんですが、ぱっと思いつくものは書いてしまったので、このへんで終わりにします。「こういうところはどんな違いが出るの?」などの疑問があれば教えてください。

脚注
  1. もっともそういう組織はライセンスとは別に法律によって対象ソフトウェアを使用できなるでしょうが… ↩︎

Discussion