Here you see a discussion between Richard Stallman and me about the possibility of a PS2 (game console) port for Crystal Space. The main issue here is that in order to be able to program the API of the PS2 you need to sign an NDA (Non Disclosure Agreement). Of course this prevents writing an Open Source driver for the PS2. In the following sets of mails between Richard Stallman and myself, several issues are touched upon. Like for example the difference between Open Source and Free Software. And also a possible solution to this PS2 problem. Personally I find the conclusion VERY interesting (the last mail). It is a big read though :-)
Note that I didn't edit any of the texts below except for cutting out irrelevant or duplicated paragraphs. All sentences below are unedited copies from the original mails. Note that a few from my own mails to Richard Stallman are missing so I had to make up/remember what I said then. This dicussion is posted here with the permission from Richard Stallman.
Clarification! This article has been mentioned on SlashDot. A few people mentioned there that I didn't seem to have understood the difference between Open Source and Free Software. It is true that I wasn't aware of the difference at the start of the discussion but after reading the links from RMS about this issue I did understand the difference very well... But that's not the point. I may be a bit sloppy in my wording but I didn't want the discussion to go in that direction at all. I was mainly interested in the answer to a technical question about the LGPL and the PS/2. I may not have used the correct terminology but I'm not the kind of person to worry much about correct terminology. This is probably not very sensible of me but that's the way I am. It would have been nice to see a little more acceptance of that fact on the side of RMS. Just wanted to say this :-)
Mail 1: Jorrit Tyberghein -> Richard Stallman
I'm the project manager of Crystal Space which is an Open Source 3D engine under the LGPL (lesser or library, you can choose :-) URL is http://crystal.linuxgames.com.
Crystal Space is very portable (runs on Linux, Windows, and so on) and someone is now working on a port for the PS2 console. However consoles often suffer from pretty harsh NDA restrictions with regards to certain parts of their API. And this makes it difficult to release such code in combination with Open Source LGPL software.
We have one advantage. Crystal Space uses a plugin architecture which means that the modules directly accessing the NDA part of the PS2 API could be hidden in a plugin. But this of course means that that plugin itself couldn't be Open Source.
Do you have any suggestions or ideas about this situation and if/how it is possible to do this in combination with LGPL? In principle the plugin is a seperate module but of course there is the question of the interfaces that are implemented by the plugin. These interface definitions are now also LGPL. If needed we could relicense them.
Unfortunatelly I'm very bad at all those license issues so I'm not sure what is possible here and how.
Greetings and thanks in advance,
I can give you advice in the name of the Free Software Movement if you want. It will be very different from the advice you would get from the Open Source Movement, since our basic philosophy is different from theirs. If you would like me to do this, we should talk about "free software", not "open source", otherwise it would be misleading you. (See http://www.gnu.org/philosophy/free-software-for-freedom.html.)
Would you like that advice?
Also, could you tell me what a "console" is? I don't think you are talking about terminals, which are the only computer consoles I know.
I'm really very inexperienced with all these licensing issues.
Personally I would not mind that the source of the module that speaks to the PS2 API would be closed source as long as it would be freely available (in binary form then). But I have to make sure that this is actually possible in combination with the LGPL.
I was hoping you could give me valuable insights into that matter. If I'm not mistaken you wrote the LGPL?
A 'game console' is a computer that is made specifically for playing games. They are currently very popular.
Nowadays, the free software philosophy is getting drowned out by the wishy-washy open source philosophy. There must be thousands of people who support the Open Source Movement because they think I do! I need to spread the word that the Free Software Movement is still here, which means I have to make sure people who talk with me know we are not talking about open source.
Have we got that straight? If so, I can respond.
Note that in the first regards I'm asking a question about the LGPL license. Wether or not Open Source comes into play with that question I'm not certain about. But the point is that I have a project that uses LGPL license and I'm not sure if it is possible to use such a project on a PS2 on which certain parts of the API are under NDA.
The Free Software Movement has a more far-reaching and deeper goal: to give users the freedom to cooperate and participate in a community together. To have freedom, we must use software that respects our freedom. A non-free program takes away its users' freedom, so the only way to be free if you use a computer is to keep the non-free software off your computer.
The page http://www.gnu.org/philosophy/free-software-for-freedom.html gives an in-depth explanation of the difference between the two movements. Have you read it? And see the page http://www.gnu.org/philosophy/why-free.html for the explanation of why software morally should be free.
You're raising the possibility of a certain course of action (let's call it X). Whether X is possible is one crucial question, since an impossible procedure is not a useful alternative. But we have to consider another, equally important question: will X solve the problem? Will X achieve the goal of giving users freedom? If X won't enable us to keep our freedom, then whether possible or not, it isn't useful.
As far as I can see, using a non-free driver is not a solution because the user's freedom is not preserved that way. This is not success, this is failure.
So we need to look for ways to make the program run as 100% free software. For example, will the game run on an ordinary PC under GNU/Linux?
Ok, that's mainly the way I understand it too. This is also something from which my Crystal Space project is benefiting.
Yes. I have now. Thanks for the pointer.
One of the big goals of the Crystal Space project is to be able to write games that run unchanged (apart from recompilation) on various platforms. Currently we support Linux, Windows, OS/2, BeOS, Macintosh, and some others. No changes to the source code of the game need to be made. Not even #ifdef OS_WIN or things like that.
We are now at the situation that we would like to extend this to console game machines like the PS2 and others. But there we hit this obstacle of the required NDA for the API of those consoles. This means that we cannot make at least a (small) part of those drivers Open Source. We can make the binaries for those drivers 'freely available' (i.e. without charge). The restriction is only on the source level.
So in a way, what we want to do is to give users of the Crystal Space package more freedom by allowing them to run the games they create with it also on those platforms. As it stands now it seems that the only way we can do this is by distributing closed source drivers for those platforms.
So what do you think about this situation? I would rather not have to rely on these closed source drivers but as of this moment I see no other alternative except NOT allowing Crystal Space to run on those platforms. And this would be unfortunate.
That is a useful technical goal. But technical goals, whatever they are, have their meaning in a context of social goals and ideas of right and wrong. Only the social and ethical context provides a basis to decide whether something is a cure or a disease.
Unfortunately this looks like we have here a classic case of what happens when engineers pursue a technical goal and lose sight of the context in which they are working. They "solve the problem", but the results are not a step forward.
It is natural to make a free program support more platforms, if it can be done while keeping it free. But it makes no sense to support another platform by giving up freedom.
Based on the information you have given me, it seems that the only way for a free software project to support the PS2 and uphold the users' freedom is to reverse-engineer the API. So there are two possible legitimate choices:
I think #2 is better, because the PS2 is so proprietary that it doesn't seem worth spending time on.
That's like saying you "only" have cancer or you will "only" have your legs amputated. A program with this restriction is not free software, not even close to free.
It is not open source either. As you know, I don't do open source, so in general I am not concerned with whether a program is open source or not. I am concerned with whether it is free software. But since you've stated the goal of making your software open source, it is worth noting that you are now talking about discarding that goal, just to support an additional computer. What is really important to you?
You are facing a choice now, a choice about values. You have to choose between the goal of supporting one more platform and the goal of freedom.
Practical flexibility is not freedom. Helping people accept chains is not giving them more freedom, it is helping them surrender it.
To support freedom sometimes means resisting a temptation. This is one of those times. So if I were you, I would refuse to support the PS2 until it can be done with free software, and I would say so loud and clear to the public and the users.
Would you be so kind as to forward this to the other developers of Crystal Space?
I don't understand exactly what kind of freedom we are giving up here?
Also for people using Crystal Space on Linux (or GNU/Linux if you prefer), Windows, OS/2, ... this PS2 port does not matter at all.
It may not be worth it if you look at it from this stand-point but for games the PS2 is a very important platform
There is a big misunderstanding here. Free software is a matter of freedom, not price--if you speak French, think of libre, not gratuit. (Your name looks Flemish; I know there is some rivalry between the two parts of Belgium, so I hope you won't take offense at my choice of example.)
Our definition of free software is *more strict* than the definition of open source. So if something is not open source, it is certainly not free software. This driver would not be free software.
Please read http://www.gnu.org/philosophy/free-sw.html so you can understand the meaning of "free software".
Free software involves the freedom to change a program, the freedom to copy and redistribute it, and the freedom to publish modified versions. Practically speaking, the first and third freedoms require availability of source code. Those two freedoms are the ones people will not have when a program is released without source code.
Please don't develop non-free software.
That is true. So why support the PS2? It would be better to tell people that if they want to use this game they should install GNU/Linux.
You have an opportunity now to stand up for freedom. You can announce "We don't support the PS2, because Sony refuses to allow us to support it with free software!"
Have you read http://www.gnu.org/gnu/the-gnu-project.html? It would help you understand the basis of what I am saying, as well as the reason I wrote the GNU licenses.
Important for what goal? What values are you trying to support?
In my values, freedom is more important than "serving users" in a mere practical sense. Of course, in many cases we can achieve both, so we do not need to choose between them. But once in a while that isn't so.
By the way, if you are going to capitalize "open source", would you please capitalize "free software" also? I hope you will give the Free Software Movement the same respect that you give to the Open Source Movement.
Basicly I quote from your page:
For the PS2 driver we would only be able to give freedom 1 and 3 but not 2 and 4 because access to the source cannot be given unless you sign the NDA with Sony. But in addition we gain another kind of freedom:
I personally don't consider freedom 5 to be less important that freedom 2 and 4. Especially since this driver is really actually a very uninteresting piece of software (being basicly a bridge between the Crystal Space API and the PS2 API) so the desire to study this program is nearly zero. As for improvements, the restriction of the NDA is with Sony and not with us in this case. Also since it is a bridge the driver will either work or it won't. There is not much to improve if it does its job.
I understand that it is the principle that counts but there is also another viewpoint to consider: Crystal Space currently runs on Windows too and for that to be possible we have to access the proprietary DirectX API on Windows because there is simply no other way to have 3D graphics. So what is the fundamental difference between the following two scenarios:
Both the DirectX API as the PS2 Driver are proprietary. The ONLY difference is that in the case of the PS2 Driver it that some member of my team (not me, I'm not working on the PS2) is going to write it. But from the viewpoint of Crystal Space or the developer using Crystal Space the DirectX API is just as much black box as that PS2 Driver.
So what are we doing wrong here?
That is not a freedom, it is just a practical convenience. People will be able to run the program on the PS2, but they won't be able to do so in freedom.
In general, more freedom is not the same thing as having an additional option. A choice of two dictatorships is not freedom.
Maybe the cases are similar. I have never been a Windows users; I have heard the name "DirectX", but I know nothing about it. It is shocking that a major Windows API would be secret. However, I see that in the Windows case you don't describe a separate driver which talks to that API. That could be a difference between the two cases, but I do not fully understand the difference.
In any case, I would never sign a NDA to write a non-free program, or ask someone else to do that for me. If I can't write a free program, I will write no program. If I can't support a platform with free software, I won't support it. That is what my conscience calls for.
You may not agree with that decision of conscience, but before you dismiss it, please consider the fact that the GNU/Linux system exists specifically because of that decision of conscience.
No the API isn't secret. But the API implementation is closed source. But read on. I'll explain the situation a little clearer below.
Well in the case of Crystal Space itself it really makes no difference. Crystal Space makes abstraction of the hardware by defining a set of interfaces. Crystal Space itself only talks to those interfaces and doesn't care what/how it is implemented as long as the implementation follows the 'contract' of the API.
So we have 'drivers' implementing that Crystal Space API for various systems. So we have a DirectX driver for CS which is Open Source (although DirectX implementation itself isn't). We have OpenGL drivers. We have drivers for Macintosh, and so on... Now we want to write another driver which will make abstraction of the PS2 hardware. The driver itself needs to be Open Source as our own interfaces are LGPL and so I don't think you can write closed source stuff implementing those LGPL interfaces (which are basicly pure abstract C++ classes).
So this is no solution. Here is what we propose to do instead. I'm going to give a tree structure explaining the dependencies:
We don't want to contaminate Crystal Space itself with a closed source product so that's why we place an extra module between the Open Source PS2 Driver and the closed PS2 API.
So we are talking about that PS2 Wrapper. Legally we have no way to release the source for that because that directly violates the NDA for the PS2 API. But we can release a binary for it.
As you can see from this setup from the perspective of CS the situation is very similar between Windows and PS2. In the case of Windows there is an Open Source Driver that speaks through a public API (DirectX API) to a closed implementation. In the case of PS2 there is an Open Source driver that speaks through another public API (PS2 Wrapper) to a closed implementation.
The only difference is that WE (our a member of my team) writes the PS2 Wrapper while DirectX is written by Microsoft.
I hope this clears things up?
The point is that by using our approach you don't have to sign any NDA in order to develop games on the PS2. So it will gain developers the extra option of avoiding the PS2 NDA by using Crystal Space.
The only person that needs to sign the NDA is the person that developed the PS2 Wrapper.
If the driver is free software as well as open source, then you are not writing non-free software or distributing any non-free software. Windows and the DirectX implementation are bad, of course, but the culprit is Microsoft, not you.
I cannot discuss this in terms of "open source". I feel like you are pressuring me to adopt the slogan of a movement I disagree with and do not support. Can we please talk about free software?
Hmm, well. I have the feeling that in order that some piece of software can be qualified as 'free software' it needs to conform to the four criteria that you put on your page. Two of these criteria are already fullfilled: that's freedom 0 (i.e the freedom to run the PS2 wrapper for any purpose) and freedom 2 (i.e. the freedom to distribute copies to anybody). So the only remaining issues are the freedom 1 and 3 which can only be fullfilled by making the source available. i.e. by making it Open Source.
That's why I'm talking about Open Source now because I have the feeling that making it Open Source would remove the only obstacle to making it 'free software'. Am I wrong in this assumption?
Actually the definition of "open source" according to the Open Source Movement is pretty close to our definition of "free software", but they interpret it in a somewhat lax way, so that they have accepted some licenses that we in the Free Software Movement consider too restrictive.
I myself would not sign an NDA for useful technical information; I think it is immoral. But I could imagine that a PS2 wrapper that supports some standard interface used on other machines might make SONY extremely unhappy, because of encouraging people to write their software portably instead of writing it specifically for the PS2. Making them unhappy seems like a good thing given the circumstances.
I am speculating about SONY's motives, there. Do you know anyone who has an idea of what SONY's real motives are for this secrecy? I do not know who to ask.