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

OSS とは

オープンソースソフトウェアとは、ソースコードを公開し、世界中の人が自由に使えるソフトウェアのことです。 具体例として、Linux やその派生の Android などが挙げられます。

逆に、市販されているソフトウェアなどソースの公開されていないソフトウェアは、プロプライエタリソフトウェアと言います。

どんな人が学ぶべきか

技術そのものというよりは、法律や概念の話ですが、特定の分野では知っておくべきものになります。

  • アプリケーションを公開したい人
    • ライセンスを正しく理解していないと、トラブルになる可能性があります
  • インフラ系エンジニア
    • 特に業務で Linux を扱う場合、あらゆる場所で OSS と関わることになります

この分野を学ぶと何が知れるの?

  • 今後ソフトウェアを公開する上でのルールを知れる
  • 各ライセンスの違いや、注意事項を知れる
  • ソフトウェアの歴史を知れる

どう学んでいけばいいの?

他のソフトウェアを使う時や、特にコードを書く人はライブラリなどを使う時にライセンスを確認し、調べてみましょう。 GitHub だと、LICENSE ファイルとして表示されている場合が多いです。

また、実際に起きた OSS をめぐる事件や、身近な会社の OSS を調べるのも面白いと思います。 日本だと、キャノンは OSS を活用している会社として有名です。

よくある誤解

OSS として公開するとビジネスにならない?

OSS でビジネスをしている会社もあります。 例えば Android は OSS で誰でも無償で使えますが、Google は Android のアプリストアを運営し、その手数料によって利益を得ています。

OSS ソフトウェア自体を利益にすることは難しいですが、そのソフトウェアの追加サポートや、追加サービスを有料化して利益を得ている会社もあります。

OSS はインターネット上にソースコードを公開しなければならない

実は OSS において、インターネット上でのソース公開は必須ではありません。 欲しい人が手に入る状態になっていれば良いため、キャノンのように問い合わせをした人に、データを直接 CD などでで送る形式でも問題ありません。

基礎知識

OSS には様々なライセンスがありますが、代表的なものや、特定の注意点があるものを挙げます。 なお、ここでの説明は細部を端折っており、正確ではありません。今後 OSS に関わる場合は、自分で調べることをおすすめします。

GPL 系ライセンス

具体的には LGPL, GPL, AGPL などがあります。 OSS ライセンスの中では、Linux や gcc(C 言語コンパイラ)など基盤的なソフトウェアへの採用例が多いです。

注意すべきこととして、コピーレフト という概念があります。 GPL 系ライセンスを何らかの形で使用した場合、これに注意する必要があります。

コピーレフトは GPL ライセンスを使用したソフトウェアを改変したり使用してソフトウェアを作り、そのソフトウェアを公開した場合、そのソフトウェアのソースコードも GPL ライセンスで公開しなければならない というものです。

つまり GPL を使ったソフトウェアを使う人が増えると、派生形 GPL ソフトウェアが公開され、更にその派生が…..と続いていきます。

複雑かつ様々な問題が過去に起きているライセンスでもあるため、今後使う予定のある人はライセンスを良く調べておきましょう。 特に AGPL の適用範囲は非常に広いため、WEB に関わるエンジニアは把握しておくことをおすすめします。

MIT

GitHub で最も使われているライセンスとして、有名なライセンスです。 自分の作ったソフトウェアのソースコードを公開したい時は、一般的にこのライセンスを採用する場合が多いでしょう。

内容はかなりシンプルです。

  • 誰でも無償で無制限に使える
  • これを使用したソフトウェアを公開する場合、著作権表示と許諾表示が必要
  • 作者はソフトウェアに対して責任を負わない。

BSD 系ライセンス

こちらは比較的緩めのライセンスで、MIT と同じく自作ソフトウェアのライセンスとして便利です。 MIT とほぼ同じですが、ソフトウェアから派生した製品の宣伝等に、作成者(コントリビュータ)の名前を勝手に使ってはいけない という条件が追加されます。

ライブラリ等で見かけることが多いと思います。

OSSにコントリビューションしたい!

OSSにコントリビュートするハードルが高いと思う方は、OSSにチャレンジという発想やめて必要なときにすればいいと思います。例えば、ライブラリのドキュメントにタイポ見つけたのでプルリクエスト投げるとか。 一回のコントリビュートが自信につながります。

Good First IssueというGithubのgood first issueラベルが付いたIssueの一覧を参照できるサイトがあります。
good first issueははじめてのコントリビュートに向いているIssueにつけられるラベル ぜひコントリビューションしてみてください!