Archive

Archive for the ‘OpenGL’ Category

Mesa3d and the art of slipping proprietary software through the back door.

October 9, 2011 Leave a comment

A form of anti-aliasing known as Morphological Anti-Aliasing, or MLAA has been merged into Mesa3d.

Mesa3d has traditionally been the free and open source OpenGL stack for many free and open source operating systems. A while back, an improved 3d driver library called Gallium3D was merged which among other things, better represents the internal workings of modern video cards, and has the potential to accelerate other things aside from OpenGL.

A lot of these uses are good, and in fact, beneficial. For example, it can now support OpenGL ES, it can accelerate codecs like VP8 (which is used in WebM), but it also brings a lot of legal gray areas with it such as the state tracker being worked on to natively support Microsoft DirectX, or in a tiny (but legally and ethically problematic nevertheless) example that is fully implemented in the Mesa 7.12 branch, MLAA.

I don’t want to talk about patent issues and MLAA too much because I’m not a lawyer, I just want to begin by stating that something developed with DirectX, Windows, and the XBOX in mind by a group of Microsoft employees and people with close affiliations to Microsoft is fishy. Why would Microsoft want to infect Mesa with MLAA? Possibly the same reason they encourage the use of FAT and Mono, so they can go back later after they’re popular and beat royalties out of anyone that uses them. I’m not going to say I know how deeply Mesa bothered to look into this potential problem, but if they’re trying to implement all of DirectX  (which is patented) in its own state tracker, I doubt patents are of much concern to them. They probably don’t care because when it turns out to be a problem and the fat man goes around suing people, it will be the users, and not the implementers.

Just listen to how open Jiminez’s MLAA is (in their words):

In which platforms does it run?

We have implementations in DirectX 10, for PC, and XNA, for Xbox 360. It could run in DirectX 9 without problems, as we are not using DirectX 10 special features. It is coded as a regular pixel shader, that runs as a post-process over a color image (with optionally depth as input). -Jorge Jiminez

MLAA, brought to you by someone who calls Windows a PC and doesn’t even mention any non-Microsoft platforms or OpenGL. Just what I want in my OpenGL stack!

What I do want to say, because it is obvious and factual just by reading the open source definition from the OSI and the free software definition from the Free Software Foundation, is that everything else aside, the MLAA implementation in Mesa is not free software, and it is not open source software either.

You can read the giant merge that brought in the nonfree MLAA implementation here.

There’s a huge amount of text on the page, so let me get right down to the licensing concerns of MLAA. From the license, section 2 makes this nonfree software.

+ * 2. Redistributions in binary form must reproduce the following statement:
+ *
+ * “Uses Jimenez’s MLAA. Copyright (C) 2010 by Jorge Jimenez, Belen Masia,
+ * Jose I. Echevarria, Fernando Navarro and Diego Gutierrez.”
+ *
+ * Only for use in the Mesa project, this point 2 is filled by naming the
+ * technique Jimenez’s MLAA in the Mesa config options. 

The “Only for use in Mesa” bit makes it violate these parts of the Open Source definition:

5. No Discrimination Against Persons or Groups

By saying only Mesa can use it, they discriminate against everyone else, so they’re already not open source.

8. License Must Not Be Specific to a Product 

It is exclusive to Mesa, so it is specific to a product.

10. License Must Be Technology-Neutral 

It is. At least, as technology neutral as it can be given that you can only use it within the confines of Mesa.

Of the Free Software Definition, it seems to me to violate:

The freedom to run the program, for any purpose (freedom 0).

If you can’t use it in anything but Mesa, you can’t run the software for any purpose.

The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1).

Obviously you can study this nonfree source code, but that’s a bad thing, because we’ll end up in a situation like RAR where every “free” version has been found to be tainted by incorporating or using design inspired by the nonfree RAR source code, thereby making it a derivative work. Releasing nonfree source code is a great way to suck the oxygen out of projects to replace your proprietary software. That may have been another goal of Jiminez’ s MLAA. Also worth stating, you can’t change it to do whatever you want it to do if it’s only licensed for inclusion in Mesa.

What is the solution?

Obviously any free/open source operating system that includes Mesa 7.12 (which could be released as 8.0) will actually be nonfree if they don’t remove this MLAA trojan horse.

Since Mesa was nice enough to default to building without patented S3TC and OpenGL floating point textures, and allowing them to be built as a compile time option, it would be nice if they let their users and downstream operating system distributors make the decision on whether to ship nonfree software along with the Mesa3d bundle.

I think The Mesa3d people do some incredible work, but sneaking proprietary software through the back door and hope nobody is looking to closely is not the right thing to do. :)

Categories: Linux, Mesa3d, OpenGL Tags: , , ,
Follow

Get every new post delivered to your Inbox.