copyright software
&quot;Reverse Engineering&quot; a plain text file format
<p>If a file output from a non-open source program is stored in plain text. What legal implications are there for building a parser to read that file into my program?</p>

<p>Is there any legal distinction between one that is plain text vs binary vs encrypted?</p>

<p>Affirmative authority that this particular use (incorporation of the format of another program's textual data files into your own program)  is protected is somewhat elusive in the US system; however there's a lot of observable evidence that reverse engineering data file formats without a license is widespread. My sense is that this would be analyzed under the same rubric as other kinds of reverse engineering and/or fair use. I'm sure there are others here who are better able to clearly and concisely explain that law than I am.</p>

<p>However there may be limits — it seems Microsoft was able to prevent VirtualDub's use of the ASF format by <a href="http://www.google.com/patents/US6041345" rel="nofollow">patenting it</a>. That said, it's hard to see how an unencrypted, unencoded ASCII data file file could be patentable (i.e. where the ASCII strings are the data, generated in response to user input, and the format is just their order and separators, etc).  </p>

<p>For the European arena, there is recent authority in <em>SAS Institute Inc v World Programming Limited</em> that the format of a program's data files are not protected by copyright when reverse engineered without the source code. The following is from the <a href="http://www.bailii.org/ew/cases/EWHC/Ch/2013/69.html#para8" rel="nofollow">digest and application of the CJEUs decision</a>  by the English court that referred it, in its subsequent judgment:</p>

<blockquote>
<b>The judgment of the CJEU</b><br>

On 29 November 2011 Advocate General Bot delivered his Opinion on the questions referred...<br>
<br>
Questions 1-5<br>
<Br>

The Court dealt with these questions together. It interpreted this court as asking "in essence, whether Article 1(2) of [the Software Directive] must be interpreted as meaning that the functionality of a computer program and the programming language and the format of data files used in a computer program in order to exploit certain of its functions constitute a form of expression of that program and may, as such, be protected by copyright in computer programs for the purposes of that directive": see [29].<br><br>
Having referred to recital (14), Article 1(1) and 1(2) of the Software Directive, Article 2 of the WIPO Copyright Treaty and Articles 9(2) and 10(1) of TRIPS, the Court went on:<br><br>
...
<br><br>
39. [...] it must be stated that, with regard to the elements of a computer program which are the subject of Questions 1–5, neither the functionality of a computer program nor the programming language and the format of data files used in a computer program in order to exploit certain of its functions constitute a form of expression of that program for the purposes of Article 1(2) of Directive 91/250.<br><br>
40. As the Advocate General states in point 57 of his Opinion, to accept that the functionality of a computer program can be protected by copyright would amount to making it possible to monopolise ideas, to the detriment of technological progress and industrial development.<br><br>
41. Moreover, point 3.7 of the explanatory memorandum to the Proposal for Directive 91/250 [COM(88) 816] states that the main advantage of protecting computer programs by copyright is that such protection covers only the individual expression of the work and thus leaves other authors the desired latitude to create similar or even identical programs provided that they refrain from copying.<br><br>
42. With respect to the programming language and the format of data files used in a computer program to interpret and execute application programs written by users and to read and write data in a specific format of data files, these are elements of that program by means of which users exploit certain functions of that program.
<br><br>
43. In that context, it should be made clear that, if a third party were to procure the part of the source code or the object code relating to the programming language or to the format of data files used in a computer program, and if that party were to create, with the aid of that code, similar elements in its own computer program, that conduct would be liable to constitute partial reproduction within the meaning of Article 4(a) of Directive 91/250.<br><br>
44. As is, however, apparent from the order for reference, WPL did not have access to the source code of SAS Institute's program and did not carry out any decompilation of the object code of that program. By means of observing, studying and testing the behaviour of SAS Institute's program, WPL reproduced the functionality of that program by using the same programming language and the same format of data files.<br><br>
45. The Court also points out that the finding made in paragraph 39 of the present judgment cannot affect the possibility that the SAS language and the format of SAS Institute's data files might be protected, as works, by copyright under Directive 2001/29 if they are their author's own intellectual creation (see Bezpecnostní softwarová asociace, paragraphs 44 to 46).<br><br>
46. Consequently, the answer to Questions 1–5 is that Article 1(2) of Directive 91/250 must be interpreted as meaning that neither the functionality of a computer program nor the programming language and the format of data files used in a computer program in order to exploit certain of its functions constitute a form of expression of that program and, as such, are not protected by copyright in computer programs for the purposes of that directive."
</blockquote>

<p>Regarding the idea that the user has rights to access their output of a program held in a proprietary data file format there is some additional discussion in the that might be helpful in paragraphs 48 - 62 (of the CJEU opinion), discussing the right of a licensee to 'study and observe' the 'underlying' 'ideas and principles' of a program to accomplish 'acts of loading and running necessary for the use of the computer program.'</p>
