Tor needs a protocol versioning scheme
To support alternate OR implementations, it would be nice if it wasn't required for relays to announce themselves as "Tor on ". The current dir-spec.txt mentions :
The version of the Tor protocol that this relay is running. If
the value begins with "Tor" SP, the rest of the string is a Tor
version number, and the protocol is "The Tor protocol as supported
by the given version of Tor." Otherwise, if the value begins with
some other string, Tor has upgraded to a more sophisticated
protocol versioning system, and the protocol is "a version of the
Tor protocol more recent than any we recognize."
This means that any implementation not listing "Tor .*" is required to implement the entire spec plus any feature that may ever be in the spec. Until we invent time travel this will be difficult to achieve.
The alternative is that any alternate Tor implementation needs to announce itself as "Tor".
Suggestions mentioned in #tor-dev :
- Numerical protocol versions. Basically what we have now but without the "Tor" prefix, and published separately in the consensus. They're nice and compact but require all alternative implementations to implement the exact same set of features. Also doesn't deal with forward compatibility well if features are dropped in newer versions.
- Capability lists. arma mentioned that this is already there as a hack (V2Dir flag, for example). It also takes a lot of space in the consensus, and they may grow a lot over time.