Thursday, March 3, 2016

Computer Programming Is a Form of Writing

The case of the FBI vs. Apple has generated a lot of useful discussion. It was the FBI who decided to take the case into the court of public opinion. It thought it had a good case: one of the most notorious mass murderers of this winter had been an iPhone user. Surely, the FBI thought, the public would conclude that Apple, the maker of the phone carried on the errand on which so many innocent people were killed, was guilty by association. But the attempt may have backfired. While there are a wide range of points of view on the FBI’s case, the gist of the public reaction seems to be the question, “Why is the FBI using its authority to investigate crime as an excuse to try to take down an unrelated commercial enterprise?”

In the discussion of the FBI’s case against Apple, many people have expressed surprise that computer programming would be considered a form of writing. As a computer programmer myself, I can assure everyone that the idea of writing a computer program should not surprise anyone. I use the same computer keyboard to write a computer program that I am using to write this blog post. I use the same characters — upper- and lowercase letters and a handful of symbols to go with them. I use the same software — the everyday kind of text-editing software that is included with every computer.

It is not just the process and the enabling technology that make writing a computer program almost the same as writing an essay. The skills involved are also mostly the same. A writer chooses a language, follows the rules of the language, writes toward a specific objective, checks the result for accuracy and readability. These are the same things a computer programmer must do. The best evidence for the similarity is how easy it is to teach computer programming to those who have professional writing training. With a few hours to learn the first rules of the language they are now working in, a writer is writing useful computer code. It is a good deal harder to teach computer programming to, for example, a physician or an accountant. They are trained in standards but have to learn some of the finer points of language before they can approach a computer language.

I’ll draw a few more strands of connection for those who may never have thought to blur the lines between writing and computing. Computer coders create a wide range of documents. There is no clear bright line that separates a computer document that merely displays information or an opinion, a “web page,” from one that takes an action on behalf of a user, an “application.” When I write a blog post, I am actually coding — not merely writing the words that you see, but also the computer instructions, in a form of XML, that break the blog post into paragraphs and may add text formatting, colors, and images. There are rarely any actions in my blog posts, but there could be. Surveys, live embedded data, and other simple actions are at my fingertips as a blogger. Now consider this: if you use a web-based email application, it is coded in the same way, using XML or something similar. As computer applications go, mail doesn’t require a wide set of actions, but the essential actions of email are right there in the same XML that defines what you see when you go to the email page. You have to know computer code rather well to separate the document from the actions. This is a relatively recent development of the last 20 years, but it is an unavoidable reality of the way computers are used today. Computers contain data, documents, programs, and more, all mixed up within the same set of files, and it is not the easiest thing to tell where one stops and another starts. It is like looking at an oil painting and trying to separate the picture from the brush strokes. If you are an art expert, you can do this, but only up to a point. Ultimately, the painting does not exist without the brush strokes, and it does not exist without the picture either.

The question of whether writing a computer program is a form of writing comes up because it is related to an important legal question. In the U.S. Constitution, the First Amendment assures “freedom of speech.” Courts have uniformly held that writing is s form of “speech,” so can the law force you to write something you don’t agree with? Courts have allowed such a thing only in very specialized circumstances. So can the law force a computer company to write a computer program to tear down the exact security mechanisms it has fought so hard to construct?

There are other issues at hand, and the freedom of speech issues may end up being a sideshow alongside a more fundamental freedom at stake, being free from forced labor. If a court can, without so much as a hearing, order a phone maker to do some 50,000 worker-days of computer coding just because a law enforcement officer thinks it might shed some light on an investigation, then what unpaid work might a court order you to do someday just because you can? It is really the American way to force innocent bystanders to work endless hours without pay, or is that something else that the Constitution expressly discourages? A basic sense of fairness says that if the FBI decides it needs a computer program to do a certain thing for the public good, it should do the work of creating the program itself, and not look around, predator-style, for a victim who might be pressed into service to do the work for it. I know I would feel safer if we had an FBI that saw itself as an agent to protect the world from this kind of predatory thinking, rather than an organization that feels entitled to practice this kind of predatory behavior itself.