きのおもむくままに
記事一覧(加筆中)
- 目的
- 自作「OSS」を公開する.
- 制約条件
- 自作 OSS は Python パッケージである.
- 自作 OSS の中で,サードパーティを import している.
- 自作 OSS は自由に「使用」して貰いたいが,面倒事に巻き込まれたくない.
- 他の OSS に「利用」する場合は,「利用」したことを明記してほしい.
パッケージ作成や PyPI への登録方法の覚書,理解しにくい著作権関係についてまとめる.具体的には,まず最初に知っておくべき前提,自分が守るべき事項(制約 1, 2 からくる),他人に守って貰いたい事項(制約 3, 4 からくる),それらの事項をパッケージに反映するにはどうすればよいか順に述べる.
パッケージ作成や PyPI 登録方法詳細 → 他記事参照.
required package
pip install setuptools
pip install twine
pip install wheel
{dist, egg-info}, build from setup.py
python setup.py sdist
python setup.py bdist_wheel
pypi information for twin upload
.pypirc
設定.
upload test
twine upload --repository testpypi ./dist/*1.0.0a0*
upload 1st
twine upload --repository pypi ./dist/*1.0.0a0*
upload 2nd~
version
major#.minor#.build#-alpha.#
1.0.0-alpha.0
1.0.0-alpha.1
‥‥
1.0.0
最初に知っておくべきは,「OSS (Open Source Software)」の定義,「利用 (exploit)」と「使用 (use)」の違い,「ライセンス (license)」である.われわれは他者が定めた「ライセンス」制約に従って他者の成果物を「利用」し,自身が定めた「ライセンス」制約に従って自身の成果物を他者に「利用」してもらう.
前提知識: OSS 定義と「利用」可能な対象(参考情報1) ソフトウェアは大きく有償ソフトウェアと無償ソフトウェアである「フリーウェア (freeware)」に分類される.freeware は,「プロプライエタリ・ソフトウェア (proprietary software)」と「オープンソース・ソフトウェア (OSS)」に分類される.そして「利用」できるのは OSS のみで,具体的な利用制約は OSS ライセンス毎に規定される.
他者が定めた「ライセンス」制約を守る必要がある.まずライセンスを識別して,各ライセンスの利用制約を確認する.具体的には制約条件 1, 2 から,確認対象のライセンスは以下 2 つ.
PSF (Python Software Foundation) License = GNU GPL (GNU General Public License) compatible 2(GPL 互換性があるがコピーレフトはないことに注意.)
networkx (OSS): BSD-3-Clause License
続いて参考情報1の『4.「主要ライセンス」を理解する』の表から利用制約を抜粋すると次の通り.
種類 | 利用元のライセンス表示 | ソースコード開示 | 作成者名の無断使用 | 特許条項 |
---|---|---|---|---|
GNU GPL v3 | 必要 | コピーレフト型 | - | あり |
3-Clause BSD | 必要 | 非コピーレフト型 | 禁止 | なし |
基本的にしなければならない.だがこれは,third package の制約というより,自分がライセンスを選ぶときに生じる制約.
類型毎にことなるが,いずれも第三者に「再頒布」(はんぷ)しない場合は考えなくてもよい.今回は OSS として頒布するが,OSS としてソースコードを公開するのだから,類型によらず,自分が守るべき制約を気にする必要はない.
ちなみに,Python が GNU GPL 相当なのは一考に値する.企業で Python を使うことは,自社内で開発したものを自社内で使用するか,開発したものをソースコード開示して売ることになる.
禁止となっているのは…
ありの場合…
制約条件 3, 4 から
だが,自分のライセンスが他者にどう使われるかという観点で指定する必要がある.
「コピーレフト」型の場合,改造部分以外のソースコードを含め開示要求する.
「準コピーレフト」型の場合,改造部分のみ開示を要求する.
「非コピーレフト」型の場合,開示要求はない.
PyPI へのパッケージ登録について書かれた記事 3 を前提に,さらに具体的な記述をする.
ライセンス表示
LICENSE
あ
setup.py
tags: OSS