The freedom of speech has always been an important right to Americans. The fact that this right is included in the First Amendment of our Bill of Rights only emphasizes this point. Due to several court cases that were highly publicized in the last few years, the question of whether software can or should be classified as free speech has become a heated topic. Opponents argue that software is functional, and therefore could not be considered free speech any more than a hammer could. Proponents disagree, and point out that software is like a recipe or instruction manual, and therefore qualifies as free speech. There are more arguments for software and source code being free speech than these simple issues.
Technicalities
Many would say that software is a functional device and therefore does not qualify for status as speech. It cannot be said that software is not functional, but being functional does not mean something cannot be considered speech. As in the examples above, both a recipe and an instruction manual are functional devices that can tell the reader how to do something. Even if one says that the programmer is writing the code to communicate with the computer, and not a human being, it could be rebutted that a news anchor technically communicates with a television camera, not a viewing audience. It is the final result that matters, and software and source code can and do speak to many. In addition, numerous functional acts have been protected as free speech including flag burning {1}. This coupled with the freedom of the press only strengthens the case of software as free speech. It seems that speech, as referred to by the First Amendment, can be defined as a conduct that furthers the spread of ideas.
Mathematics and Science
Mathematics, commonly referred to as the "Universal Language", is not contested as being a method of speech. In fact, mathematical notation is simply a shorthand method of writing English words, phrases, and sentences. In fact each expression or formula in mathematics is a complete and grammatically correct sentence, and therefore a form of human expression. For example, the equation "F = ma" commonly used in physics is short for, "The force applied to an object is equal to the mass of the object multiplied by the acceleration of that object."
This is important because many programming languages have their basis in mathematics. With the simple addition of an asterisk and semicolon, the force equation above becomes "F = m * a;" and is a perfectly correct assignment statement in C/C++, Java, and several other programming languages. In addition, discrete mathematics is extremely common in software through the use of logical constructs and Boolean values. The programming language LISP is derived almost in its entirety from Alonzo Church’s Lambda Calculus and his discoveries in the area of recursion.
In addition to mathematics, programming languages allow other fields of study to be expressed in a concise format as well. NAMD is used in chemistry, FORTH is used in astronomy and industry, LaTeX and PostScript are used in typesetting, and other specialized languages are used in numerous additional fields {4,5,6,8}.
Communication
Much like mathematics, programming languages provide a method of communicating complicated ideas through a concise and unambiguous way. A programmer can translate his code to prose form, but this is tedious and not very useful. Computer scientists can converse, correspond, trade ideas, and communicate quickly, easily, and efficiently through software code. For example, explaining to someone in English how to determine if a given year is a leap year might go something like this: "A year is a leap year if it is divisible by 4 unless it is divisible by 100 except in the case where it is also divisible by 400." A computer programmer could say the same thing with the following line of C++ code:
bool isLeapYear = ((!(year % 4) && (year % 100)) || !(year % 400));
Not only is the line of C code more concise and easily understandable to a programmer, but also is completely unambiguous much unlike the English version. It is certainly true that not everyone could understand the line of code above, but that is not required of free speech. Not everyone speaks Spanish, but that does not prohibit the printing of books in Spanish in the United States. In much the same way, musicians can utilize sheet music to convey their expressive ideas. Like source code, only those trained in the field can understand the symbols on a musical score. It just happens that, by design, a computer can also read and interpret the meaning of source code for the benefit of the computer scientists who use it.
Natural Languages
Even if someone were to dispute the right to call mathematical notation and musical scores a form of free speech because of the hordes of symbols and highly abbreviated form, you only need to look as far as the written word of almost any language to stop this argument in its tracks. For example, the English language did not always have such luxuries as the quotation mark, the dollar sign, or the ampersand. One used to be required to use only words to symbolize a person's speech such as, "And so spoke Moses..." after which followed a series of words or sentences.
Considering the unresolved legal question as to the status of software as a form of expression, one should be quite concerned for the future. It is not unfathomable that some day computers will be able to understand spoken languages (even if only a subset of the language in a certain format). When speaking or programming aloud (Aural C++?) to a computer, will we no longer be expressing free speech since we are directing our words at a computer? This seems absurd. Isn't it just as absurd then, to consider entering code into a computer simply to be functional, and not expressive? Similarly, is writing a note to a deaf person not considered free speech because they cannot hear us talk? Is Braille (very similar to early computer punch cards) not speech because it is actually just a series of bumps on a piece of paper? Is Stephen Hawking not expressing free speech when he uses a computer to generate sounds for the words he is thinking?
Expression
Ignoring any other argument for software as free speech, the thought, creativity, and expression put into computer source code is enough to give it protection under the First Amendment. The Supreme Court has held in Roth v. United States that "all ideas having even slightest redeeming importance" including the "advancement of truth, science, morality, arts ... even if not purely expressive communication" are protected by our First Amendment {2}. There is no doubt that computer science certainly has a redeeming importance, and it advances truth, science, and many would argue the arts as well. It certainly meets all of the requirements of the Supreme Court.
Given a complex problem and N programmers, you will probably get N different approaches to solve the problem. Even if you had several of the same approaches, you would definitely see differences in organizational structure, variable names, and the order of instructions. Given the fact that an optimizing compiler may convert two different programs into the same object code, the readability and style of the source makes them expressively different.
Markup Languages
How do we account for markup languages such as HTML and XML, which were created for the purpose of displaying human expression through text, images, and other visual means to users in a form pleasing to the eye? While not made for number crunching, a computer must interpret these markup languages before their output is readable by the general public.
It is known that source code must be compiled before it can be run. The words and symbols I type when creating a program need to be converted to machine-readable code so that my program can be executed. Once this writeup is submitted, it is stored as a series of bytes in a database, and interpreted and displayed by your browser when you load this page. In other words, the characters I am typing are being converted into machine readable/parsable code so that it may be properly read by someone else. I therefore contend that the words you are reading are simply the source code to my actual writeup "program", and that if software is not free speech, then neither is this.
Questions
If a legal decision is made which finds software not to be free expression, what is next? Will pseudocode not be free expression? Books about programming? Web pages? Will the creative minds behind Perl poetry be denied the right to publish their work if they see fit? If I change the keywords in the source code to synonyms of the words or translate them into Sanskrit, will this cause my modified source code (not compatible with any compiler) to become free speech? Answering yes to any of these questions seems absurd, but no more absurd than classifying software as functional yet expressionless text.
Conclusion
Certainly, our Founding Fathers could not have foreseen the invention of computers and software, however it still seems ridiculous to think that someday software may not be protected by the Bill of Rights. With its relation to mathematics and science, its utilization as a communicative and teaching device, its similarity to natural language, and the expression it allows, it seems rather obvious that software is certainly a form of free speech. Whether it is a new cryptography package, an artificial intelligence module for the newest game, or a simple "Hello world" program, freethinking and expressive human beings create software. Let them speak!
I wrote this essay for a Computer Science writting class.
It was slightly modified for E2. Node your homework.
References
- Texas v. Johnson, Supreme Court of the United States, 491 U.S. 397, June 1989.
- Roth v. the United States, Supreme Court of the United States, 354 U.S. 476, 1957.
- Bill of Rights, Amendments to the Constitution of the United States, 1789.
- "LaTeX help 1.1." http://www.emerson.emory.edu/services/latex/latex_2.html, March 1996.
- Braunsdorf, Allen. "comp.lang.postscript FAQ." http://www.postscript.org/FAQs/language/FAQ.html, February 1998.
- University of Illinois, http://www.ks.uiuc.edu/Research/namd/2.3b2/announce.html, July 2001.
- "XML and Microsoft Office 2000." http://www.projectcool.com/developer/xmlz/xmlref/xml-and-office.html, 1989-99.
- Ertl, M. Anton, FORTH Interest Group, "FORTH FAQ." http://www.forth.org/faq
- Sherriff, Lucy, "The Maths Prof., Free Speech and Encryption." TheRegister.com, 2001.
- Ghosh, Shubha, "Deciphering Free Speech and the Encryption Debate." Gigalaw.com, 2001.