Supreme Court justices are among the nation’s foremost legal minds. But just how good are the nine members of the court at computer programming?
Often teased for their ambivalence toward technology – Chief Justice John Roberts once asked a lawyer in 2010 to explain the difference between an email and a pager – the justices this week were forced to grapple with complicated programming concepts in a multi-billion-dollar copyright dispute between tech giants Google and Oracle.
So how did the justices do at trading their black robes in for white hats? Not too bad, said several programmers and tech leaders who were involved in the case.
“This may be one of the first foundational programming cases where the justices dove deep into the technology before applying the law,” said Bruce Gustafson, president of Developers Alliance, a trade group that had filed a brief in the case in support of Google. “I’m actually pretty impressed with what came out.”
What came out was a landmark ruling for Google in which Associate Justice Stephen Breyer, writing for a 6-2 majority, found that the code the search company copied from Oracle to build its Android mobile operating system was a “fair use” under copyright law. Not only is Google in the clear but programmers industrywide may now continue to clone “libraries,” or code written by others, to perform common software tasks.
But before Breyer came to the court’s legal conclusion, he spent roughly five pages of the opinion explaining in detail what goes on behind the screens of technology seemingly ubiquitous everywhere but the Supreme Court. He even included snippets of computer code in the opinion to illustrate his points. This from the court’s only octogenarian, a man who once joked he “couldn’t even understand” the movie The Social Network, the 2010 fictionalized account about the founding of Facebook.
Reaching for analogies to make the concepts more clear, Breyer pointed to a car’s gas pedal, mentioned a keyboard and conjured up a recipe-delivering robot.
“Imagine that you can, via certain keystrokes, instruct a robot to move to a particular file cabinet, to open a certain drawer, and to pick out a specific recipe,” he wrote in an analogy even he acknowledged was farfetched. “With the proper recipe in hand, the robot then moves to your kitchen and gives it to a cook to prepare the dish.”
Oracle sued Google for copying roughly 11,500 lines of code from its Java platform, and sought $9 billion in damages. The search giant acknowledged it copied the material, but claimed that was standard practice. The background code, part of an Application Programming Interface, or API, allows the code in the program to connect to other code, known as implementing code, that carries out a specific task. In essence, the background code creates a nexus between the programmer’s code and the implementing code.
Associate Justice Clarence Thomas dissented and so also had to wrestle with the technical matters in an opinion that was joined by Associate Justice Samuel Alito. Thomas, 72, was more succinct than Breyer and relied on an analogy near to his heart: He compared the way computer programs are written to how the law is structured.
There are definitions in law – say, for the word “refugee” – that can run hundreds of words long. “Rather than repeat all those words every time they are relevant, the U.S. Code encapsulates them all with a single term that it then inserts into each relevant section,” Thomas wrote. In other words, the definition gets recycled over and over.
“A programmer familiar with prewritten methods can string many of them together to quickly develop complicated programs without having to write from scratch all the basic subprograms,” Thomas wrote, adding five lines of example code in a footnote – a simple program that could be used to determine the largest of any three numbers.
But Thomas came to the opposite conclusion from Breyer.
Google’s use of the code, he wrote, was “anything but fair.”
Associate Justice Elena Kagan noted in 2013 that the nine jurists were still largely communicating by paper memo when not meeting in person.
“The justices are not necessarily the most technologically sophisticated people,” she said at the time. “The court hasn’t really ‘gotten to’ email.”
A lot at the court still gets done on paper.
That has long made gaping at the court’s anachronisms something of a sport for journalists and techies. There was the time in 2014 – during another major copyright suit involving a streaming service – when Breyer raised the specter of the “phonographic record store” during arguments. Associate Justice Sonia Sotomayor drew smirks on the internet during that same argument when she referred to Netflix as “Netflick.”
Unlike at the White House and the U.S. Capitol, the principals and senior staff at the Supreme Court have no presence on Twitter, Facebook and other social media.
But the lack of connection to certain technologies and the occasional slipups in arguments generally aren’t reflected in opinions, several experts said. This week, and in the arguments in the case last fall, the justices got relatively high marks from programmers who have spent a career working with and even developing the languages at issue.
Joshua Bloch, a Carnegie Mellon University professor who worked at both Google and Sun Microsystems, later acquired by Oracle, said he was “impressed” by Sotomayor’s understanding of the technical details “based on her questions in the oral argument.”
Gustafson, with the Developers Alliance, said that briefs filed by outside groups in technical cases like the Google dispute are often targeted at the twenty-something law clerks who help the justices draft opinions. Many of them, Gustafson speculated, have probably dabbled in coding or have family or friends who live and breathe it.
“I suspect the opinion in this case was a team effort, with young lawyers helping bring technical nuance to the experience and legal insight that the justices themselves command,” he said.
Bloch described the technical aspects of Breyer’s opinion as “impressively correct” and said he “clearly understands” the nuances involved in the interaction between the code crafted by Google’s developers and the material that had been copied from Oracle.
“Crucially, the prose concerning code is all perfectly understandable and correct to a programmer,” he said.
Breyer’s code snippets, Bloch said, were “just fine.”
But Bloch took issue with Thomas’ dissent, which he described as “incoherent.” The problem with Thomas’ analogy, he said, is that a definition of a word in the law never changes while the code called through an API can vary.
Thomas’ short program example was “basically fine,” Bloch said.
Gilad Bracha, a well-known software engineer involved in the design of Java and who created a programming language called Newspeak, said the justices did a fine job explaining the programming concepts, though he said they “glossed over a lot of detail.”
Whether they did so because they found that detail irrelevant or because they didn’t fully grasp some of the nuance, he said, is anybody’s guess.
For instance, Bracha noted in some cases the API code called up in a program may vary when it is run, depending on the inputs in play – a concept known as “dynamic binding.” Both Breyer and Thomas referred to an “inextricable” link between the code written by a programmer and the background code called through the API, but Bracha said dynamic binding demonstrates that is not always how things work.
“Because there is a lot of reasoning by analogy in these opinions, and analogies are often incomplete, such details may matter,” Bracha said.