IIJでは広報誌「IIJ.news」を隔月で発行しています。本blogエントリは、IIJ.newsで連載しているコラム「インターネット・トリビア」と連動しています。
コラムの前半部分はIIJ.news vol.122(PDFで公開中)でご覧下さい。

前編では、オープンソフトウェアは、単なる「無料のソフトウェアではない」ということを紹介しました。ソースコードが公開されることで、特定の企業に所属していない人でも、そのソフトウェアの改良に携わることができます。そうした可能性があることが、オープンソースソフトウェアの魅力の一つなのです。

このようなオープンソースソフトウェアの改良は、数多くのエンジニアによって行われています。ソフトウェアの改良のためにはプログラミングだけでなく、開発されたソフトウェアを自動的にテストするための仕組みの整備や、開発に区切りをつけてソフトウェアを配布用にとりまとめる作業、ソフトウェアの利用方法をまとめた文書の整備も必要です。もともと英語圏で開発されたソフトウェアの場合、英語の文章を日本語に翻訳することも大きな作業の一つです。

こういった、ソフトウェアの改良にまつわる様々な作業をまとめて「オープンソースソフトウェアへの貢献」と呼ぶこともあります。

オープンソースソフトウェアに貢献するモチベーション

ところで、エンジニアは何故オープンソースソフトウェアへ貢献しようとするのでしょうか。もちろん、趣味の一つとして楽しみのために参加するという事もありますが、もう少し差し迫った理由がある場合もあります。

典型的な例では、そのソフトウェアの利用者自身が、ソフトウェアの改善を行うケースです。どんなソフトウェアにもバグはありますし、使っていれば不満点も見つかります。ソースコードが公開されていれば、利用者自身が自分でそれを修正してしまえば良いのです。

また、利用者としてではなく、製品開発の一環としてオープンソースソフトウェアの改善に参加する場合もあります。オープンソースソフトウェアは幅広い利用が認められていますが、その中にはソフトウェアをビジネスに利用する事も含まれています。例えば、有償の製品の一部としてオープンソースソフトウェアを利用することも可能です。1

製品の開発側にとっては、実績のあるオープンソースソフトウェアをベースにすることで、製品の品質を上げたり、開発期間を短縮したりする事ができます。ただ、既存のソフトウェアが自分の作りたい製品の要求を100%満たしていることはまれでしょうから、何らかの修正を行う場合があります。

このようにして、オープンソースソフトウェアを修正した場合、その修正箇所を手元にとどめておくだけでなく、オリジナルのソフトウェアに「還元」する事があります。修正を還元することで、オープンソースソフトウェアを利用する事で自分が受けた恩を、他の人にもお返しするという考え方です。

こういった「還元」は、恩の貸し借り以外に具体的なメリットもあります。自分達が行った修正を手元に抱えたままでいると、オリジナルのソフトウェアがバージョンアップした際に、その都度修正を反映させる作業を行わなければなりません。しかし、修正箇所を還元してオリジナルのソフトウェアの一部として取り込まれてしまえば、以後のバージョンアップでもその修正が生き続けることになります。

これは、オープンソースソフトウェアを中心とした一つのエコシステムと言えるでしょう。

モチベーションだけでは続かない

しかし、オープンソースソフトウェアは魔法の玉手箱ではありません。オープンソースソフトウェアに関わるエンジニアはそれぞれ自分達の思惑をもって関わっているため、時には利害が衝突することもあります。ある人にとってはとても有用な改善が、別の人にとっては受け入れがたい改悪になる事もありますし、多くの人が重要だと思いつつも、それを改善する時間を捻出できない修正箇所が見つかることもあります。

こういった利害の衝突を解決するためには、一定のリーダーシップが必要になります。そのソフトウェアのあるべき姿を説き、何を採用して何を却下するのかを判断する。誰も手をつけない問題を拾い上げて対応する。そういった役目を担う人が必要になるのです。

特に大規模なソフトウェアになると、リーダーシップを取る人の負担は大きくなります。趣味や業務の片手間ではまかないきれず、ほとんどフルタイムでオープンソースソフトウェアに関わる事になる場合もあります。

そういったエンジニアは、オープンソースソフトウェアと関わりの深い企業に雇用されていたり、オープンソースソフトウェアを推進する為に設立された財団から支援を受けることもあります。しかし、最終的には自社の製品開発に繋がるとは言え、オープンソースソフトウェアのためだけにエンジニアを大勢雇用することは難しいですし、必ずしも財団に潤沢な資金があるわけではありません。

オープンソースソフトウェアを維持するには

実際問題、多くのオープンソースソフトウェアの開発プロジェクトではリーダーシップの不足による活動の停滞や、資金の確保に頭を悩ませています。中には、インターネット上で日常的に使われているソフトウェアなのに「資金が足りない!」と支援要請が出たプロジェクトもありました。

いくつかのオープンソースソフトウェア開発プロジェクトでは、資金獲得のためにTシャツやステッカーなどのグッズを販売したり、寄付を募っていたりします。もし、趣旨に賛同できるプロジェクトがあれば、そういった支援も考えてみてください。

  1. オープンソースソフトウェアを製品に取り込む場合、取り込むソフトウェアのライセンスによっては、製品自体のソースコードも公開する義務を負う場合があります []