Monthly Archives: March 2012

Why Free Software Is Important

I’ve been an advocate for free software for several years now, and as time goes on, I become more and more insistent on digital freedom. Many have noticed that my insistence is often in the face of practical problems, but I’ve always tried to explain why the practical problems are less important than the deeper philosophical ones. I hope to directly address that issue here today by showing why digital freedom is one of the most important things to consider.

Past Writings

I’ll note briefly that I’ve done something similar in the past. I wrote about practical problems being worth consideration, but I’ve also written about how free software isn’t a religion and how free knowledge can extend to physical things. My article on making money ethically also touches briefly on the importance of free software.

For Users

Users are most frequently the ones to say they have a practical problem with free software. They’ll claim that without non-free software, they can’t watch movies, play games, or create art. Most of the time, those complaints are based on incompatibilities, like when a Flash game is not compatible with Gnash, or based on lack of features, like when the GIMP is missing some advanced graphical feature that is included in Adobe Photoshop. There are practical reasons that those complaints can be mitigated in the free software world, but that’s not the main reason that users should be interested in digital freedom.

Users also often say that the four freedoms aren’t important to them–they claim that the freedom to modify is useless, as are the two distribution freedoms, and that in practice, all software is free to be run in any way. This, too, is not accurate: While a user may not be trained in programming, they may at some time wish to learn about it, which would require the freedom to study. And even if the user has no interest, ever, in programming, they also have the freedom to bring the software to another programmer who can help them fix a problem or add a feature.

However, there’s even more to worry about. Not specific cases, not practical advice, but philosophical reasons. As a software user, when you sign a license agreement, you sign away some rights. When those rights are speech, digital or otherwise, any person should be worried. In the past, governments have made laws to restrict speech. This manifested in restrictions on printing presses, restrictions on the sale of texts, and restrictions on what could be said, even in the most intimate of settings. Today, free speech is under less attack from the government, but more attack from corporations. TV and radio stations are more frequently resistant to controversial speech, and several corporations that create forms of communication will censor that communication based on their own standards of decency. Perhaps most notably, software companies restrict digital speech in the form of their software–that software, or any part thereof, or any modified form of either, cannot be transmitted to anyone else. How can we allow that?

For Developers

I sure hope you didn’t skip the above section, because it was important. Even if you’re only a developer, and not a user, the above section is largely the basis for this one.

To start, however, let’s look at the direct benefits: The developer who licenses their software freely will probably have a more involved user base. This is not a fact, but a likely result of the free software model. This result has been codified in the open source development model, but that model has also somewhat confused the meaning of freedom. Rather than mandating that the source code be open to the world, the free software developer allows their users to share it with anyone they like. That could include “everyone,” but it could also be restricted to a few people, if the right license is used on redistribution. The direct benefit is, any user of the software is also potentially a developer, a mirror, or at the very least, a tester.

Now, since you read the section for users, I can talk about indirect benefits. I have to assume that most programmers aren’t horrible people, so if you are a horrible person, then I can’t really help you. But if you happen to think others deserve to have rights, then the section on users applies to developers as well. As a user is allowed freedom, the developer is benefited by not causing a detrimental effect to others, and so their ethical code is preserved.

Go freely!

Making Money Ethically

Earlier today, the GNU/Linux Action Show had Richard Stallman on to celebrate their 200th episode. For the most part, it seemed like RMS was talking about some complicated issues, and they had a lot of trouble understanding what he meant by a lot of his statements.

However, one thing RMS mentioned that sort of struck my nerve was something that had struck it before. One of the parts of his philosophy is that it is unethical to sell non-free software, and that much I can support. But one of the ways he supports it is to say that programmers don’t need to be paid for their work.

Ethics

(note: this section was added after the initial publication of the post, at 18:11 on the same day)

I feel I should define, briefly, what “ethical” means in this context. I mean specifically, when I say that something is “ethical”, that it does not violate the freedom of others. Most of the people this post can help will already be very concerned with their own freedom, but they may in one way or another be affecting the freedom of others in a detrimental way.

It may be called into question whether that is a reasonable definition of the word “ethical” in all contexts, but I am not reaching so broadly today, I am only discussing a very small subject.

My Beef

The funny thing is, I’ve gone through college and several jobs in order to train myself to make software. I happen to be similarly committed to free software, and I agree with RMS in that the jobs that produce non-free software should generally be shunned. However, that does not mean that programmers cannot have programming jobs!

I’ve long supported the Free Software movement, and a large part of my support has been explaining the ways that you can make money in an ethical way. So, here I am to explain it again, in a blog post.

Another motive for this blog post is that the hosts of the show specifically asked for a suggestion or two, so I’m here to give them some!

What I Am Not Saying

I want to note that I do not suggest these solutions for programmers working under others. If someone doesn’t have some way to support themselves, as a matter of staying alive, I would suggest that they maintain their current situation until they find a more ethical solution. Continue to lobby the people above you to release free software, but avoid jeopardizing your job.

This advice is leveled at people who make decisions about licensing, which might include some individual programmers who self-publish. Most programmers working under other people will be unable to follow this advice.

Ways to Do It

So, on to advice.

