EU: Copyright Doesn’t Cover Functionality, Programming Language

The European Court of Justice, the highest court in the European Union, is kind of on a roll lately. We already discussed how they outlawed generic ISP-side internet filters, and now, in an opinion (so it’s not a ruling just yet), Yves Bot, an advocate-general at the Court, has stated that functions provided by computer programs, as well as the programming languages they’re written in, do not receive copyright protection. The opinion is very well-written, and relatively easy to read and grasp. Note: Brilliant quote from a comment over at Hacker News: “Copyright makes you write your own code. Patents prevent you from writing your own code.”

Currently, SAS Institute, Inc. is suing World Programming for copyright infringement. SAS claims that by implementing the same functionality, using the same programming language, as is present in SAS’ software, World Programming is violating SAS’ copyright. The crucial thing here is that World Programming has not had any access to SAS’ source code.

SAS creates something known as the SAS System, a set of software programs to collect, store, analyse, and manipulate data. Using the SAS Language, people can extend the functionality of the SAS System. The problem was that if a customer wanted to switch away from SAS, he had no choice but to rewrite his programs; the SAS Language only works with SAS’ software, meaning total vendor lock-in.

This is where World Programming comes in. They developed an alternative to the SAS System, dubbed the WPL System, which allowed customers to run programs written in the SAS Language without using the SAS System. They had no access to any of SAS’ source code whatsoever, so they had to write it from scratch.

As a result, SAS sued World Programming, arguing that reverse engineering SAS constituted copyright infringement – not just of the source code itself, but also the manuals for the SAS System (since the functionality was alike, I presume). In addition, SAS also contents that World Programming violated the license of the SAS System Learning Edition (probably by using it to better understand SAS, and therefore, violate a non-commercial clause in the license).

The High Court of England and Wales already ruled in July last year that SAS had no case, and that the functions provided by computer systems, or the language they’re written in, cannot be protected by copyright. The case then escalated to the Court of Justice, which is set to rule next year. Yves Bot’s non-binding opinion, published today, reiterates The High Court of England and Wales’ ruling.

Bot comes to the conclusion that under current EU law, the functionality provided by a computer program cannot form the object of copyright protection. His example to illustrate his point, interestingly enough, is not altogether different from how most programmers argue against software patents.

Let me give a specific example. Where a programmer decides to develop a computer program for airline ticket reservations, that software will contain a multitude of functionalities needed to make a booking. The computer program will have to be able, in turn, to find the flight requested by the user, check availability, book the seat, register the user’s details, take online payment details and, finally, edit the user’s electronic ticket. All of those functionalities, those actions, are dictated by a specific and limited purpose. In this, therefore, they are similar to an idea. It is therefore legitimate for computer programs to exist which offer the same functionalities.

There are, however, many means of achieving the concrete expression of those functionalities and it is those means which will be eligible for copyright protection under Directive 91/250. As we have seen, creativity, skill and inventiveness manifest themselves in the way in which the program is drawn up, in its writing. The programmer uses formulae, algorithms which, as such, are excluded from copyright protection because they are the equivalent of the words by which the poet or the novelist creates his work of literature. However, the way in which all of these elements are arranged, like the style in which the computer program is written, will be likely to reflect the author’s own intellectual creation and therefore be eligible for protection.

In other words, the actual written code behind a function is protected by copyright, but the function is not. So, if you arrive at the same function but with entirely different code, you are not infringing any copyright. “To accept that a functionality of a computer program can be protected as such would amount to making it possible to monopolise ideas, to the detriment of technological progress and industrial development,” Bot writes.

Well paint me red and call me a girl scout – that sounds a hell of a lot like how we argue against software patents.

Moving on to the issue of the programming language, Bot also comes to the conclusion that it, too, cannot form the object of copyright protection.

It seems to me, therefore, that programming language is a functional element which allows instructions to be given to the computer. As we have seen with SAS language, programming language is made up of words and characters known to everyone and lacking any originality. In my opinion, programming language must be regarded as comparable to the language used by the author of a novel. It is therefore the means which permits expression to be given, not the expression itself.

Moving on to the matter of the data files SAS stores information in. To achieve interoperability with these data files, World Programming had to decompile certain parts of the SAS System. Bot argues that an inherent function of the data files is to enable interoperability, and that EU law allows decompilation in cases where the necessary information to achieve interoperability has not been made readily available. In other words, exactly because SAS did not publish the information needed for third parties to read from and write to the data files, World Programming was allowed to decompile.

