It seems that Sun are looking at using the GPL for their soon-to-be-open-sourced UltraSPARC T1 processor. I figured I should write something more about the processor, since they added me to the blogroll on opensparc.net.
They’ve also started a public consultation on which license they should use. This is great, because I suspected that they’d just release it under the CDDL and leave the users to like it or lump it, like they did with OpenSolaris.
Sun summarise the reason for open sourcing the processor as the following:
The goal in simplest terms, given the fact that Niagara is a breakthrough technology, is to offer it to everyone (as it is a compelling invitation for people to adopt) so that it becomes the industry standard for 64-bit CMT.
New designs/chips/SOCs for new uses that can be brought quicker to market by leveraging something that works.
In English, that translates into:
We want everyone to be able to use it, in both free and proprietary systems. We want to beat Intel/AMD, but we know that SPARC as an architecture is declining (I’m guessing here, but it’s probably true) so we need another way to do it.
If they want it to be usable as part of non-free systems, they should be using the LGPL rather than the GPL. I think the LGPL is the right license because it: -
- allows free, unrestricted distribution of the code
- ensures modifications are made available (if the modified code is distributed)
- allows use as part of non-free systems without requiring the rest of the system to be under the same license
The GPL would require the rest of any system the code is incorporated into to also be released under the GPL. This would either: increase the amount of free hardware out there OR stop people from using the processor, thus reducing the community around it and slowing down the development of it.
While I’m somewhat extremist when it comes to Free Software (insofar as I believe that the GPL is always the right license for software), hardware is a different matter. There are a number of important differences between hardware and software, the key ones being: -
- Hardware modules are not dependent on each other – each module is essentially independent and doesn’t require anything external to do it’s job (accept inputs, do some form of processing, set outputs). Software is modular too, but most software modules are built to work with other modules.
- Most hardware systems developed as code are developed in proprietary development environments (when I say proprietary in this case, I don’t just mean non-free – I mean you have to sign an NDA just to use them). This could cause all sorts of legal issues relating to the publication of the finished system (under any license).
- Most hardware is distributed on custom ICs – if your hardware has a bug, you can’t just get the source, recompile and off you go. You need the right software and hardware to be able to do anything. This doesn’t necessarily mean that access to source code isn’t as important for hardware as it is for software, but it’s worth considering.
- In Europe, software can’t be patented (in theory at least), but hardware can.
Given these differences, perhaps no existing license is right for hardware – maybe we need the GNU Hardware Public License to address the unique issues associated with it.
For example, does having multiple modules on the same chip mean that they’re a single work even if they’re completely unrelated and don’t talk to each other? If two modules on a chip do talk to each other, are they classed as a single work or as two seperate works? What constitutes source code – the original source in the hardware description language, the compiled form ready to be burnt to a chip or a diagram of the individual gates on the chip? As far as existing licenses are concerned, all could be classed as source code yet they’re very different things. Let’s not forget patent issues as well – in Europe software is not patentable, so the original source code for hardware cannot be covered by patents. However there is nothing to stop you from patenting hardware – what happens if there’s a patent which only applies to the finished hardware? For example, by using and distributing source code you don’t violate the patent, but as soon as you burn it to a chip, you do (e.g. the patent is for ‘A piece of hardware which does X’). These issues mean that should existing licenses be used for hardware source code, the freedoms we though the license was guaranteeing are no longer guaranteed.
To summarise, I believe that of the existing licenses, source code for hardware should be licensed under the LGPL. But what we really need is a GPL-like license specifically for hardware, because it is my belief that existing software licenses are not sufficient. I don’t have all (or even many) of the answers, but what I do know is that open hardware, like open software, is the future and we should be working to encourage its development and use.