Gistのコードのライセンスはどう扱えば良いのか考えてみました🤔
今日、nicklockwood/Pattern for Swift Errors.swift という良さげなGistコードを目にして取り入れようとしたのですが、そういえばGistのライセンスってどうなってるのかな?と疑問に思いました🤔
ライセンス系のライブラリを公開している身としても気になりました🤔
というわけで、この個別の問題を起点に色々考えたり調べたことを書いていきます。
Gistでライセンスを明示したい場合
Gistは1つの簡単な書き捨てコードやメモを載せることが多いですが、複数ファイルを載せることもできるので、iOSのプッシュ通知用device token(Data型)を16進数String型に変換するスニペットを例にLICENSEファイルをセットにしたものを作ってみました。
僕は普段、公開リポジトリではMIT Licenseを選択していますが、こういうスニペットは何も気にせずコピペしてもらっちゃって良いと思っているので、Unlicenseを選択しました。
元々の記事はこちらですが、これも引用無しにコードコピペしてOKという気で書いています(Qiita記事のライセンスについては後述)。
“device token string 変換” などで検索 してトップに表示されて、みんな使ってくれると嬉しいなと思って書きました 😎
URLでエゴサーチをしたら見つけたので以前こんなツイートをしましたが、引用は求めていないので自由にコピペしてくださってOKです 🙆
Gistに毎回ライセンス付けるのは面倒
上の例では個別のGistにライセンスを付けましたが、毎回Gistを書くたびにやるのは面倒ですし、見る側にとっても邪魔な気がします。なので、このように一括指定しておくと良さそうです。
検索すると、このやり方を取っている人がまあまあいることがわかります。
Unlicenseならば、無指定でも良いのでは?とも思ってしまいますが、やはり明示することは大事なようです。
とはいえ、Gistにはライセンス指定が無いコードが大半なので、現実問題としてどう扱うかは、無指定の場合はUnlicenseとみなしてしまって良いかなあと僕は解釈しています。冒頭でだした nicklockwood/Pattern for Swift Errors.swift はライセンス無指定でCopyright記載も無かったので、引用なしでコピペ・改変して使ってしまって良いかなあと今のところ判断しています(こういうスニペットは参考にしながら書いているうちに原型とどめないくらいに変わってしまうことも多いですし)🤔
GitHubではリポジトリ作成時にライセンス選択リストが出るので(とはいえこの対応がされたのは2013年とまあまあ最近)、どれか選んでいる人が多数派に見えますが、Gistもそうなってくれると迷わず使えて良いなと思いました。
[追記] ヘッダーに含める方法
追記ですが、ヘッダーにCopyrightを含めるのも良さそうです。スニペットにライセンス明記したいときはこれがバランス良い解な気がします。
//
// Mono.swift
//
// Created by Masayuki Ono on 9/26/17.
// Copyright © 2017 Masayuki Ono. Licensed under MIT.
//
他のサービスでの取り扱い
コード共有では無いですが、僕が普段よく記事を書いている2つのサービスのライセンスの扱いについて、ついでに調べてみました。
Medium
Medium は記事公開時にLicense表記が見え、それを押すことでライセンス選択ができます。デフォルトはAll right reservedで、僕はこれから変えたことは無いです。短いコードスニペットと違って記事の内容を他で言及する場合はきちんと引用してもらいたいと考えているので。
もしこのサービス利用規約とは違う形でコードのライセンスを管理したい場合は、Qiitaに直書きする以外の方法を取った方が良さそうです(そういう場合、例えばGitHubの公開リポジトリ + Qiita記事で紹介、みたいな感じにすれば良いだけだと思っているので現実的に特に問題とは僕は思っていません)。
…と書いてて思いましたが、記事本文とコードは別ライセンスにしたいこともありそうなので、Mediumでよく取られているGist URLを貼り付けるという運用はそういう意味でも良さそうに思いました 🤔
(ただ、Gist URL展開はMedium iOSアプリでなされない状態がずっと続いていることに対しては大きく不満を感じています😔)
ちなみに、OSSライセンスについては、この本がとても良くまとまっていて、オススメです💁