This is an old revision of the document!
Rust's Trademark Concerns
As free software users, we all enjoy using the latest and greatest in free software, but we need to make sure that the software we are using really does respect our freedom. The desire to run Rust is clear to be seen, since it appears to be fully free software, but it still fails in several ways.
What are the issues?
Rust and also Cargo (the Rust package manager) violate the freedom to redistribute without “explicit” approval. Their trademark license imposes requirements for the distribution of modified versions that make it inconvenient to exercise freedom 3. To quote:
Distributing a modified version of the Rust programming language, compiler, or the Cargo package manager with modifications other than those permitted above and calling it Rust or Cargo requires explicit, written permission from the Rust Foundation. We will usually allow these uses as long as the modifications are (1) relatively small and (2) very clearly communicated to end-users.
Exactly the phrases relatively small and very clearly communicated to end-users are parts of the problems: They are vague in their meaning and it is clear that the Rust Foundation has no real interest to have modified versions distributed. So for example to have Cargo removed as otherwise non-free packages could be used from projects being compiled. In fact Rust is that kind of complex with demanding dependencies that a removal of its internal package-management (Cargo) makes it not working and so there are even plugins to control licenses before applying something. That violates also Hyperbolas point of minimalism and the possibility to rebuild any package with own modifications from users at any given time! We talk here about making free, libre software good to handle and learn for technical emancipation, while Rust is going even more complicated and complex.
In short, the Rust Foundation won't be happy with us applying patches and modifications to their trademarked language without “explicit approval”, so it is a freedom issue. We should not have to ask for modifications. For further references, there is a report in Rust about those trademark restrictions and Niko's response (one of the members of the Rust Legal Team).
To summarize the issues:
- demands to ask for allowing modifications
- complex structures
- mandatory package-manager for build
- packages downloaded at build-time can be non-free, so keeping that outside makes the whole build-system and infrastructure even more complex
The listing above only shows the major points, furthermore the Rust-Foundation is overreacting in our perspective with their trademarked language and demands handlings violating in fact free, libre software as it is based most on ethics and moral decisions as important, not what possible legal issues could be there.
Big Picture
There are important applications integrating Rust as a first-class language. Tor is one of them, and at some point in the future, the Tor team has plans to announce a release and release date where Rust will be required. Even the Linux Kernel Team is interested in providing modules written in Rust.
Also many other projects are changing their approach or get a complete rewrite in Rust as first-class language, some further examples:
The list can be enhanced for sure and clear to say that Rust is not only some sideload toolchain. As the buzzword “memory safety” is being in usage more and more projects get on this. Yes, the rewrite of GNU coreutils is not the main project. But who says exactly that this won't be the near future? As all the other points in this article were long before described, not solved and just accepted. It is a bad and foul compromise, endangering freedom of choice, user freedom for sure and also the freedom for system-distributions and operating-systems like Hyperbola.
Solutions
- Rebranding the entire language to avoid the trademark restriction. Such as IceCat was made to replace Firefox and Iceweasel-UXP to replace Basilisk; however it is a programming language, not a browser. A rebranded version of Rust maintained by the GNU Project and FSDG-compliant distros could be the way. However, we would need patches to adapt all Rust-dependant applications to the modified version of Rust, since it is a programming language. We would also need to maintain a list of nonfree cargo packages for blacklisting purpose.
- Getting Rust to change its trademark agreement to allow modifications on the rust binary for any purpose in respect of Freedom 3.
- Keep all Rust-based projects aside and focus only on the ones with a clear stance and accept not to include Rust in any way.
Hyperbola has taken the decision to keep Rust complete out of the repositories, including also all applications and libraries using Rust. We decline this kind of “freedom” under the influence of trademark-bullying.
About Rebranding
We know that there is the claim it would be “easy to rebrand like Mozilla Firefox”, so we want to take this point and explain further why those things are different levels of complexity.
Rust is a complex language and framework including also an own package-manager, documentation and sources for building. Firefox is an application for users. Rebranding an application is one thing and rebranding a complete programming-language is not comparable. When people use this claim for Rust, they are doing something being not honest in the perspective that it is not sufficient to just rename some resulting binaries: The rebranding of Rust includes not only the binaries and some messages, there is the documentation, the included sources, possible notes within the source-files, libraries and also the whole building-framework around. Yes, we also know about the project CrabLang. But that exactly underlines again our points: If it would have been that easy as some people say, this project would have already made a stable release and informed about that.
And all besides rebranding alone is also not enough: As we also mentioned already that Cargo may pull non-free packages and dependencies. Again to point out: It is not enough to talk about “rebranding” as Rust itself needs therefore also to be completely reworked for having it easier to handle with its dependencies at build-time.
Comparisons with other software trademarks
Some users have correctly mentioned that many other software packages have trademarks, do we plan to remove them all? No. We are not against all trademarks, only those which explicitly prohibit normal use, patching, and modification.
As an example, neither Python PSF nor Perl Trademarks currently prohibit patching the code without prior approval. They do prohibit abuse of their trademarks, e.g. you cannot create a company called “Python”, but this does not affect your ability to modify their free software and/or apply patches.
Due to the anti-modification clause, Rust is a non-permissive trademark that violates user freedom.