However, Bot adds that “in my view, the use of the terms ‘indispensable’ and ‘necessary’ illustrates the desire of the European Union legislature to make decompilation an exceptional act. To my mind, the licensee will have to demonstrate the absolute necessity of reproducing the code or of translating the form of the code for the purposes of interoperability with the elements of his own program.”

This is reasonable, in my eyes. If the information to create fully interoperable third party programs is readily available, then there’s no need to decompile or reverse engineer anything. If such information is not readily available, however, third parties should legally be allowed to decompile the information.

Lastly, we have the manuals. World Programming only took “keywords, syntax, commands and combinations of commands, options, defaults and iterations” out of the SAS manuals. As you can probably deduce from what we’ve covered so far, Bot does not believe these elements are covered by copyright protection.

I have to say that this is the second time the EU Court of Justice has blown me away with the clarity of their rulings and opinions. The language used is not overly legalese, it’s relatively easy to understand, and the arguments made are based on technical understanding. It naturally helps that I find myself in full agreement with the opinion, but still.

We can only hope that the Court of Justice adopts Bot’s opinion, but we’ll have to wait until next year before we find out.


  1. 2011-11-29 2:24 pm
    • 2011-11-29 2:52 pm
      • 2011-12-04 5:38 pm
    • 2011-11-29 3:54 pm
      • 2011-11-29 4:36 pm
        • 2011-11-29 5:19 pm
        • 2011-11-30 2:21 am
  2. 2011-11-29 3:45 pm
    • 2011-11-29 3:53 pm
      • 2011-11-29 3:56 pm
        • 2011-11-29 4:12 pm
          • 2011-11-29 4:33 pm
        • 2011-11-29 5:37 pm
          • 2011-11-29 5:50 pm
          • 2011-12-04 4:50 pm
      • 2011-11-29 4:44 pm
  3. 2011-11-29 4:26 pm
  4. 2011-11-29 4:38 pm
    • 2011-11-29 7:24 pm
  5. 2011-11-29 4:58 pm
  6. 2011-11-29 5:09 pm
  7. 2011-11-29 5:34 pm
  8. 2011-11-29 6:00 pm
    • 2011-11-29 6:10 pm
      • 2011-11-29 6:18 pm
      • 2011-11-29 7:40 pm
        • 2011-11-29 8:13 pm
          • 2011-11-29 8:42 pm
          • 2011-11-29 9:02 pm
          • 2011-11-30 6:51 pm
          • 2011-11-30 8:23 pm
          • 2011-11-29 9:02 pm
          • 2011-11-29 9:16 pm
          • 2011-11-29 11:56 pm
          • 2011-11-30 7:39 am
          • 2011-11-30 11:34 am
          • 2011-11-30 12:27 pm
          • 2011-11-30 12:58 pm
          • 2011-11-30 1:54 pm
          • 2011-11-30 2:09 pm
          • 2011-11-30 2:13 pm
          • 2011-11-30 4:20 pm
          • 2011-11-29 11:05 pm
          • 2011-11-30 3:22 am
          • 2011-11-30 7:47 am
          • 2011-11-30 9:58 am
          • 2011-11-30 10:12 am
          • 2011-11-30 11:44 am
          • 2011-11-30 12:29 pm
          • 2011-11-30 12:59 pm
          • 2011-11-30 1:02 pm
          • 2011-11-30 7:29 pm
          • 2011-11-30 7:31 pm
          • 2011-12-03 5:50 am
          • 2011-11-29 9:18 pm
          • 2011-11-30 3:25 am
          • 2011-11-30 7:07 am
          • 2011-11-30 10:16 am
          • 2011-11-29 9:57 pm
          • 2011-11-29 10:03 pm
          • 2011-11-29 10:46 pm
        • 2011-11-30 3:18 am
          • 2011-11-30 1:25 pm
          • 2011-12-03 6:00 am
  9. 2011-11-29 10:09 pm
    • 2011-12-04 4:53 pm
  10. 2011-11-30 12:50 pm
    • 2011-11-30 1:49 pm
      • 2011-11-30 10:51 pm
    • 2011-11-30 3:08 pm
    • 2011-12-04 5:44 pm
  11. 2011-11-30 7:19 pm
  12. 2011-11-30 9:37 pm
    • 2011-12-01 9:22 am
      • 2011-12-01 10:50 pm
  13. 2011-12-02 9:01 pm