Posted at

ApacheライセンスのソースコードをGithubにあげるまで

More than 3 years have passed since last update.

猫も杓子もMIT License、みたいな感じなので…


Apacheライセンスってなんだ

Apache Software Foundation1が提供する製品のソフトウェアライセンスです。概ねBSDライセンスと同じ(つまりMITライセンスとも同じ)なのですが、さらに許諾の範囲が明確です。

あんまり長くないので、全文読んだ方が良いと思ひます。まあMITライセンスの数倍長いけど。

MITライセンスなどの短いライセンスとの差は以下のようになるかと思ひます。


  • 用語の定義が明確

  • 特許の許諾が含まれる

  • Submission of Contributions(コントリビューションの提出)条項がある

筆者は別に特許とか持ってないので関係ないといへば関係ないのですが、利用者としては安心できる要素ですね。

「コントリビューションの提出」は、GithubではPull Requestにあたりますね。

ソースコードでコミュニケーションをとるSNSであるところのGithubですが、Pull Requestと著作権の関係は実のところ曖昧に運用されることが多いですよね。Apacheライセンスにはその点が組み込まれてるので、非常にGithub向きのライセンスだと思ひます。


やること


  1. Apacheライセンスの原文を取得

  2. README.mdに記載する

  3. ソースコードの冒頭にライセンス表記をする

  4. Githubにあげる


Apacheライセンスの原文を取得

Apache Licenseには複数のバージョンがありますが、 必ず 2.0より新しいもの2を使ってください。

プレーンテキスト版のファイルは https://www.apache.org/licenses/LICENSE-2.0.txt にあります。

curl https://www.apache.org/licenses/LICENSE-2.0.txt > LICENSE


README.mdに記載する

ほかの方の記事に書いてあったんでコピペしてみましたが、いままで公開したリポジトリでREADME.mdにライセンスを記載してるケースってないですね…


Copyright

see ./LICENSE

Guard object of logger for debugging.

Copyright (c) 2015 USAMI Kenta <tadsan@zonu.me>

↑ みたいな感じで著作権表記と「LICENSEファイルを嫁」とだけ書いてます。

これは私がこうしてる、って話なので各位好きにやるのが良い気がします。

npmやpackagistなど最近のパッケージリポジトリでは、package.jsoncomposer.jsonbower.jsonなどの構成管理ファイルにライセンスを記述できるようになってるので、こちらには明記しておきます。

基本的には"license": "Apache-2.0"と書いた行を追加すれば大丈夫です。

例: https://github.com/zonuexe/php-logger-guard/blob/master/composer.json


ソースコードの冒頭にライセンス表記をする

ソースコードの冒頭にライセンスブロックを書いておくのが確実。

<?php

/**
* Copyright [yyyy] [name of copyright owner]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

しかし、全部のファイルにこれを書くのは大変なので、筆者はPHPの場合はPHPDoc形式でこのように表記します。

<?php

/**
* Guard object of Logger for debugging
*
* @package Baguette\Application
* @author USAMI Kenta <tadsan@zonu.me>
* @copyright 2015 USAMI Kenta
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache-2.0
*/

final class Guard implements Log\LoggerInterface
{

最初の表記はAPPENDIXの内容なので、「その通りに書かなければライセンスが適用されない」わけではありません。要は著作権者とライセンスの表記があれば用は足りると筆者は解釈してます。


Githubにあげる

上記のファイル、READMEとLICENSEを追加してgit pushすれば良いですね ヾ(〃><)ノ゙


あとがき

MITの代りにApacheライセンス、わるくないですよ。


次回予告

MPL





  1. ApacheはWebサーバー(Apache HTTP Server)が有名ですが、Web関係の関連ツール、分散コンピューティング環境のHadoopや周辺プロジェクト、全文検索エンジンのLuceneやSolrなどいろいろ3やってますね。 Apache Projects List 



  2. 本稿執筆時点での最新版は2004年に発表された2.0です。 



  3. おもしろどころでは、LibreOfficeと分裂したOpenOffice.orgがApacheプロジェクトに寄贈された「Apache OpenOffice」になったりしました。