In the case of Top System SA v État belge the Court of Justice of the EU provided some helpful clarifications on the scope of a user’s right to decompile software under the EU’s Software Directive (91/250, now consolidated as 2009/24/EC).
Top System, a software provider, had developed applications for a Belgian public body (‘SELOR’) and granted them a licence to it. SELOR experienced problems with the system and sought to decompile the software when Top System did not agree to remedy the errors. In response, Top System brought proceedings against SELOR for copyright infringement.
What is decompilation and why would you do it?
As readers are likely to be aware, a software program uses a compiler to convert (human-readable) source code into (machine-readable) object code. Decompiling is essentially the reverse: producing a version of the programming language from the object code.
However, decompilation does not reproduce the original source code, but a third version, ‘quasi-source code’. How useful this quasi-source code is will depend on a number of factors, including the nature of the object code being decompiled (which may be easier or harder to decompile) and whether the compiler has produced deliberately obfuscated code to make decompilation more difficult.
The Software Directive reserves exclusive rights in a computer program for the rightholder (e.g. of reproduction / alteration / distribution), but also provides for certain exceptions to this. One exception is in Article 5(1), where such acts are ‘necessary’ for the licensee’s use of the program ‘in accordance with its intended purpose, including for error correction.’ Article 6 – headed ‘Decompilation’ – has further exceptions (subject to certain conditions) if such acts are ‘indispensable to obtain the information necessary to achieve the interoperability of the program with other programs.’
However, it will be noted that decompiling code in order to correct errors (as SELOR did) is not within the interoperability exception of Article 6. Although decompilation may be useful as a self-help remedy for errors in a program, the question in this case was whether the licensee could lawfully do so.
The CJEU found that, while Article 6 is the provision which explicitly names a (limited) right to decompilation, the wording of the directive is clear: this is not the only provision which may allow decompilation. In particular, Article 5(1) allows decompilation (among other things) for the purpose of correcting errors in the program affecting its functioning.
This flows from the broader objective behind Article 5(1) – to enable the lawful purchaser of a program to use it in accordance with its intended purpose. In the CJEU’s view, an unremedied error would prevent such use. Subject to ‘specific contractual provisions’ and only to the extent necessary, the right applies despite the fact that decompilation is a ‘reproduction’ or ‘translation’ of the software which would otherwise require permission from the rightholder.
Traditionally, as the AG Opinion in this case noted, decompilation is a ‘time-consuming and expensive process with uncertain effects.’ Nevertheless, for licensees who may need to do so, this case confirms that the express right in Article 6 (for interoperability) is not the only legal option available.
Licensees wanting to manage their own error correction may therefore consider whether to pursue this route, although they should analyse their contract carefully before doing so. Meanwhile, rightholders may wish to expressly reserve the right to correct any errors which arise in the software. Indeed, this is common practice in software licences anyway, where rightholders often offer to perform error correction themselves to prevent the licensee being permitted to decompile the code.
Given the limited reported case law in this area in the UK, this finding is also likely to be at least persuasive to UK courts in relation to the corresponding provisions (sections 50B and 50C) of the UK’s Copyright, Designs and Patents Act 1988 as well.
"the lawful purchaser of a program is entitled to decompile that program to correct errors affecting the functioning of that program"