We wanted to build something useful in mainstream, casual, and commercial applications, not just for geeks. For that reason we took on the following non-negotiable design requirements:

- An endpoint can join the network in <~10s. No bootstrapping time.

- Any endpoint can reach any other endpoint in the world in <~10s (or less).

- No configuration at all is required. It "just works." Any knob that must be tweaked or config that must be entered is a bug.

- The endpoint must be small enough to fit in an embedded device like a thermostat, light bulb, etc. (Or at least be able to be made that small without inordinate levels of pain.)

- Performance overhead must be on par with e.g. OpenVPN, GRE/IPSec, etc.

- Must be mobile-friendly. (phones, tablets, etc.)

- Must not conscript user devices into infrastructure roles without explicit opt-in.

- Very strong resistance to sybil and DDOS attacks, at least comparable to current Internet BGP community.

- It must be able to scale to Internet size (tens of billions of devices) without disproportionate levels of pain or discontinuities where the system suddenly "melts down."

- The design must be simple enough to fully describe in a relatively concise RFC.

- The design should be no more centralized than other common Internet systems like DNS and BGP.

The current design satisfies all those goals. It's zero-config, runs on phones with minimal battery life impact, could be scaled down to embedded code and memory footprints without too terribly much effort, and is no more centralized than DNS or BGP.

I'm not sure if I see the intrinsic advantage of trying to be less centralized than the Internet while still using the Internet for transport. A true decentralized new-Internet would have to use radio and user-provisioned DIY links. Centralization(X) = max(Centralization(all parts of(X)))

Pretty much everything popular right now in the decentralized Internet community is conclusively "out" for mobile and embedded use outside of niche applications where the user doesn't mind their phone becoming a hand-warmer and their battery life dropping to 45 minutes. In particular we almost certainly rule out:

- DHTs -- too much RAM, too slow, have a warmup/bootstrap time, hard to harden against sybil attacks, and solutions to these problems involve root-server-like centralization anyway so we're back where we started.

- Block chain -- way too compute and storage intensive by many orders of magnitude.

- Rumor mill and other noisy protocols -- way too bandwidth intensive for mobile and small devices, don't scale.

- Aggressive data replication and "raft consensus" type stuff -- too much storage and network overhead for mobile and embedded devices.

Right now our thinking revolves around making it possible to locally federate the root servers for on-site or in-personal-cloud use. But this has to be thought out very carefully so as not to negatively impact security or any of the other constraints above. We can't have people setting up sybil roots that can be used to DOS the network.

Our other thought is to create a separate community-driven institution to hold the root infrastructure. This is fraught with non-technical political difficulties of making sure this institution is well governed and sustainable.

See also:

https://www.zerotier.com/misc/2011__A_Little_Centralization_...

https://en.wikipedia.org/wiki/CAP_theorem

http://adamierymenko.com/decentralization-i-want-to-believe/

https://whispersystems.org/blog/the-ecosystem-is-moving/

The latter post makes excellent points and gives us significant pause about federation and delegation. We have to be able to keep improving things and to respond to threats (e.g. DDOS) rapidly.

--
Edit: meta:

I tend to disagree philosophically with the lack of pragmatism in the Internet decentralization community. It reminds me of OSI, which had some theoretically-superior ideas about networking but which never actually shipped anything that worked at scale. As a result we have IP, which works well but lacks some of the theoretical benefits of more throughly designed systems. Things that work always win over things that don't work. See also: semantic web vs. web+search, Project Xanadu vs. www.

Right now the dominant paradigm online is highly centralized cloud silo networks where all traffic is MITMed by design. I think making it trivially easy to network endpoints with an end-to-end encrypted network that "just works" is a huge improvement and could enable a lot of other things.

Also note that ZT carries standard protocols over standard virtualized networks: IPv4, IPv6, etc. This means that it doesn't impose lock-in on systems built with it. It's just neutral transport.