First and foremost, a quick intro to GPL (General Public License). The General Public License was originally written by Richard Stallman in 1989 for the GNU Project. It clearly defines what is a free software. To be called such, a software needs to provide the user the following :
- freedom to use the software for any purpose
- freedom to change the software to suit one’s needs
- freedom to share the software with friends and neighbors
- freedom to share the changes one makes
In fact, these principles were among things that attracted me towards use of free software years ago. The community built cool software & believed in sharing, on top of that they strived to protect that freedom. Had the freedom not been protected, software could have been easily exploited.
###GPLv3 Tivoization
Let’s cut short and come to GPLv3. I only started checking stuffs about GPLv3 when the debates involving GPL vs BSD started on facebook, friends’ walls, LUGM group etc. I knew the founding lines of GPLv2 but never bothered looking at the new additions in GPLv3 until now. I would only hear the ranting of developers here & there about restrictions in GPLv3. Curious, I wanted to know what were they about, as every article I would come across I’d find people complaining while not giving specific details/clauses that would make them rant.
From the FSF’s GPLv3 quick guide I found some new additions protected users from the following :
Tivoization: Some companies have created various different kinds of devices that run GPLed software, and then rigged the hardware so that they can change the software that’s running, but you cannot. If a device can run arbitrary software, it’s a general-purpose computer, and its owner should control what it does. When a device thwarts you from doing that, we call that tivoization.
Laws prohibiting free software: Legislation like the Digital Millennium Copyright Act and the European Union Copyright Directive make it a crime to write or share software that can break DRM (Digital Restrictions Management). These laws should not interfere with the rights the GPL grants you.
Discriminatory patent deals: Microsoft has recently started telling people that they will not sue free software users for patent infringement—as long as you get the software from a vendor that’s paying Microsoft for the privilege. Ultimately, Microsoft is trying to collect royalties for the use of free software, which interferes with users’ freedom. No company should be able to do this.
Above is an extract from FSF website.
hese made me go back again in time; FSF was founded to protect the hacker community allowing them to share software source code freely (as in freedom). For those freedom to be entertained perpetually, GPL was tossed on the table. It worked great. Thousands of software projects sprouted under the shadow of GPL. Software enthusiasts could tinker with code & share the passion.
Now, after more than 20 years, we have seen much technological advancement. While GPLv2 is still widely used, it did lack some features. GPL allowed to modify & run the code as one wishes. However, there was no mention about hardware limitation. What if the hardware is locked, not allowing you to run modified software? Nowhere in GPLv2 this was addressed. Hardware limitation was tossed as tivoization, following the example of use in a digital video recording product named TiVo.
###Let’s see how TiVo works
TiVo runs an embedded version of Linux and provides source code of the same. Thus it adheres to GPLv2. However, programs that run have a digital signature which is cross-checked with its counterpart burnt into the device chip. Modified code not having the digital signature would not run on the device.
When I came across this I could see how the fun in hacking was being murdered. Hardware hacking isn’t something new. You’ve been doing that since long. Remember rooting your phone or tablet? Well, the moment you’re running modified code on the device & you unlock previously unavailable options, you’ve tinkered enough to call that hardware hacking. The prohibition of running modified code seemed unethical and FSF responded to that in GPLv3.
GPLv3 will allow free software to be used on hardware that is designed such that executable requires a specific key signature in order for it to operate. However, the vendor must provide that signature key or whatever else is necessary so that any modified executables can be appropriately signed, and thus used if desired.
While I haven’t gone through the rest of the document, this particular part on tivoization protects the user freedom on tinkering.