Freedom is not Free

The words we use to describe what we do can matter a lot in how we in the FOSS community think about what we do. Once upon a time, there was Free Software, as defined by Richard Stallman in the famous Four Freedoms:

The freedom to run the program, for any purpose (freedom 0).

The freedom to study how the program works, and change it so it does your computing as you wish(freedom 1). Access to the source code is a precondition for this.

The freedom to redistribute copies so you can help your neighbor (freedom 2).

The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Now, I happen to be a big supporter of this. I love the idea of Free Software. And I have noticed that some people I greatly respect, such as Jon ‘maddog’ Hall, are always careful to refer to it as Free Software. Nonetheless, there are problems with this terminology. If you have been around FOSS for very long, you have noticed that the word “free” admits of several meanings, one of which has to with the cost. And that was never the point in FOSS. There is nothing in the definition of FOSS or in the GPL that says you are prohibited from charging for your software. And, because of the ambiguity in “free,” we have to be careful to use “Free As In Freedom” to denote what Stallman meant by the Four Freedoms, as distinct from “Free As In Beer” to denote lack of a monetary price.

A later term was developed called Open Source, which put the focus on making the source code freely available. Now, it is clear from the Four Freedoms above that this is essential to Free Software, so I am not sure just how big a difference this makes. But if you want to explain to the average user why any of this matters, you have to acknowledge that the average user really doesn’t care if the source code is available since they can never imagine themselves trying to modify the code. In point of fact, I would expect that it is highly likely that I will go to my grave without ever attempting to modify the code of any software I use. I am not a programmer, and I don’t have any desire to be one. I like programmers, some of my best friends are programmers, and the world is undoubtedly a better place because of programmers, but I don’t think that is my role in FOSS. So I don’t have a strong interest in looking at the source code. And to you in the back with your hand up, I agree that it would be silly to buy a car that had the hood welded shut, but I don’t repair my own cars either. Instead I support the economy by helping a
mechanic to earn a semi-honest living.

The term I have adopted for this purpose is to call what we do “Community-Supported Software,” because I think that puts the emphasis where it more properly belongs, at least for some uses. If we value this software, I think we
all have a responsibility to support it in whatever way we can. Some do that as programmers, but the rest of us have a role to play. And I want to explore some of those options (and maybe motivate some people to get involved). Because I think it is true that freedom is never free. It requires all of us to take part in defending and supporting it.

Bug Hunting

I’ve already mentioned that Free Software should more properly be considered “Community-Supported” software, and I said I would come back to discuss just what that means.

There are lots of ways for someone to support Free Software, but one of the most important is by submitting bugs to the developers. Remember that these fine people are creating wonderful software with minimal budgets, and that means they cannot possibly test their software under all possible conditions. Many of us (myself included) build our own computers out of parts we mix and match, everyone installs their own custom blend of software, etc. Under the circumstances, you have to expect that we will stumble over problems that no one knew about. And the only way they can get fixed and the software improved for everyone is by filing bugs. This is how the developers get informed about the problems, and is step one to fixing them.

The first place to look for filing bugs is with your distro. The major distros tend to have online bugtracking mechanisms of some kind, and they will have specific directions on how to file a bug. They may decide that it should go upstream (i.e. the bug is in a package that they included but don’t directly support), but it is really never wrong to start with the distro. If you want to read more about this, a good place to start is at LinuxCareeer.com. Note how they start off their discussion:

Linux distributions, and Open Source software in general, are, before anything, community efforts. Every distribution lists somewhere on its website ways to contribute to and help the effort. And it’s quite an effort too, which programmers provide for free, working in their spare time. One recurrent theme on each of those “howto contribute” documents is “Submit bugs when found,”although the exact wording may differ.

This site gives more specific instructions for Ubuntu, Mint, Fedora, Debian, and openSUSE. But if you use some other distro, just go to the site of the distro and you will be certain to find how they do it. Or Google for the name of the distro and the phrase “filing bugs” and you will probably get there right away.
Now, aside from the specific mechanics of submitting a bug for your distro, there are some general
things that are important to any good bug report, and you should learn to look for these:

