Last year, Dell began offering Ubuntu on non-corporate desktops and laptops, opening the door for other large computer companies to follow suit. With this offering came a lot of discussion over what Dell should include with each computer sold. In a recent iTWire article concerning Dell's inclusion of its re-worked Ubuntu 7.10 and LinDVD (a commercial Linux DVD player), comments ran the gamut from FOSS purity to legal questions to even questioning Dell's motives. Clearly the FOSS community is pulled in all directions trying to satisfy users. Is there any happy medium? Can the community balance the requests of purists and pragmatists and still release usable products?
Here are the four points, if you will, on which FOSS developers are pulled in different directions:
- Free as in freedom.
- Free as in beer.
- Legal and ethical.
- Usable and pragmatic.
The differences are more philosophical than nuts-and-bolts.
Free as in freedom
Richard M. Stallman back in the 1980s proclaimed that all software should be available to the common man, where anyone should be allowed to freely view the source code, learn from it, change it, and improve it. This was an answer to what he saw as commercialism overtaking what was once open academia. He laid out what he saw as the Four Freedoms that software should provide:
- The freedom to run the program as you wish.
- The freedom to study the program's source code and change it so the program does what you wish.
- The freedom to distribute exact copies to others, when you wish.
- The freedom to distribute copies of your modified versions to others, when you wish.
Since then, he "fathered" the GNU Public License (GPL), currently in its third version. In simplistic terms, source code released under the GPL is available to anyone at a nominal fee or a freely accessible location, and any derivatives must also be licensed under the GPL subject to the same terms.
These terms have caused companies interested in GPL code to balk at using it, claiming any derivatives would open their secrets to the world. However, there are plenty of examples of successful companies using open source code. Red Hat, for instance, says the following about using pure open source in their products:
All software is written with source code. With open source software, the code is protected by a special license that ensures everyone has access to that code. That means no one company can fully own it. Freedom means choice. Choice means power. That's why we believe open source is inevitable. It returns control to the customer. You can see the code, change it, learn from it. Bugs are more quickly found and fixed. And when customers don't like how one vendor is serving them, they can choose another without overhauling their infrastructure. No more technology lock-in. No more monopolies.
What does this mean for developers? What freedom exists in a license that demands that their work be freely available to anyone else? This was answered in a blog entry by numerodix initiated in part by the arguments between the GPL and the BSD camps:
Both license models make software free, but only GPL software is sustainably free. The BSD gives greater freedom, the GPL gives more freedom. Choose which one you value more.
I contend the cause of software freedom as it pertains to licensing is best answered by using the best tool for the job, and that is up to the software author and developer.
Free as in beer
Free as in beer software does not always provide developers a living. So how do they make money? By only selling support? Many programmers do not have the skills necessary to provide good support to end users. Their jargon and mannerisms are too different, and they are accustomed to mathematical logic. Throw in high emotion by end users and most geeks are lost. Others may not have the business sense to grow a successful business by themselves around this model. A few years ago, one anti-FOSS advocate, Daniel Wallace, even went so far as to sue the Free Software Foundation and others for endangering his livelihood. The case ended up being thrown out, but it brought about questions on how sustainable "free as in beer" can really be.
FOSS developers can make a living while still giving their code away. They may be able to work for a large company that pays developers to work on FOSS full time. This may not be practical, though, for those who want to work on their own projects. Many of these developers end up coding in their spare time, or are fortunate enough to work for a company that encourages them to work on their own projects during business hours. Other developers are indeed successful in selling support contracts and can even build up excellent businesses doing so. Some have even suggested using software bounties to include wanted features.
Since "necessity is the mother of invention," the FOSS community will continue to find ways to sustain its projects, developers, and users, and continue to be innovative and competitive. There are many choices, some of which require a change in priorities or process in order to keep from compromising one's ideals.
Legal and ethical
How does a developer become creative and innovative without stepping on toes? How can one learn from other programmers without eventually violating a law? Is it possible to be innovative and still be bound by legalities and ethical restraints? In the world's increasingly litigious society, it becomes more and more mandatory to keep one's p's and q's in order.
Many comments surrounding Dell's Ubuntu 7.10 release focused on the issue of libdvdcss, the "software library for accessing and unscrambling DVDs encrypted with the Content Scramble System (CSS)" offered in some distributions' repositories. Since its legality is still argued, LinDVD appeared to be the best answer for Dell to give their customers a better experience, yet it is seemingly in direct conflict with RMS and his camp's beliefs in utter software freedom. Distro managers must weigh their own risk versus their users' benefit when including proprietary codecs and drivers.
A recurring theme in kernel discussions is the idea of binary blobs and binary drivers being included with the Linux kernel, which is revolting to almost everyone involved. Distributing these drivers and blobs with Linux is thought to be illegal at worst and unethical at best. However, step above the kernel level and give users a chance to download their own binary drivers, and further divisions show up. Although free as in beer, these closed drivers are not free as in freedom and often raise the ethical rankles of developers since they cannot be maintained by the community at large. With these drivers, end users are at the mercy of the company that issues them to fix problems.
Consider the legal brouhaha when one Linux developer tried to change the BSD license on the madwifi driver to convert it to GPL. Once the legal issues were resolved, questions of ethics arose -- especially how ethical was it to suggest the BSD license allowed anyone to use BSD code and not return improvements on it. The letter of the BSD license could be followed, but the spirit of openness was violated and arguments ensued.
In addition to what is legal and ethical to include and distribute with GNU/Linux, developers must also deal with sabre-rattling by proprietary companies thinking they have their intellectual property (patents and/or copyrights) in FOSS projects. There are numerous examples: SCO and their dying litigation, OLPC being dragged into a lawsuit in Nigeria over keyboard design, and Microsoft generating FUD with its statement that FOSS violates 235 Microsoft patents. Though most of this is hot air, it still affects the way projects are run and the way developers must certify their work. Instead of focusing on simply being creative and collaborative, they must also be mindful of the legalities. Even a hint of a violation can bring harsh litigation.
Thankfully, developers are not without help -- witness the past year's GPL legal wranglings and the Software Freedom Law Center. Or take McAfee's statement that some of its software may contain GPL code, yet the company may not be abiding by the license agreement. Although McAfee now states this is "normal filing language," that fact may never have come to light without the GPL showing its legal strength.
Until all software is released under a set of compatible free licenses, developers will be hounded to ensure software is "legal and ethical," even if they are not prevented from making progress, and they do have help.
Usable and pragmatic
I consider myself more pragmatic than idealistic, and I'm always peeved when people are more concerned with form to the detriment of function. Make sure it works first, and then pretty it up!
In this respect, I see why distributions like Ubuntu are successful. They are attractive, but they have worked hard to continuously improve their functionality and usability. With a large influx of new users cutting their teeth on Ubuntu, GNU/Linux is becoming synonymous in some quarters with Ubuntu Linux!
The meat of the matter for software is this: human beings must be able to use it. Albert Einstein said, "Concern for man and his fate must always form the chief interest of all technical endeavors. Never forget this in the midst of your diagrams and equations."
This point may conflict with some of the others. Wholly following freedom means users may lose out on experiencing something on the Web or elsewhere. If users must make sure they use no closed source codecs or tools, they sometimes have to ignore what is practical in favor of what is idealistic. On the other hand, wholly following what is "usable and pragmatic" sometimes means ignoring your freedoms over whatever fits the bill. And ignoring "free as in beer" may undercut the community you want to use your software, but not paying a straight salary for programming may cause talented workers to bypass FOSS.
"Normal" users want their computers to just work, and this is pounded into the Linux community over and over again. Therefore, some suggest, developers should ease up on their idealistic ways and allow proprietary ideas, patents, licenses, and whatever compromise is needed in order to get warm seats using FOSS. This attitude would be enough to make RMS have a seizure and make FOSS veterans foam at the mouth!
Still, formats like Flash, MP3, and other codecs are in ubiquitous use on the Internet. "Normal" users want to surf to a Web site and watch, listen, or read whatever they want. So what if they lose some freedoms? So what if licensing a codec comes with a fee, as long as they don't pay it? So what if it's not legal or ethical to distribute these codecs?
There is little wonder that distributions such as Linux Mint and PCLinuxOS, which bundle proprietary software, are popular. However, in their pursuit of usability these distros come fairly close to with some of the points mentioned before. Ubuntu tries to walk that thin line in making it easy for users to install proprietary codecs and drivers, yet not actually roll them out with their distributions. Fedora makes sure everyone knows it is interested in freedom first but somewhat begrudgingly now gives its users an easy way to install add-on drivers and codecs. Other distributions strike their own balance in their own ways.
GNU/Linux is becoming more usable in its own right, but many users demand developers add usability and ignore other important tenets of FOSS -- yet the same developers have to appease FOSS veterans too.
So what is happy medium?
Can we reconcile these four points? Similar to the saying, "Cheap, fast, good -- pick any two," FOSS is in a constant struggle to balance these issues.
When I was in the Army, one of the exercises we used was called the Ranger Push up. Four soldiers would make a square, each soldier's feet on the upper-back of another soldier. All four would have to push up at the same time or they all would collapse. If one person failed to push up, the other three felt the pressure.
In much the same way, FOSS attempts to balance these four points. It makes for a mad collection of Catch-22s, perfect timing, critical mass, and compromise. FOSS is already a force to be reckoned with, and is perfectly usable in most situations. It is past making ripples and well on its way to making tsunamis in the software world. As it matures, can the FOSS community find the right balance?