Preventing modification: put it in ROM?
During the GPLv3 debate, some people have raise the question of what to do when some regulation requires that software must not be modifiable. Examples of this may include government, or standards body, regulated technology such as radios, network cards, or medical equipment.
Richard Stallman offered the response that the hardware manufacturers can put that part of the software in unmodifiable ROM. I think it needs to be explained why a free software advocate would suggest this.
The current options available to hardware manufacturers who want to use GPL’d software are to:
- Give people the software, with all the usual freedoms
- Give people the software but use DRM to prevent them from being able to run modified versions
- Put the software in a ROM chip (or put a locked door on the device containing the software)
Both options 2 and 3 are bad for the free software movement. We’d like to see everyone use option 1. There are times when option 3 is only bad in trivial ways. The freedom to modify the software in an ordinary wristwatch is not so important.
Option 2 is attractive to some hardware manufacturers because they can lock the user out, and they can still have all the access they want to update the software on the computer. This might support their business model, by enabling them to to control the computer, or by enabling them to entice the user to pay more by offering functionality upgrades.
Option 3 is less attractive. It might be used in genuine cases where the hardware manufacturer has to prevent the software from being modified, and in those cases it will probably be used in a minimalist way – such as by putting the signal strength code of a network card in ROM, but leaving the majority of the driver in software so that it can be upgraded.
So, by cutting out option 2, GPLv3 should increase the number of manufacturers who will choose option 1 in the future. Thus increasing freedom, without harming any business models that don’t try to restrict the freedoms of free software.