Strong protection for code as speech is critical to the development of software around the world, especially open-source projects essential for the distributed web, which rely on many authors and contributors to build, improve, and secure a codebase. These projects’ developers often consist of a community of volunteers, contributing to the project’s collective goal of building a better tool that aligns with their dream of designing a more equitable decentralized future.
If software regulations could easily impose restrictions on the developers, it might raise the daunting prospect of liability for contributing a pull request. This concern can be acute for decentralized projects, especially those providing privacy-enhancing technologies or open forums for communication. Tools and services that are open and available to all, rejecting the compromise of a central entity to construct a walled garden around the space, can be used in ways that raise the authorities’ concerns. Without strong protections for code, governments would be tempted to reach the disfavored uses by going after the developers.
Moreover, when the restriction on code prohibits publication or export to undemocratic countries, such as under a sanctions regime, this can deprive human rights defenders and pro-democracy opposition groups of the privacy, encryption and communications tools they need to fight for their rights. Respecting code as speech enables the spread of technologies upon which fundamental rights depend.
While code is a relatively new form of speech, there is a rich history of recognizing that expression comes in many forms. Expression may be delivered as oratory from the stage, sung to music, or posted as a broadsheet on the subway walls and in tenement halls. And now, in the information age, perhaps the most critical avenue for expression comes in the form of computer code.
Our world embodies code in almost every aspect of modern life, expanding from stand-alone computers to smart devices and chips integrated into everything you see. Our lives have moved online, with critical tools for communication, commerce, advocacy and all forms of social interaction happening on the internet, mediated by software which defines how we can or can’t reach out into the world.
For advocates of decentralization, publishing code allows their expression to amplify and effectuate the dream of a distributed web, making the essential building blocks of the future they want to see. Expressive code can be human readable source code, which is like any other literary work, or the resulting executable binaries, which operationalize the expression in the underlying source.
This protection afforded by the recognition of code as speech will be fundamental to allowing new and exciting ideas the breathing space to thrive, especially ideas that a government may want to suppress, or software systems that a government may want to co-opt by compelling certain code that is more to its liking.
To many it may now seem obvious that code should be protected from censorship or restrictions on distribution, but it was not immediately recognized by the law. Courts first recognized code as speech at the tail end of the last millennium in Bernstein v. U.S. Dep’t of State, a case brought by cryptographer Daniel J. Bernstein that challenged restrictions on the export of cryptography from the United States. Bernstein sought to publish an academic paper and, critically, the associated source code for Snuffle, an open-source encryption system.
However, at the time, cryptography was thought of as a dual use military technology, and U.S regulations barred its export like a tank or military grade avionics, and this included publishing it for free on the web. That is, unless Bernstein registered for a license like he was an arms dealer, then he would likely get denied because Snuffle offered more cryptographic protection than the U.S. would allow.
With the help of Electronic Frontier Foundation attorneys, Bernstein’s case established that code was protected speech. Judge Patel explained why the First Amendment protects code, recognizing that there was:
no meaningful difference between computer language, particularly high-level languages …, and German or French … Like music and mathematical equations, computer language is just that, language, and it communicates information either to a computer or to those who can read it. ... source code is speech.
A few years later, the Sixth Circuit Court of Appeal (one of the United States mid-level appeals courts) agreed, observing in Junger v. Daley that code, like a written musical score, “is an expressive means for the exchange of information and ideas.” Both courts recognized that the protected expression in code was not just found in the artfulness and advocacy in its human readable source, but also embodied in the executable ones and zeros of the object code. Speech can be both expressive and functional — indeed, the functionality is often the fundamental point of the software’s expression.
While the protection of the First Amendment is critical, it is not an absolute bar to the United States government regulating software. Rather, the U.S. Constitution requires that the government show that laws which purport to regulate expressive code pass judicial “scrutiny.” The court looks to the extent the restriction is based on the software’s communicative content, and balances that against the government’s asserted interest. The more the American government seeks to control content and expression, the less likely the regulation will be upheld.
Where software is functional, like an executable binary, this is not a bar to the protection, but rather a factor to be considered in this scrutiny — for example, whether the regulation burdening the software is narrowly tailored, using the least restrictive means to achieve a compelling state interest.
The protections for code as speech are not limited to the United States, though they are most firmly established there. Freedom of expression is broadly protected under international human rights law, and the arguments for why code must also be considered a medium of expression fit well into these treaties and conventions. EFF, for example, has analyzed how code is expression under the American Convention of Human Rights, an international human rights treaty that covers most of Latin America.
Moving forward, we must recognize that our fundamental right to expression encompasses computer code under national and international law throughout the world, and use that to protect and preserve the ability of software developers to create a stronger, safer, and more democratic and equitable decentralized web to help foster a better future.