The first business method, touched on somewhat in the show, uses the new concept of crowd-funding to achieve funding. This would basically be an exercise of balancing the community’s interest in the software and the real costs associated with its production. So, if the developers need a few months of rent and food money, then they come up with a reasonable number to represent that amount of effort on their part, and ask for the money. It should be noted that there is no limit on how many projects you can have on a crowdfunding site, nor is there any requirement (unless self-imposed) with respect to delivery date, so you could theoretically set up several proposed projects at once and work on them in any order, depending on whether or not they got funded. So long as the end result was a freely-licensed software package, this would be completely in line with the four freedoms.

Another method that was mentioned in the show was to produce individual custom software packages, licensed under a free license (though probably not copyleft), which would also be extremely ethical. Most companies won’t care about the license, since the software won’t be distributed anyway. This method requires much more active involvement in the local business community, and any company that plays this game must be tied into many connections.

There are also several companies that primarily provide paid support for software that they produce, then release under a free license. The business model here would be somewhat less definite, since you could not give a specific price for the package, and would be counting on the fact that companies would need support. Similarly to the previous model, you would need to fight hard with companies to get them to buy your support, as opposed to passive involvement. In other words, you might not get much business just linking to your support hotline on your main page, you may need to market the software to companies and subsequently sell them a support package on the side.

A final business model, which might not be technically what most programmers want, is the non-profit one. The GNU project has survived in this capacity for over two decades (actually, nearly three), so it’s certainly not an unrealistic model for a software producer. Set up a cool suite of software, ask for donations, and sell t-shirts and mugs with your logo(s) on them! RMS went so far as to sell books and documentation, though a smaller shop might not be able to do that right away.

In Conclusion

Now that I’ve written this, it is a great weight from my shoulders. I can finally just link to it, as opposed to writing long-winded explanations every time.

If you feel I’ve missed a viable option, or have misrepresented something, please use the link below to email me your feedback. I’d love for this to be a comprehenzive resource for someone looking for advice with respect to starting a free software business.

And finally, as always, go freely.

Why We Need the GPL

The GNU General Public License (GPL) has been through three major versions. The first, released in 1989, was mostly concerned with preventing the addition of non-free code to a project in order to circumvent the requirement that modified versions of free software (under a license like the GPL) also be distributed under permissive terms. The second version addressed the problem of dual distributions, requiring that if a person was legally incapable of distributing the source code for GPL’d software under a permissive license, they could not distribute it at all. Finally, the third version addressed the problem of “Tivoization”, by preventing hardware manufacturers from forbidding their users to modify the software on their machines. The third version also added the Affero clause, which (if included) would require anyone offering access to the software over a network to also allow modifications and redistribution freely.

The Problem

These versions have all faced one serious recurring controversy: This license, masquerading as a protector of liberty, appears to restrict the users and developers of the software, too! There are similar licenses, like the LGPL, which allow derivative works without permissive licensing, but the GPL and AGPL both require that derivative works be licensed under the GPL, and often under the same version.

The major gripe is that, while the FSF and the GNU project both preach freedom loudly and clearly, they seem hell-bent, from the text of these licenses, to restrict people from doing what they wish with respect to derivative works. This perception appears to be tearing the free software community apart.

The Explanation

I hope, today, to dispel some of the myths. I don’t dispute the facts, here. There appears to be a severe disconnect between the words and deeds of the FSF. But I think that disconnect is justifiable.

Small side note: in addition to majoring in computer science, I am minoring in government, and I’m using all of my time in the government department studying United States constitutional law. The reasons for that decision are many and varied, but it’s a source of much clarity for me, and on this subject in particular, I have found a very interesting parallel between the actions of the FSF and the words of the Supreme Court.

In a case called Regents of the University of California v. Bakke, a case before the Supreme Court in 1978, there was a lot of discussion about affirmative action in state-run universities. Bakke, the respondent, said that the affirmative action program at UC Davis was detrimental to his ability to receive an education. Justice Powell, in a plurality opinion (later affirmed by an opinion in Grutter), upheld the program on the grounds that racial preferences, while generally abhorrent, were necessary in some cases to remedy past wrongs, and to establish justice once more.

Perhaps I’m overplaying my analogy here, but I think the principles are roughly equivalent. The FSF, whether knowingly or not, has instantiated a legal tool that takes away some of the choice from the developers of derivative works in order to prevent further such deprivals in the future. I’m sure that, in a perfect world, many of the people at the FSF would release their code under a public domain license, or maybe the BSD or MIT licenses, that give almost complete freedom to the users. But they’ve seen a severe societal meltdown with respect to digital freedom. The problem they see cannot be solved by mere goodwill towards man, or the charity of many volunteers. The problem needs a legal solution, as well. To create that solution, they devised the GPL.

Other Implications

I think that the GPL isn’t the only part of the free software movement affected by these principles. I think there are a lot of people who view the free software camp as unmoving, unwilling to accept compromise. I hope that this analogy I’ve set forward will help others to understand that many people have been fighting this war for too long, and suffered too many defeats, to allow themselves to give any quarter. That’s not to say that these people aren’t very understanding and helpful, but they will definitely be antagonistic if asked to give advice contrary to their ideals, and I hope that someone out there can understand that at least a little.

With that said, maybe it’s time for the free software community to start thinking in smaller steps. As I put forward in another blog post, maybe we need to start considering the immense administrative difficulties that face people in their struggle for digital freedom. Maybe encouraging someone to use Firefox, or even Chrome, on a Windows computer, is the best thing we can do for them until they truly understand what may be at stake.

As always, thank you for reading, and go freely.