Day six, Software freedoms
Aug. 6th, 2010 01:05 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Today's rant is on proprietary software, closed-source software, anti-tinkering mindsets, intellectual property law, and other things most of you don't care about but I think are going to be the second or third most important part of the legal and cultural landscape in the next 20 years. This one is a very long post.
I am a big proponent of Free (as in "Free Speech", as in "you have guaranteed freedoms that allow you to do things that someone else might otherwise not want you to") Software, and somewhat in favor of free (as in "free beer", as in "we give it away without charging money for it") software as well. The distinction between these two things is lost on most people, but it is very important. Giving software to people without charging for it is a good thing, since it allows them to do more with their computers, perhaps being happier or more productive individually, or even improving their lives when it comes to giving things like edutainment stuff to children in third world countries. But more important than that is giving people the freedom to use and improve software as they see fit.
There are a number of freedoms involved with Free Software, in the same way that there are a number of freedoms (to bear arms, against false imprisonment, to speak and assemble, etc) involved with what we normally refer to as "freedom". The first (freedom 0, by convention) is the freedom to run the software. This may seem silly, but it's not. Most commercial software companies want the right to prevent you from running their software without permission[1]. They want to be able to revoke that permission at any time, and might even want to require you to seek re-permission every time you use the software. Some companies have even taken such egregious steps as licenses that terminate if you publish a bad review of the software, and suing people for violating such terms.
The second freedom is to study how the software works, and modify it to work beter for you. This one doesn't just apply to software, but has roots in the history of patent and trade secret laws. If your software doesn't work right, I should be able to fix it, in the same way that I can fix my car when it breaks down, or even improve my car when it doesn't perform the way that I want. If I want to build my own car, I can take apart the one that I bought from you to see how all the bits and pieces go together. Such studying currently can run afoul of various copyright statutes in the USA, although modification (without distribution) has been protected by the courts so far.
The third freedom is to give copies to your neighbors and friends. This is the one that is the most contrary to conventional copyright systems. In some cases, it makes it more difficult for a company to continue making money, but that can be argued[2]. This freedom means more people have access to the tools that make their jobs more efficient, lives easier, and efforts more productive. It also means that more eyes and minds will be applied to exercising the second freedom.
The fourth and final freedom is to give not just copies, but MODIFIED copies to your neighbors and friends. This is an obvious extension of the previous two freedoms, but is important on its own as this is how software can improve at a far more rapid pace than it might otherwise. The average user, or reviewers who represent them, can honestly say that Linux is a bit harder to use on the desktop than Windows... But it's not as much harder to use as it was 10 years ago. In the time that Windows has advanced from XP to version 7, and gotten only slightly easier to use at the expense of massive increases in system requirements, Linux has improved from levels some might compare disfavorably to Windows 95 to far more usable and useful than Windows XP in most cases, and better than Windows 7 for many specific tasks. This is because while Microsoft is paying thousands of software developers to improve Windows, the community surrounding Linux is not-paying tens of thousands of developers to improve the open-source alternatives. And on top of that, tens of thousands MORE people are being well paid by a hundred different companies to develop open-source software as well, and their efforts are not independent or competitive but build off of each other. As an example, when a new version of mysql (the most popular open source database system) is released, every program that relies on it can get a little better, not just the programs who pay a specific company for rights to use their database system, and whose users can afford to pay their share of that cost in turn. At a lower level, when some Freedom-minded computer scientist at a college in the middle of nowhere comes up with a faster way to sort a list of numbers[3], and instead of patenting it he gives it away for Free, almost every piece of software in the whole world can get a little faster (or a lot faster, as the case may be).
Don't misinterpret this as being anti-capitalist. Plenty of companies make a lot of money selling open-source software. It's just a matter of what you are actually charging for. The big money in open source sales is mostly in guaranteeing to continue providing updates, or support, or customized development[4]. I deal with those companies' products on a daily basis, and they are nothing to laugh at.
Now, on top of all of that, whole pieces of software are not the only thing that can be Free or un-Free, although not necessarily by the same four definitions as above. When one company builds two pieces of software that work together, and doesn't tell anyone else how they work together, some of these freedoms are what ensure that a third party can build a third piece of software that interacts with one or both of them.
The example of this last problem, which prompted me to write this post, is MAPI/RPC, a complicated pair of acronyms which, among other things, describes the system that Outlook (the email/contacts/calendar program that you probably use on your desktop at work) uses to talk to Exchange (the mail/user/calendar server program that runs somewhere else in your company). How this system functions is mostly a black box[6], which Microsoft won't tell us[7] the details of. We are reduced to reverse engineering as much as we can to try to make other mail and calendar applications talk to Exchange (or, less commonly, to get Outlook to talk to other calendar servers). The wonderful folks over at the OpenChange project are hard at work solving this problem, and I have spent the better part of two days trying to convince the Exchange server at my new job to talk to my mail client.
Another example that I have had to spend time and effort working around involves the Windows DNS and DHCP services, circa 2004. When you connect your computer to a network, some computer or router farther up the line assigns it a numerical address. There is another service, possibly on the same device, that converts names (like "www.google.com") into those addresses (like "123.45.67.89"). When a Windows computer talks to a Windows-based server that hosts both of those services, requesting a new address automagically creates an entry in the name->address database so that the name of your computer can be used by other computers on the network to find it's numerical address. How that transaction takes place is (was?) completely undocumented, and I was reduced to using special "snooping" software to inspect the raw data going over the network to figure out how it was accomplished. It turns out that your Windows computer, when it requests a new address, includes a non-standard bit of data in the request that basically says "oh, btw, my name is foo", and the server catches that data to be passed off to the other service. Once I knew that, which SHOULD have taken no more than 5 minutes to find out via protocol documentation or a search engine or, developers willing, reading the source code to either of the relevant pieces of software, I was able to quickly adjust the behavior of my Linux desktop to match it, "tricking" the Windows server into giving me all of the benefits that a Windows desktop would get.
Yet another is the FLT file format, circa 1995. This was a file format, standardized by Microsoft and a few other companies, used by graphics programs to load graphics filters (things like "blur" and "mosaic" and "desaturate") and graphics file format handlers (so they could open less common formats like TIF and JP2 and MNG). Microsoft sold the details of this standard to the companies that wanted to develop filters, and to the companies that wanted to use those filters, so that anyone willing to pay a few thousand dollars to Microsoft could enjoy the benefits of all of the others' work (Paint Shop Pro, MS Paint, and Corel Draw come to mind as examples of software that used this technology). Anyone who wanted to implement a new graphics file format without paying that money to MS was SOL, since you couldn't get the specs on how to make your format work with all those other pieces of software. I, a teenager at the time, obviously didn't have that kind of money, and was thus locked out of that development ecosystem.
Another is the recent iPhone charger debacle. Apple created a secret proprietary set of rules for how to build a non-standard USB connector that would let the iPhone (or iPod) detect if it was an official charger, and if so how much power it was capable of providing. Getting access to those rules required making a deal with the devil, so some clever hackers decided to just take apart the devices that had already implemented them. Now we[7] know how to build a charger that can charge newer Apple devices, without having paid who-knows-how-much to Apple for the privilege of helping their customers use their hardware.
The last thing I want to cover is a few recent legal proceedings in our[7] favor. The DMCA is a law that took a lot of rights away from consumers with regards to how they can use their hardware and copies of software. However, the lawmakers realized this could be problematic, so they codified a process by which there is a review every few years to establish explicit exceptions to the law. This year's review added exceptions for noncommercial video mashups as well as jailbreaking and unlocking cell phones. In other news, the 5th Circuit recently ruled that it is not a violation of the DMCA if your against-the-letter-of-the-DMCA acts are not ALSO violations of general copyright law. That is to say, it is codified that breaking encryption to make a backup copy is illegal, even though making a backup copy is not itself illegal, but this ruling makes that encryption breaking legal, while breaking encryption to make bootleg copies is still doubly illegal. This is the biggest pro-consumer DMCA ruling since the law was created, and I am unsure why it isn't getting more publicity.
I hope this insight into my software/hardware Freedom fanaticism has been enlightening. I hope, more vainly, that I may have made a convert or two out there somewhere, or at least convinced some of you to put some more thought into your software use or purchases.
[1] fortunately they don't have this right, in most jurisdictions in the USA, yet. If you have a copy of their software, you can run it.
[2] consider Microsoft, who owe their [finally-eroding] OS monopoly to decades of pirated copies of MS-DOS and Windows 3. Or to Baen Books, whose sales are anything but hurt by giving away freely copyable CDs full of half of their library.
[3] this problem is not as trivial as it sounds.
[4] You can have this program for free. You can pay me, an experienced developer[5], to make changes to the program that you don't know how to make yourself.
[5] or any other qualified developer, actually, but since I wrote this software in the first place, I am PROBABLY more qualified to make effective changes for you.
[6] the prototypical "Black Box" is a physical box with some switches and some lights on the outside, and some wires on the inside. Without opening the box, can you figure out how the wires are connected only by flipping the switches and observing the lights?
[7] "We" are the free software community, or the users of a specific piece of free or non-free software.
I am a big proponent of Free (as in "Free Speech", as in "you have guaranteed freedoms that allow you to do things that someone else might otherwise not want you to") Software, and somewhat in favor of free (as in "free beer", as in "we give it away without charging money for it") software as well. The distinction between these two things is lost on most people, but it is very important. Giving software to people without charging for it is a good thing, since it allows them to do more with their computers, perhaps being happier or more productive individually, or even improving their lives when it comes to giving things like edutainment stuff to children in third world countries. But more important than that is giving people the freedom to use and improve software as they see fit.
There are a number of freedoms involved with Free Software, in the same way that there are a number of freedoms (to bear arms, against false imprisonment, to speak and assemble, etc) involved with what we normally refer to as "freedom". The first (freedom 0, by convention) is the freedom to run the software. This may seem silly, but it's not. Most commercial software companies want the right to prevent you from running their software without permission[1]. They want to be able to revoke that permission at any time, and might even want to require you to seek re-permission every time you use the software. Some companies have even taken such egregious steps as licenses that terminate if you publish a bad review of the software, and suing people for violating such terms.
The second freedom is to study how the software works, and modify it to work beter for you. This one doesn't just apply to software, but has roots in the history of patent and trade secret laws. If your software doesn't work right, I should be able to fix it, in the same way that I can fix my car when it breaks down, or even improve my car when it doesn't perform the way that I want. If I want to build my own car, I can take apart the one that I bought from you to see how all the bits and pieces go together. Such studying currently can run afoul of various copyright statutes in the USA, although modification (without distribution) has been protected by the courts so far.
The third freedom is to give copies to your neighbors and friends. This is the one that is the most contrary to conventional copyright systems. In some cases, it makes it more difficult for a company to continue making money, but that can be argued[2]. This freedom means more people have access to the tools that make their jobs more efficient, lives easier, and efforts more productive. It also means that more eyes and minds will be applied to exercising the second freedom.
The fourth and final freedom is to give not just copies, but MODIFIED copies to your neighbors and friends. This is an obvious extension of the previous two freedoms, but is important on its own as this is how software can improve at a far more rapid pace than it might otherwise. The average user, or reviewers who represent them, can honestly say that Linux is a bit harder to use on the desktop than Windows... But it's not as much harder to use as it was 10 years ago. In the time that Windows has advanced from XP to version 7, and gotten only slightly easier to use at the expense of massive increases in system requirements, Linux has improved from levels some might compare disfavorably to Windows 95 to far more usable and useful than Windows XP in most cases, and better than Windows 7 for many specific tasks. This is because while Microsoft is paying thousands of software developers to improve Windows, the community surrounding Linux is not-paying tens of thousands of developers to improve the open-source alternatives. And on top of that, tens of thousands MORE people are being well paid by a hundred different companies to develop open-source software as well, and their efforts are not independent or competitive but build off of each other. As an example, when a new version of mysql (the most popular open source database system) is released, every program that relies on it can get a little better, not just the programs who pay a specific company for rights to use their database system, and whose users can afford to pay their share of that cost in turn. At a lower level, when some Freedom-minded computer scientist at a college in the middle of nowhere comes up with a faster way to sort a list of numbers[3], and instead of patenting it he gives it away for Free, almost every piece of software in the whole world can get a little faster (or a lot faster, as the case may be).
Don't misinterpret this as being anti-capitalist. Plenty of companies make a lot of money selling open-source software. It's just a matter of what you are actually charging for. The big money in open source sales is mostly in guaranteeing to continue providing updates, or support, or customized development[4]. I deal with those companies' products on a daily basis, and they are nothing to laugh at.
Now, on top of all of that, whole pieces of software are not the only thing that can be Free or un-Free, although not necessarily by the same four definitions as above. When one company builds two pieces of software that work together, and doesn't tell anyone else how they work together, some of these freedoms are what ensure that a third party can build a third piece of software that interacts with one or both of them.
The example of this last problem, which prompted me to write this post, is MAPI/RPC, a complicated pair of acronyms which, among other things, describes the system that Outlook (the email/contacts/calendar program that you probably use on your desktop at work) uses to talk to Exchange (the mail/user/calendar server program that runs somewhere else in your company). How this system functions is mostly a black box[6], which Microsoft won't tell us[7] the details of. We are reduced to reverse engineering as much as we can to try to make other mail and calendar applications talk to Exchange (or, less commonly, to get Outlook to talk to other calendar servers). The wonderful folks over at the OpenChange project are hard at work solving this problem, and I have spent the better part of two days trying to convince the Exchange server at my new job to talk to my mail client.
Another example that I have had to spend time and effort working around involves the Windows DNS and DHCP services, circa 2004. When you connect your computer to a network, some computer or router farther up the line assigns it a numerical address. There is another service, possibly on the same device, that converts names (like "www.google.com") into those addresses (like "123.45.67.89"). When a Windows computer talks to a Windows-based server that hosts both of those services, requesting a new address automagically creates an entry in the name->address database so that the name of your computer can be used by other computers on the network to find it's numerical address. How that transaction takes place is (was?) completely undocumented, and I was reduced to using special "snooping" software to inspect the raw data going over the network to figure out how it was accomplished. It turns out that your Windows computer, when it requests a new address, includes a non-standard bit of data in the request that basically says "oh, btw, my name is foo", and the server catches that data to be passed off to the other service. Once I knew that, which SHOULD have taken no more than 5 minutes to find out via protocol documentation or a search engine or, developers willing, reading the source code to either of the relevant pieces of software, I was able to quickly adjust the behavior of my Linux desktop to match it, "tricking" the Windows server into giving me all of the benefits that a Windows desktop would get.
Yet another is the FLT file format, circa 1995. This was a file format, standardized by Microsoft and a few other companies, used by graphics programs to load graphics filters (things like "blur" and "mosaic" and "desaturate") and graphics file format handlers (so they could open less common formats like TIF and JP2 and MNG). Microsoft sold the details of this standard to the companies that wanted to develop filters, and to the companies that wanted to use those filters, so that anyone willing to pay a few thousand dollars to Microsoft could enjoy the benefits of all of the others' work (Paint Shop Pro, MS Paint, and Corel Draw come to mind as examples of software that used this technology). Anyone who wanted to implement a new graphics file format without paying that money to MS was SOL, since you couldn't get the specs on how to make your format work with all those other pieces of software. I, a teenager at the time, obviously didn't have that kind of money, and was thus locked out of that development ecosystem.
Another is the recent iPhone charger debacle. Apple created a secret proprietary set of rules for how to build a non-standard USB connector that would let the iPhone (or iPod) detect if it was an official charger, and if so how much power it was capable of providing. Getting access to those rules required making a deal with the devil, so some clever hackers decided to just take apart the devices that had already implemented them. Now we[7] know how to build a charger that can charge newer Apple devices, without having paid who-knows-how-much to Apple for the privilege of helping their customers use their hardware.
The last thing I want to cover is a few recent legal proceedings in our[7] favor. The DMCA is a law that took a lot of rights away from consumers with regards to how they can use their hardware and copies of software. However, the lawmakers realized this could be problematic, so they codified a process by which there is a review every few years to establish explicit exceptions to the law. This year's review added exceptions for noncommercial video mashups as well as jailbreaking and unlocking cell phones. In other news, the 5th Circuit recently ruled that it is not a violation of the DMCA if your against-the-letter-of-the-DMCA acts are not ALSO violations of general copyright law. That is to say, it is codified that breaking encryption to make a backup copy is illegal, even though making a backup copy is not itself illegal, but this ruling makes that encryption breaking legal, while breaking encryption to make bootleg copies is still doubly illegal. This is the biggest pro-consumer DMCA ruling since the law was created, and I am unsure why it isn't getting more publicity.
I hope this insight into my software/hardware Freedom fanaticism has been enlightening. I hope, more vainly, that I may have made a convert or two out there somewhere, or at least convinced some of you to put some more thought into your software use or purchases.
[1] fortunately they don't have this right, in most jurisdictions in the USA, yet. If you have a copy of their software, you can run it.
[2] consider Microsoft, who owe their [finally-eroding] OS monopoly to decades of pirated copies of MS-DOS and Windows 3. Or to Baen Books, whose sales are anything but hurt by giving away freely copyable CDs full of half of their library.
[3] this problem is not as trivial as it sounds.
[4] You can have this program for free. You can pay me, an experienced developer[5], to make changes to the program that you don't know how to make yourself.
[5] or any other qualified developer, actually, but since I wrote this software in the first place, I am PROBABLY more qualified to make effective changes for you.
[6] the prototypical "Black Box" is a physical box with some switches and some lights on the outside, and some wires on the inside. Without opening the box, can you figure out how the wires are connected only by flipping the switches and observing the lights?
[7] "We" are the free software community, or the users of a specific piece of free or non-free software.
no subject
Date: 2010-08-06 05:25 am (UTC)I hope, more vainly, that I may have made a convert or two out there somewhere, or at least convinced some of you to put some more thought into your software use or purchases.
You are one of the many reasons I intend to get better at this whole computer thing sometime, yes. I blame being lazy for a lot of why I haven't investigated Linux better yet, et al.
What do you consider to be the first/second most important bits of the legal and cultural landscape?
~Sor
no subject
Date: 2010-08-06 05:37 am (UTC)I don't consider any specific two things to be more important, but consider a small number of issues to be candidates for what turns out to be the biggest three things when we have the perspective to look back on this decade. Various aspects of foreign wars and oil/energy policy, political practices (see the recent state-by-state initiative to remove the electoral college and elect the president via popular vote), and novel solutions to the current economic problems (what awesome things will people do with whole city blocks in Detroit, bought for just six figures?) all appear on that list.
Near and Dear...
Date: 2010-08-25 05:34 pm (UTC)That being said... I agree with you on the importance of software freedoms and the importance of Freedom to understand and affect the things you use. There is a fascinating analogous relationship between the difficulty of understanding/using software now and the simple capacity to read hundreds and thousands of years ago. Literacy was touted by revolutionaries as the means to achieve liberty and freedom for the poor and under-privileged. That literacy has begun to morph into a different format, one which I think is unfortunately much more complex than it ought to be.