May 26, 2004

Prisons for People, Prisons for Data

On reading Mark's discussion of President Bush's pronounciation of Abu Ghraib, I read the Slate article by Sam Schechner to which he referred. The Slate article provides a link to an audio file of Professor Ahmed Ferhadi of New York University saying Abu Ghraib in Arabic. I can't play it. The file is in a new multimedia format that Microsoft has created called Advanced Systems Format. Microsoft's Windows Media Player can play such files, but as far as I know, nothing else can. So if you use Microsoft software, you can play this file, but if like me you don't, you can't.

The ASF format is described on Microsoft's web site here. You can download a 98 page specification in Microsoft Word format. The specification proper is preceded by a three page End User License Agreement, in small type. The EULA begins with this:

IMPORTANT--READ CAREFULLY: This Microsoft Agreement ("Agreement") is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation ("Microsoft") for the version of the Microsoft specification identified above which you are about to download ("Specification"). By downloading, copying, or otherwise using the Specification, you agree to be bound by the terms of this Agreement. If you do not agree to the terms of this Agreement, do not download, copy or otherwise use the Specification.

I am not a lawyer, and this is not legal advice, but even I can be confident that this is legal nonsense. Contrary to the statement in the above paragraph, I did not read the EULA prior to downloading the specification. I couldn't have, since it doesn't appear on the web page, only in the spec, which you have to download to read. And they're not entitled to assume that people read things in order. Anyone who looks at the table of contents and skips to the beginning of the substantive matter, or to a section of particular iinterest, won't even see the EULA. Such "agreements" have no legal force because they are not in fact agreements. The fundamental principle of contract law is that a valid contract is formed only by "a meeting of minds". The parties must both agree to the same thing. If the parties have different things in mind, no contract is formed, nor can one party impose a contract unilaterally, which is what Microsoft is trying to do here.

The invalidity of the EULA doesn't mean that you can do anything that you want with the specification document. Microsoft does have rights under copyright law. These rights are created by statute and do not depend on the existence of a contract between the company and the buyer. You can't, for instance, copy and distribute freely the specification document since that is governed by copyright law. But once they publish it, you're entitled to read it, and except as limited by any patents that may be relevant, you can use the information as you see fit. The particular words used in the document to describe the file format are subject to copyright, but data structures are ideas and are not protected by copyright.

Microsoft also has rights under trademark law. If they wish, they can trademark the name of their format. What that means is that they can prevent someone else from using the same name for a different format, or from falsely claiming to implement the specification.

The basic license is described thus in section 1(a):
(i) reproduce and internally use a reasonable number of copies of the Specification in its entirety as a reference for the sole purpose of implementing ASF in your hardware, application, or utilities (your "Solutions"); (ii) reproduce and internally use your implementations of ASF made pursuant to the terms of this Agreement (your "Implementations") in source code form solely for internal development and testing of your Solutions, and (iii) reproduce and have reproduced in object code form only, your Implementations and distribute, directly and indirectly, your Implementations (only in object code form) solely as part of and for use with your Solutions.

The first clause is reasonable and legal. It grants a license to reproduce the document for certain purposes. As copyright holder, they have the right to control copying beyond fair use. The next two clauses are the interesting ones. They attempt to control the distribution of information about the specification. This attempt continues in Section 2(c):

You may not provide, publish or otherwise distribute the Specification to any third party. Further, you shall use commercially reasonable efforts to ensure that the use or distribution of your Solutions, including your Implementations as incorporated into your Solutions, shall not in any way disclose or reveal the information contained in the Specification.
The net effect of these is that you can use the specification to write your own software for dealing with files in this format, and you can distribute the compiled versions of that software, but you cannot distribute the source code for that software, which would provide information about the specification to a programmer, or otherwise disseminate information about it. Now, this is curious. Since they have published the specification and explicitly allow people to produce software implementing it, they aren't, strictly speaking, trying to force people to use Microsoft products. What they are clearly trying to do is to discriminate against Free and Open Source Software. This is made explicit in section 2(g):
For a variety of reasons, including without limitation, because you do not have the right to sublicense the Necessary Claims, your license rights to the Specification are conditioned upon your not creating or distributing your Implementations in any manner that would cause ASF (whether embodied in your Implementation or otherwise) to become subject to any of the terms of an Excluded License. An "Excluded License" is any license that requires as a condition of use, modification and/or distribution of software subject to the Excluded License, that such software or other software combined and/or distributed with such software be (x) disclosed or distributed in source code form; (y) licensed for the purpose of making derivative works; or (z) redistributable at no charge;
An example of an Excluded License, and no doubt the one they they have in mind, is the GNU General Public License, the license under which a great deal of free software is distributed, ranging from major projects such as GNU Project and the Linux kernel down to my own software. Microsoft is so scared of the free software movement that they are trying to prevent their ASF format from being used in free or open source software.

Although they aren't, strictly speaking, preventing other people from implementing the ASF specification, the prohibition against releasing information about it, including source code, raises the barrier. I haven't studied this specification carefully, but it looks pretty complex. Writing code to implement it would probably be a fair bit of work. That will discourage people who don't have a fairly strong motivation to support this format. If, on the other hand, source code could be distributed, the work need only be done once. For instance, if you are a C programmer, you don't need to study the details of the various common audio file formats and write your own software for reading and writing them because there are freely distributed libraries for doing this available as source code. I've been using Erik de Castro Lopo's libsndfile library.

As I said above, in my opinion the restrictions that Microsoft is trying to impose have no legal force, but the use of secret and/or proprietary data formats is an increasingly widespread problem. It helps monopolies like Microsoft, creates economic inefficiency, discourages innovation, and, when these formats are used by governments, creates an improper linkage between government and private companies, often forcing people to use a particular company's products in order to obtain access to government services or information to which they are entitled. The Open Data Format Initiative is an organization created to combat this problem by encouraging companies to open up their data formats and lobbying governments to forbid the use of proprietary data formats in government operations.

Returning to Slate's example of how to pronounce Abu Ghraib, why did they provide the file in ASF format? There isn't any good reason to. There are a number of audio file formats that do the job perfectly well and are universally understood, such as WAV, probably the most common, and AU/SND. For plain sound files such as this, ASF isn't any sort of improvement. The only reason that I can see is that Slate is owned by Microsoft and that this is an effort to lock consumers in to Microsoft products and discourage the use of FLOS software.

Posted by Bill Poser at May 26, 2004 02:28 PM