Tailscaleにおけるオープンソース
最終検証日:
翻訳: 竹洞 陽一郎
このページは、Tailscale公式サイトの「Open source at Tailscale」の翻訳です。
Tailscale公式ドキュメント(tailscale.com/docs)の配下ではなく、企業サイト側のページです。
私たちは、オープンソースがソフトウェア開発の過去であり、現在であり、未来であると信じています。
Tailscaleの社員(Tailscalar)であれ、それ以外の誰であれ、オープンソースのコードに貢献することは、すべての人の利益になります。
オープンに開発する
Tailscaleの大部分はオープンソースであり、次の要素で構成されています。
- ユーザーの各デバイスで動作するクライアントは、その大部分がオープンソースです。すべてのプラットフォームで共通して使われるTailscaleデーモンのコアクライアントコードはオープンソースであり、オペレーティングシステム自体がオープンソースであるプラットフォームについては、クライアントコードの全体がオープンソースです。
- 私たちは、LinuxやAndroidのようなオープンソースのオペレーティングシステムを積極的に支援しており、これらのプラットフォームを取り巻くコミュニティの支援に時間と労力を注ぐことを信条としています。その結果、オペレーティングシステムがオープンソースである場合はデーモンとGUIの両方がオープンソースであり、オペレーティングシステムがクローズドである場合はデーモンはオープンソース、GUIはクローズドソースとなっています。
- つまり、LinuxクライアントとAndroidクライアントは自分でビルドでき、WindowsクライアントとmacOSクライアントはGUIなしでビルドできます。
- オープンソースのDesignated Encrypted Relay for Packets(DERP)リレーサーバーです。レイテンシやコンプライアンス上の理由から、独自のDERPサーバーをセルフホストすることもできます。
- クローズドソースのコーディネーションサーバーです。
なぜTailscaleの一部をオープンソースにするのか
- 信頼と透明性を高めるため。誰でも私たちのコードをレビューし、Tailscaleが実際にどのように動作しているかを確認できます。これによって、Tailscaleを利用する際の信頼が高まることを期待しています。
- 学んだことを共有するため。Tailscaleを始めた当時、メッシュ型オーバーレイネットワーキングは、存在していたとしても、構築と利用が複雑でした。オープンに開発することで、私たちは「何が可能か」「どれほど手軽になり得るか」という考え方の転換を先導してきました。
- 適応の余地を残すため。特定のプロバイダーにロックインされたくないという思いを、私たちは理解しています。
- フィードバックを得やすくするため。Issueと機能要望を公開しておくことで、利用者はそれらに賛成票を投じたり(絵文字でお願いします)、新しい要望を提出したりでき、私たちはユーザーが今本当に必要としているものを優先できます。
Tailscaleに貢献したい方は、ぜひどうぞ。
私たちの貢献ガイドラインと行動規範に従ってください。
貢献に感謝します。
オープンソースプロジェクトとメンテナーへの資金支援
TailscaleはWireGuard®に毎年寄付しています。
TailscaleはWireGuard®、具体的にはwireguard-goの上に構築されています。
Tailscaleの開発を進めて新しい機能を追加する際には、その変更をアップストリームにも還元し、プロジェクトの他の利用者を支援しています。
Tailscaleは、私たちが依存している他のいくつかのプロジェクトとメンテナーのほか、TLS証明書の発行に利用しているLet's Encryptも支援しています。
オープンソースへの貢献
Tailscaleは、他の組織にも役立つ可能性のある社内プロジェクトを、次のようにオープンソース化しています。
- depaware: Goの依存関係を追跡するためのツールです。
- ToBeReviewed bot: 本番環境への緊急変更を監査するためのツールです。
- 社内セキュリティポリシー: 自組織のセキュリティポリシーを策定する際の参考資料です。
もともとコミュニティによって開発されたプロジェクトが私たちのユーザーにとって不可欠なものになった場合、メンテナーが望むなら、私たちはそのプロジェクトを引き取り、継続的なサポートと開発の責任を負います。
たとえば、TailscaleのSynologyパッケージ(Guilherme de Maio氏に感謝します)やTerraformプロバイダー(David Bond氏に感謝します)は、この経緯で引き継がれました。
Tailscaleの社員は、業務上依存している、あるいは個人として情熱を持っている他のオープンソースプロジェクトへの貢献も奨励されています。
Tailscaleの社員は、Goプロジェクトとそのコミュニティ、NixOSなどに貢献しています。
Headscaleを後押しする
Headscaleは、Tailscaleのコーディネーションサーバーのオープンソース実装です。
Tailscaleとは独立して、別個に開発されています。
Kristoffer Dalby氏はTailscaleに在籍しており、これによりTailscaleは同氏のHeadscale開発の取り組みを支援できます。
TailscaleはHeadscaleの製品方針を決めることも、そのコミュニティを運営することもなく、Tailscaleの社員がHeadscaleに貢献することを禁じてもいません。
健全なHeadscaleプロジェクトは、Tailscaleのエコシステム全体にとって良いことです。
技術志向のユーザーにTailscaleプロトコルをセルフホスト環境で試す手段を与え、プロトコルの仕様面が単一のマネージドサービスの外でも機能することを示す助けとなり、長期的なエコシステムの多様性と回復力に寄与します。
私たちは、人々がTailscaleのプロトコルとプラットフォームの上で何かを構築し、いじり、学ぶ姿を見るのが好きです。
Headscaleは、特にホームラボやインフラの自己主権(infrastructure sovereignty)といったユースケースにおいて、セルフホスティングのコミュニティが自分たちのやり方でそれを行う手段を提供しています。
同時に、Headscaleはコミュニティが維持するプロジェクトであり、Tailscaleが管理するものでも、サポート対象のTailscale製品の一部でもありません。
私たちはHeadscaleの成功を望んでいますが、その区別も明確にしておきたいと考えています。
Tailscaleは、シンプルさ、信頼性、ガバナンス、サポートを求めるチーム向けの、マネージドで本番運用に対応したサービスです。
Headscaleは、自分自身でコントロールプレーンを運用・維持したいユーザー向けです。
TailscaleとHeadscaleはどう選べばよいですか? TailscaleとHeadscaleは異なるニーズに応えます。
Headscaleは、いじって試すこと、ホームラボ、インフラの自己主権を優先するユーザー向けの、コミュニティが維持するセルフホスト型のコントロールプレーンです。
より多くの制御が可能になりますが、運用の複雑さが増し、Tailscaleのマネージドサービスより対象範囲は狭くなります。
Tailscaleは、フルマネージドのコントロールプレーンと、運用すべきインフラがゼロであること、そしてACL、SSO連携、複数tailnet、ガバナンス、信頼性、充実したサポート体制といったエンタープライズ向け機能を備え、デバイス、ユーザー、サービスを最速で接続する手段です。
無料プランでも6ユーザーと無制限の個人デバイスが使えるため、Tailscaleを試す余地は十分にあります。
私たちはHeadscaleをTailscaleのエコシステム全体の健全な一部と見ており、このプロジェクトの成功を望んでいることが、ここで明確に伝わることを願っています。
オープンソースプロジェクトへのTailscaleの提供
Tailscaleはオープンソースプロジェクトに無償で提供されています。
Community on GitHubプランを使うと、ビルドツールやテストサーバーなどプロジェクトのリソースへのアクセスと共有に、Tailscaleを利用できます。
OSIライセンスを採用しているオープンソースプロジェクトであれば、このプランを利用できます。
現時点では、このプランの利用には認証にGitHubを使用する必要があります。
よくある質問
Tailscaleはオープンソースですか?
Tailscaleのコアクライアントコード(tailscaledデーモンとtailscale CLIを含む)はオープンソースであり、DERPリレーサーバーのコードもオープンソースです。
TailscaleはオープンソースのWireGuard®プロトコルの上に構築されており、Tailscaleのコーディネーション/コントロールプロトコルのクライアント側実装は、オープンソースのクライアントで公開されています。
Tailscaleは、Tailscaleクライアントとの互換性維持を支援するため、独立したHeadscaleプロジェクトとも協力しています。
Headscaleは、単一tailnetのユースケース向けに、オープンソースでセルフホスト可能なコーディネーションサーバーを提供しています。
Tailscale自身がホストするコーディネーションサーバーは、マネージドサービスの一部としてプロプライエタリのままです。
Tailscaleに貢献するにはどうすればよいですか?
コード、バグ報告、機能要望は、GitHubのTailscaleに提出できます。
私たちの貢献ガイドラインと行動規範に従ってください。
Headscaleとは何ですか? Tailscaleが運営しているのですか?
Headscaleは、Tailscaleクライアント向けの、独立した、コミュニティが維持するオープンソースのコーディネーションサーバーです。
Headscaleは、Tailscaleとは明確に異なるニーズに応えるものです。
TailscaleはHeadscaleの主要メンテナーを雇用していますが、プロジェクトを指揮したり方向づけたりはしていません。
詳しくは「Headscaleを後押しする」を参照してください。
Tailscaleは、資金支援するプロジェクトやメンテナーをどのように決めていますか?
Tailscaleは、自社製品にとって不可欠なオープンソースプロジェクトをスポンサーすることを目指しています。
対象となるプロジェクトは、OSI承認ライセンス、行動規範、そしてGitHub SponsorsやOpen Collectiveのようなスポンサー受け入れの手段を備えている必要があります。
私たちは個人よりプロジェクトをスポンサーすることを優先し、主に商業目的であるプロジェクトや企業が後援するプロジェクトは通常は対象としません。
すでに別の形で支援しているプロジェクトには、資金支援を行わない場合があります。
Tailscaleは、スポンサー金額をどのように決めていますか?
いつ、どれだけの金額でプロジェクトを資金支援すべきかについては、私たちもまだ模索中であり、支援したいと考えているすべてのプロジェクトをまだ支援できてはいません。
プロジェクトや個人に対して、月に数時間分の作業に相当する水準でスポンサーすることを目標としています。
自分のアカウントに「Thanks!」と表示されるのはなぜですか?
私たちは、オープンソースへの貢献と、私たちが依存しているメンテナーを大切にしています。
Tailscaleや、私たちが依存しているプロジェクトに貢献したことがある方には、無料のPersonal Proアカウントで感謝の気持ちを表しています。
Tailscaleアカウントのプロフィールにハートのマークが表示されているはずです。
表示されるべきなのに表示されていない場合は、お知らせください。