Open5

kentcdodds.comがGPLv3だが本人がRemix作者の一人なので派生コードがMITで配布されている話

doanryodoanryo

kentcdodds.comみたいなサイトが作りたい

https://github.com/kentcdodds/kentcdodds.com

これは2022年4月14日現在Remixで作られた中で最大のWebサイト、https://kentcdodds.com/ のリポジトリである。

https://kentcdodds.com/blog/how-i-built-a-modern-website-in-2021

Kentさんは個人サイトっていうレベルじゃないマルチリージョンなデプロイをしており、この記事を読む限りでは6個のリージョンにNode・Postgres・Redisが配置されている。「ただ個人サイトを作るだけなら参考にするな」と書かれている通り、この構成は個人HP作成にしてはオーバーエンジニアリングである。

  • TypeScript
  • ESLint
  • Postgres + Prisma
  • Jest
  • Cypress
  • MDXをパースしてRedisにキャッシュ
  • マジックリングによるログイン
  • Discordとのアカウント連携

という機能が揃った素晴らしいリポジトリなのだが...

https://github.com/kentcdodds/kentcdodds.com/blob/main/LICENSE.md

GPL v3で「非商用only」というライセンスとなっている。個人のWebサイトなんだから仕方ない。

が、どうしても同じような構造のサイトを商用利用可能な状態で作りたい場合、どうすればいいのか?

https://github.com/remix-run/blues-stack

答えはブルース・スタックである。

doanryodoanryo

しまった。テーマ切り替えが分からない

左がKentさんのコード、右がそれを解説しているMattさんのコードだが、ちょっといじっただけなのでGPLv3の改変の範囲内であり、これは使えない。

https://github.com/remix-run/remix/blob/main/examples/dark-mode/app/utils/theme-provider.tsx

https://github.com/remix-run/remix/pull/1661

が、MattさんがRemix本体のexamplesにPRして、この改良版コードを追加している。

で、これをKentさんが承認しているため、いよいよ元のGPLライセンスの意義が分からなくなってきた。

// hi there dear reader 👋
// this is how I make certain we avoid a flash of the wrong theme.

このコメントは「kentcdodds.comの読者」を想定して書かれたが、ここでは文章がほぼそのまま「Remixのチュートリアルの読者」に向けたコメントになっている。

推測

https://github.com/kentcdodds/advanced-react-hooks/blob/main/LICENSE.md

Kentさんはワークショップ用に教材系リポジトリを大量に保持しており、サイトのライセンスと同様の文章が使われている。

つまり、kentcdodds.comはKentさんの他の教材系リポジトリのライセンスをそのまま使いまわした結果GPL v3になっている が、Remix黎明期のexampleとして重要な役目を果たしており、本人が派生コードをMITで再配布している、という結論でいいだろう。

doanryodoanryo

つまり、Stackにないものは公式のexampleを参照すればいいということだ(もちろん利用時にはMITライセンスとして著作権表記を忘れてはいけない)。

もっとも、2022年4月14日現在Stackにライセンスが明記されていないのが気になるが...