Developing in the open
Tailscale is largely open source and consists of the following elements:
- The client, which runs on each of a user’s devices, is mostly open source. The core client code for the Tailscale daemon used across all platforms is open source, and the full client code is open source for platforms that are also open source.
- We enthusiastically support open source operating systems such as Linux and Android, and we believe that our time and energy is best directed toward the communities for these platforms. As a result, where the operating system is open source, the daemon and GUI are open source; and where the operating system is closed, the daemon is open source and the GUI is closed source.
- This means that you can build the Linux and Android clients yourself, and you can build the Windows and macOS clients without the GUI.
- Open source Designated Encrypted Relay for Packets (DERP) relay servers. You might self-host your own DERP server for latency or compliance reasons.
- A closed source coordination server.
Why bother making any part of Tailscale open source?
- To improve trust and transparency. Anyone can review our code and see how Tailscale really works. We hope this increases your trust in using Tailscale.
- To share what we’ve learned. When we started Tailscale, mesh overlay networking was complex to set up and use, where it existed at all. By working in the open, we’ve helped lead a shift in considering what’s possible and how approachable it can be.
- To allow for adaptability. We understand the desire not to be locked into a specific provide.
- To make it easier to get feedback. By keeping our issues and feature requests public, you can upvote them (with emojis please!) or submit new requests, and we can prioritize what’s really needed for our users right now.
If you’d like to contribute to Tailscale, then by all means do! Please follow our contribution guidelines and our code of conduct. We appreciate it.
Financial support for open source projects and maintainers
Tailscale donates annually to WireGuard®. Tailscale is built on WireGuard®, specifically wireguard-go. As we develop Tailscale and add new functionality, we also upstream those changes to help other users of the project.
Tailscale also supports several other projects and maintainers we depend on, as well as Let’s Encrypt, which we use to issue TLS certificates.
Contributing to open source
Tailscale open sources internal projects that other organizations might benefit from, such as:
When a project originally developed by the community becomes critical to our users, if the maintainers are willing, we adopt the project and take responsibility for ongoing support and development. For example, this is what happened with the Tailscale Synology package (thanks Guilherme de Maio!) and Terraform provider (thanks David Bond!).
Tailscalars are also encouraged to contribute to other open source projects they rely on as part of their jobs, or that they feel passionate about. Tailscalars contribute to the Go project and community, NixOS, and more.
Headscale is an open source alternative to the Tailscale coordination server and can be self-hosted for a single tailnet. Headscale is a re-implemented version of the Tailscale coordination server, developed independently and completely separate from Tailscale.
Headscale is a project that complements Tailscale — with its own independent community of users and developers. Tailscale does not set Headscale’s product direction or manage the community, and neither prohibits nor requires employees from contributing to Headscale.
Our opinion is that Headscale provides a valuable complement to Tailscale: It helps personal users better understand both how Tailscale works and how to run a coordination server at home. As such, Tailscale works with Headscale maintainers when making changes to Tailscale clients that might affect how the Headscale coordination server works, to ensure ongoing compatibility.
Providing Tailscale to open source projects
Tailscale is free for open source projects. With the Community on GitHub plan, you can use Tailscale for your project to access and share project resources, like a build tool or a test server. Any open source project with an OSI license can use this plan. Currently, this plan requires using GitHub for authentication.
Mostly. Tailscale daemon client code is open source. Where the operating system is open source, the daemon and GUI are open source, and where the operating system is closed, the daemon is open source and the GUI is closed source.
Tailscale’s DERP server code is also open source. This lets you verify and build these components yourself. Tailscale’s coordination server is closed source. If you want to run your own coordination server at home, check out Headscale.
Headscale is an open source coordination server for Tailscale clients. It is independent from Tailscale.
Tailscale strives to sponsor open source projects that are critical to our product. Eligible projects must have an OSI-approved license, code of conduct, and a way to be sponsored, such as GitHub Sponsors or Open Collective. We prefer to sponsor projects rather than individuals, and we don’t typically consider projects that are primarily commercial or corporate-backed. We may not financially support a project that we already support in other ways.
We’re still trying to figure out when, and how much, we should support projects financially, and don’t yet support all the projects we’d like to. We aim to sponsor projects and individuals at a level equal to a few hours of work per month.