OSSの公開のやり方をまとめてみた

OSS(Open Source Software)を公開したいとき、
どうやって公開するのかいまいち理解していなかったので、ここにまとめたいと思います。

前提

GitHubでの公開を前提としています。

必要なもの

最低限必要なものは以下です。

  • ソースコード
  • README
  • ライセンス表記

ソースコード

当然ですが、ソースコードが必要です。
テストコードもあればほかの人からも触りやすくなるのではないかと思います。

Go言語などはビルドするとバイナリが生成されますが、
バイナリは差分管理できないので、コミットするごとにリポジトリサイズが増大してきます。
必要がなければバイナリファイルはコミットしないほうがよいでしょう。

README

READMEを書く意義

ソースコードの説明書でもある「README」ファイルは必ず用意したほうがよいです。
ソースコードだけでは、

  • このOSSで実現できること
  • どうやって使うのか

がわかりません。
「ソースコードを見ればわかる」かもしれませんが
OSSで公開するということは誰かに使ってほしい ということだと思うので
それを意識するなら、READMEは必須といえるでしょう。

書き方

まずREADMEファイルの拡張子についてですが、GitHubでは様々な拡張子が対応しているようです。
好みでいいと思いますが、自分はMarkdownが書きやすいので「.md」で作成します。

続いてフォーマットについてです。
どういう感じにREADMEを書いたらいいのかというのは悩むところだと思います(自分もです…)

参考に人気が高いOSSのREADMEを色々見て、最低限これがあればいいなというテンプレートを作りました。

# Name
Overview

## Description

## Example

## Usage

## Installation

## License
Please see the LICENSE file for details.
[URL]

## Author
Full Name(GitHub Profile URL)

それぞれの項目について説明していきます。
ちなみにすべて英語で書きましょう…!

Name - Overview

名前と概要を記載します。

なにを目的として作ったものなのかがわかる程度の内容でいいと思います。

Description

概要より一歩踏み込んだ説明をしたい場合、Descriptionに記載します。
アーキテクチャの説明などをしているケースが多いようです。

Example

使い方の例を記載します。
この例がないOSSもたくさんあるようですが、この例があるほうがよりどういう性質のOSSなのかが伝わりやすいと思いました。

コマンドラインツールなら、そのコマンドの実行例。
Webアプリケーションなら、実際に使っている様子のGif画像があるとより直感的だと思います。

Usage

ここには使い方を記載します。

コマンドラインツールの場合は、オプションの指定方法やその内容などを記載します。
個人的には「lltsv」のUsageが簡単でわかりやすいと思いました。

https://github.com/sonots/lltsv

Installation

インストール方法を記載します。
例えばGo言語の場合はこんな感じです。

go get -u github.com/aws/aws-sdk-go
License

後述しますが、License表記について説明します。
License表記については別途LICENSEファイルとしてコミットするので、
ここでは「このファイル見てね!」と記載すればよいでしょう。

Author

自分の名前を記載します。

ライセンス表記

自分が作ったプロダクトをOSSとして公開する場合、ライセンスが必要となります。

必要な理由は

  • OSSの利用・修正を他人にしてもらうため
  • 自分を守るため

特に記載がない場合は、著作権法により、自分が作ったソースを他人が使用したり改変できないです。

また 「自分が作成したOSSでなにか問題が起きた場合でも、自分は一切責任を負いません。」と宣言することにより
訴訟などのリスクから自分を守るために、ライセンス表記が必要です。

自分が主張したいことにより、どのライセンスを選択するのかが変わってきます。
どうやって選択していくかは下記が非常に参考になりました。

http://www.catch.jp/oss-license/2013/09/10/github/

ライセンスの種類は下記が詳しかったです。

http://coliss.com/articles/build-websites/operation/work/choose-a-license-by-github.html

自分の場合は、特になにか主張したこともないので、MITライセンスを選択します。

いずれのライセンスを選ぶにせよ、ライセンスに記載されている内容はよく確認したほうがよいでしょう。
MITライセンスの場合、こちらの記事が参考になりました!

http://postd.cc/mit-license-line-by-line/

MITライセンスは、以下からコピーして「LICENSE」ファイルとして
READMEファイルと同じ階層に置いておきましょう。

https://spdx.org/licenses/MIT

最後に

という感じでOSSの公開のやり方についてまとめてみました。

ただGitHubにソース置いとけばおk!というわけではなく、
他人が利用するために様々なことをしないといけないというのを改めて感じました。