Did anything just change? Did you just add a new video card, for instance? If you change to a different video card, does that affect the problem? Did you just install new software? Did you just update something? Can you roll back the change and try again? Knowing the answers to these questions can be very important in determining where the problem lies.

What were you doing when the problem occurred? Is it reproducible, i.e. if you do the same things again, do you get the exact same problem? Again, a very important piece of information for tracking down the bug.

Do you have any log data to add to the report? Get to know where this data lives, and how to access it. For instance, dmesg is a great source of information. Just including this file in your bug report can be useful, but even better is finding out how to pull out the relevant details first.

Check to see if this bug has already been submitted. If so, you may be able to add on to the report as an additional case of the same bug. Even better, if you learned how to get good information, you can improve the original bug report to the point where the developers can actually work on it. When you look at how bugs are submitted, a large number of them cannot be worked on because there is no useful information. Learn to make yours useful. Also, you may discover that the bug has already been fixed, and all you need to do is update your software. That is pretty good, right?

Here is an example of one problem I had. The software package in question was Miro, which downloads and plays videos from the Web, which for me is mostly video podcasts. And I use it every day, so this problem mattered to me. I had just upgraded my distro to the newest version, and suddenly Miro would not play any of my videos. I checked and I could play them in other software, but I wanted Miro to work for me again. I also checked on another computer with the same distro version, and had the exact same problem. So I filed a bug in two places, one with the distro, the other with Miro itself. I got a reply from a developer on the Miro project within hours, and he said that he had tried that exact distro version and had no problems. So there was probably some combination of software that I tended to use that did something unexpected. He asked me to grab a log file from Miro, and send it to him. I did so, and again he wrote back promptly pointing out a couple of lines in the log file, and saying that it looked like I was missing a critical package. I checked, and it looked like this package was on my system, but I removed it, reinstalled it, and then Miro worked properly again. I think this counts as a very good outcome.

When you create good bug reports, you help yourself and you help others. And that is a big part of what it means to have Community-Supported Software.

Documentation

In my day job,I am a Project Manager, and one of the things I constantly try to get is good documentation. I hope I have even produced a little of it myself. But there is no topic on which I get more resistance than on creating
good documentation. No one ever has time to create it, but somehow they find the resources to pay the price when they don’t have it. If getting good documentation is hard in the corporate world, how about in the Free Software world? It is equally difficult. I can’t tell you how many times I have tried to access the Help system for one of my KDE applications only to get an error that says there is no Help material available. You really feel sometimes like you are being told “We wrote it, now you figure out what to do with it.” And part of the reason is that we don’t always think about it properly (in my opinion).

I would start by distinguishing between two kinds of documentation: technical, and end-user. Technical documentation, as the name implies, is the sort of thing that the developers could provide if they chose to do so. This could get to the very deepest level of code documentation, but even if it lives at a somewhat higher level, it is not end-user documentation. And the question of whether it even exists remains. Developers like developing, but they generally don’t like documenting. And in Free Software many of these people are volunteers.

But the topic of end-user documentation takes us in a different direction, and one where people with the right skills can be very helpful. It can also be a little frustrating. I recall one experience I had where I offered to help create end-user documentation for an application. When I asked to see what they had, the response was “We don’t have anything, that is what we want you to do.” Now I like to think I am a good writer, and I know I have been praised at work for the documentation I have written, but any writer needs something to start with. At work, I can make the technical people sit down with me, answer my questions, and so on. And you really need something like that to do good documentation. Good technical documentation can get you started, but to do good end-user documentation you will need to have some kind of access to the developers. And if the folks on the project you want to help don’t
understand this, you need to explain it to them. They may want someone to come along and just magically make something happen without anyone else on the project being involved, but that is just not feasible. Good documentation is a group effort, really.

In writing for the end-user, you need to be able to think a little differently. End-users are, by-and-large, not technical. There can be exceptions to this rule, but this is a good starting place for writing the most useful documentation. And the best way to do this is by thinking of “stories”. The Agile community tends to do a good job of this in terms of software development, but you need to carry this into documentation as well. You could write a book on this topic, and I don’t have that kind of space here so I will be somewhat more brief. Stories in this context means picturing a typical user of some kind, and imagining how they might try to use the software. Who
is this person? Be specific – give this person a name, an age, a sex, a background. The better you do this – the better able you will be to get into this person’s skin and see things the way they do. Then look at some questions they might have.

Why would I want to use this software?

What do I hope to accomplish here?

Would I use this infrequently, or daily?

Would I use this alone, or with other software?

And that is just a few of the questions you might want to ask at the beginning. By answering them, you set a direction for what you want to do. And if you can begin here, and you can write out answers that end-users can make sense of, you can make an invaluable contribution to Free Software.

One last note is about translating documentation. Free software is international in scope, and often the people who need it most also need it in their own language. If you can translate the documentation, that is also a much-needed contribution. Many projects are looking for help with this aspect of the documentation. Just offer to help.

The “M” Word

And by that I mean Money.

As I mentioned previously, when we talk about Free Software, the emphasis ought to be on freedom, not on price. The fact that so much Free Software is also free of purchase is great. It offers people who cannot afford expensive proprietary software a chance to use comparable software that can improve their lives, their businesses, and their societies. But, at the same time, it does require some money to produce the software. While
there are cases where the financial support comes from interested companies who may assign their staff as developers or provide server space (and companies like Red Hat and IBM provide a lot of support this way), there are also a lot of smaller projects that need help. And some activities that are important are not supported by corporations at all, but instead must rely on individuals to provide this support. I would never suggest you stop feeding your kids to do this, but the reality is that most users of Free Software in the US and Europe (for example) could easily afford to make some contributions. And I want to suggest some ways you can do this.

To begin with, most of the Free Software projects have a Web page. And if you go to the Web page you will probably see something like a PayPal button to make a donation. My rule of thumb is that if I use the software a lot I ought to support it financially. I have always felt this way, going back to the days of “shareware”. Shareware used to be “try before you buy” software produced generally by independent developers who let you use the software free-of-charge, but asked you to register and pay for it if you liked it. While undoubtedly some number of people simply used the software and ignored the obligation to pay for it, it was clear to me (and many others) that, if the developers could not get paid for their trouble, they would stop making useful software. Now that I am firmly in the Free Software camp, I feel the same way: if we don’t make sure our developers are supported, they will go do other things. They also need to eat, they also have families, they need to pay their bills.

I will give a few examples from my own experience just to illustrate how easy it is to do this if you are sensitive to the issue. I realize this may look like I am trying to make myself look good, but I don’t think I am any better than anyone else, I just don’t have anyone else’s examples handy right now.

The first example is a project called Miro, which produces software to download videos from the Internet and play them. I subscribe to a lot of video podcasts, as well as a few YouTube channels, and this is how I do it. And I use this software every day, so it is a good candidate for support. About a year ago they were looking to sign up people in a fund-raising drive called “Adopt a line of code”, for which you would pay $4 per month through PayPal. It looked good to me, so I signed up. After all, I get far more than $4 per month of benefit from this software and have come to rely on it every day.

• I also am a KDE user on all of my computers. A few months back, I saw a post from one of the developers, Sebastian Trueg, that he needed to raise money to support himself so he could continue his work on KDE. Unlike some of the developers, he had no corporate paycheck supporting his KDE work. Well, I use KDE every day, I rely on it, and I clicked the PayPal button for a donation (My memory is that I gave him $10, not a huge amount, but I hope that among all of the KDE users he raised enough money to keep working.)

My particular distro of choice is Kubuntu, and, again, I use it every day. I don’t think Canonical really needs my donations to keep going, but they base their work on Debian, so when I saw a fundraising drive to write and publish the Debian System Administrator’s Handbook, I pledged a small amount (again, I think it was $10 or so. For me, $10 is the amount I can casually donate without worrying about paying my own bills.)

Another form of support you can give is by joining some of the Non-Profit charitable organizations that support Free Software. There are a number of them, but I will note a few. First is the Free Software Foundation. This was set
up by Richard Stallman, and is the one organization on my list that is directly focused on defending our software freedoms. This is the group that promotes the GPL license. Because my own freedom is very important to me, I am proud to say that I am a member. This is a little more expensive than my donations above, at $10 per month, but I’m glad to do it. Another group that you can support through a membership is The Linux Foundation. This group pays the salary of Linus Torvalds (and just announced that they are supporting Greg Kroah-Hartman), so if the Linux Kernel is your thing this would be a good thing to join. Individual memberships are $99 per year. Next I want to mention the Linux Fund. They raise money through what are called “Affinity Cards”, i.e.credit cards with a logo of your favorite group. You many have seen these before to support sports teams or universities, but you can support Free Software. And despite that name “Linux Fund” they also support BSD, which is Free Software by any definition. All you need to do is sign up for a credit card through them and a small part of your purchases goes to support the project you choose.

The last one I would like to mention is the Software Freedom Conservancy. This is a non-profit group headed by Bradley Kuhn that helps a lot of projects. Essentially, they provide the legal structure to enable smaller projects to raise money while the SFC handles the administrative overhead. Bradley was for erly at the Free Software Foundation, and is still the most active person in defending the GPL, so this is a name you may well have heard before. But at SFC he is directly helping all of these projects. Current member projects include Amarok, Git, Samba, and Wine. I’m guessing at least a few of those projects produce software you use, so you can help them out with a donation.

Getting Involved

We have explored some of the ways everyone can support Free Software, such as by filing bugs, writing documentation, and by providing financial support. I want to wrap it up by exploring what may be the best way of all to get
started, and this is to get involved. Join a group. Help out.

The first place you might wish to look at is your local Linux User Group (LUG). This is where you can meet people in your community who also are interested in Free Software. You might think that only Linux gets discussed there, but I’d bet you would be surprised. I know my local LUG has speakers covering a wide range of topics in Free Software. Last month we learned about Sourceforge, for instance, which supports a bunch of different Free Software projects. LUGs also provide community outreach, such as by doing install fests and by cooperating with local schools and organizations. I always suggest to people that this is the first place to go both to get help and to get involved.

The next place you might want to look into is with your Linux distro of choice. Mine is Kubuntu, which is a variant on Ubuntu that uses the KDE desktop. So I have joined my Ubuntu Local Community (i.e. LoCo), which in my
case is Michigan in the US. This group organizes Bug Jams, where people get together to file and work on bugs. And they organize release parties twice a year when new releases come out. I know that Fedora has what they call the
Fedora Ambassadors program, and many other distros have opportunities to get involved. You have only to ask.

Finally, I am going to mention the various Linux and Free Software conferences. I am involved with one called Ohio LinuxFest, where I am the Publicity Director. I just finished writing a page for our web site where I listed 8 major positions we are trying to fill, as well as a bunch of day-of-event positions for volunteers. If you have never been involved with an event like this, you might not realize just how much work is involved in making the magic happen each year. But it is hard work, and every one of them is looking for volunteers to help put it on. And this is something you can do even if you don’t feel like you can file bugs or write documentation, or you don’t have the money to provide financial support. You can always provide help at these events. Chances are there is one not too far from you.

What really matters, though, is that you make a contribution of some kind. As we said when we started this series of posts, Free Software means Communitysupported
Software. When it stops getting community support, it dies. If you value Free Software, then you have a responsibility to support it in one way or another. My role here is to give you ideas on how you can do that.