Help us understand the problem. What is going on with this article?

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

猫も杓子も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   https://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」になったりしました。 

tadsan
僕に警備する自宅をください。Emacs初心者。Rubyist。 全ての投稿された記事は別段の表記がない限りはCC 3.0 BY-SA https://creativecommons.org/licenses/by-sa/3.0/deed.ja で二次利用できます。 記事中に含まれる全てのコードスニペットの著作権は抛棄するので、煮るなり焼くなりお好きにどうぞ。
https://tadsan.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした