The KDE project has released its Manifesto. Since this is my desktop of choice, I thought I should mention it. It is very good:
The KDE Manifesto
We are a community of technologists, designers, writers and advocates who work to ensure freedom for all people through our software.
Because of this work we have come to value:
Open Governance to ensure engagement in our leadership and decision processes;
Free Software to ensure the result of our work is available to all people;
Inclusivity to ensure that people of all origins are welcome to join us and participate;
Innovation to ensure that new ideas constantly emerge to better serve people;
Common Ownership to ensure that we stay united;
End-User Focus to ensure our work is useful to all people.
That is, in pursuit of our goal, we have found these items essential to define and stay true to ourselves.
The reason things like this matter is that free software is about a lot more than just selling a bunch of software and having an IPO to get rich. It is about our values and empowering people to use software to make their lives better.
A few weeks back there was a small tempest-in-a-teacup when Linux Action Show invited Richard Stallman (RMS) on to their show, and were astonished that he refused to compromise his views. This led Bryan Lunduke to accuse Stallman of wanting to starve the Lunduke family since he would not give his imprimatur to Mr. Lunduke writing proprietary software. My initial thoughts were along the lines of “Lunduke is an idiot”, which are thoughts I have had before. Full disclosure: I find him to be annoying and grating. For that reason, I did not comment at the time. But I just read an interview with Michael Meeks, the LibreOffice developer, that brought up some of the thoughts I had previously, and I decided to write them out.
The essence of the dispute between Bryan Lunduke and RMS was that RMS argued, as he has consistently done, that proprietary software takes away the freedom of the user, and is therefor evil. Lunduke was arguing that he makes his living by writing proprietary software, and therefor deserved some kind of exemption from RMS, and was very upset that he didn’t get it.The immediate reaction I had was “Dude, have you ever listened to RMS?” Lunduke getting RMS to say that was about as likely as getting the Pope to say “You know, that Ten Commandments thing? Totally optional.” Then Lunduke just went nuts and accused RMS of trying to starve the Lunduke children. So it became a reason for me to once again unsubscribe from that podcast, as I have done before. (Though this time it will probably stick.)
But the point of interest is that Lunduke accused RMS of being against freedom, in this case the freedom of Lunduke to write proprietary software. And this is worth taking a closer look, since arguments about freedom often get bogged down in similar dichotomies. And to understand that, I think there are some fundamental truths that need to be pointed out and incorporated into the discussion. The first is that freedom is never absolute if you are living in a society. There are always conflicts and constraints in how you exercise freedom because what you do can impact on others. As Oliver Wendell Holmes said it in a Supreme Court decision, you cannot falsely shout “Fire!” in a crowded theater. Or as another legal scholar put it, your right to swing your hand ends where my nose begins. In fact, a good many court cases are argued to decide among two different freedoms as to where the line will be drawn. This means that to say “I am in favor of freedom” is to make a mostly meaningless statement. It doesn’t become meaningful until you clarify whose freedom, and in what circumstances. And when you do clarify, you should not be surprised if someone says, and probably correctly, “But you are taking away my freedom to…” Yes, we are, and that is the point. Does my freedom to breathe clean air trump your freedom to pollute?
In this case, the conflict was between the freedom to make a living by writing proprietary software, versus the freedom of the software user to use software that gives us the Four Freedoms. Now to be clear, RMS never claimed he was in a position to actually stop Lunduke. He merely refused to countenance it as a legitimate practice. So the real issue boiled down to “He called me names!” But it is worth looking at this carefully because there is a real issue here that is worth exploring. And the issue is whether we should be more concerned with the freedom of the software user, or the freedom of the software producer. RMS is clearly on the side of the user. Lunduke was clearly on the side of the producer. And because of how these are related, you cannot simultaneously maximize both. If users have all of the freedom, there is nothing left for producers, and vice-versa. And that is why I want to turn this discussion to the topic of software licensing. For this is where the decisions are often made on where we draw the line.
In the case of proprietary software, the rights of the user are as minimal as companies can get away with. The road to evil began when someone got the bright idea that you don’t own the software you buy, you only license it, and the producer of the software can decide what you are allowed to do with it. And they can revoke your license to use the software any time they decide it violates their license, and even prevent you from selling it to someone else when you are done. Frankly, I am with RMS on this one. It is evil, and we should fight it. The answer he and others came up with was the GPL. This pushes the balance pretty far in the direction of the rights of the user, as defined by the 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.
I think of these as opposite ends of a spectrum. What is in the middle? The “less restrictive” licenses. Now, some would argue that these licenses are even “more free” than the GPL, but that just repeats the fallacy of thinking of freedom as an absolute without context. I am thinking of it as the balance between producers and users, and in important ways these “less restrictive” licenses move the balance back towards producers. The way this happens is through how the software gets ultimately used. For instance, it is a matter of record that important parts of BSD form the basis of the Apple OsX operating system. Apple no doubt used this software because there were essentially no restrictions on what they could do with it. And what they did was create a tightly-controlled OS that severely restricts what the user can do with it. I think that when you look at how the software offered with these “less restrictive” licenses is used, you will see far too many examples of this being used to restrict the rights of users when incorporated into corporate products. You may be of the opinion that what is wrong in the software arena is that companies just don’t have enough power, but I don’t see that on the planet I live on.
And that brings me back to Michael Meeks and the interview I read. He was talking about a huge increase in energy and activity in the LibreOffice project since it split off from OpenOffice. And the major reason he saw for this was that they went to the GPL! I think that makes sense. If I had worked hard on software code that I wanted people to use freely, I would want to know that it was in a license that guaranteed that freedom through all derivative works. And that is what GPL does. I think that is why so many proprietary software creators hate it so much. They are just fine with something like the BSD license that says they can take code and do whatever they want with it. But with GPL they can’t do that. And one thing I find kind of funny is that they could just not use the code if it is that big of a deal, but they don’t seem to think that is a good idea. Their software is licensed to people on a “You do what we let you, or you can’t use it” basis and they have no problem with that, but if free software developers throw it back at them, suddenly it becomes a “cancer”, “first step to communism”, etc. What you should consider when you hear these arguments is whose interests are they protecting? Yours?
I started this particular series of posts on January 5th, and now I am going to finish it on March 4th, so it has been just 2 months. In that time we have explored some of the ways everyone can support Free Software, such a 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 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. This group organize 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 Community-supported 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 in this series is to give you ideas on how you can do that.
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 is 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 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 two last ones I would like to mention are umbrella support organizations. The first one 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 formerly 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. The other one I would like to mention is Software in the Public Interest, which has Bdale Garbee as president. As you might expect from that connection, the Debian project is one of the FOSS projects supported, but Arch linux, Drupal, and LibreOffice are among the others they support. Again, by contributing to a group like this you can give valuable support to Free Software.
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 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 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 in 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.
In a previous post I 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 bug-tracking 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 and help to 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 “how to contribute” documents is “Submit bugs when found” although the exact wording may differ.
This site give 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 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.
Linux is an example of what is called Free and Open Source Software (FOSS), but the word free may require just a little unpacking to get at what is meant here. Free can mean “does not require the payment of money”, and to Linux users this is often stated as “Free as in beer.” This can lead to the obvious question “Where do you get beer for free, anyway? I always have to pay for it at the store.” Still, the intent here is clear enough, we are defining “free” in economic terms. Well, that may be good in some ways, but it ought to lead you to wonder where all of this free software is coming from. In my e-mail sig I have the acronym “TANSTAAFL”, which stands for There Ain’t No Such Thing As A Free Lunch. (An aside: When I was in graduate school in the economics department of the University of Michigan, the grad students put out their own department newsletter and called it “The Free Lunch.” I think the idea was that we could plausibly deny that it existed.) I got this acronym for Robert A. Heinlein, who used it in his book The Moon Is A Harsh Mistress, but I suspect he got it from somewhere else.
The other meaning of free is “free from restrictions”, and in the Linux community this is condensed as “Free as in speech.” In the more advanced democracies, at least, there is some legal protection for people who wish to express their own ideas, even if those ideas are critical of the government or unpopular. This is not just free, but it is freedom. In terms of the software world, this is best summed up by the Free Software Foundation’s definition of Free Software:
* The freedom to run the program, for any purpose (freedom 0).
* The freedom to study how the program works, and change it to make it do what 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 the thing that you may notice here is that this definition does not in any way suppose that the software needs to be free of charge. The FSF definition is completely compatible with charging money, though it removes some of the ways that companies might enforce the payment of money. The point is that FSF concern here is not economic, it is about the freedom of the individual software user to use the software in any way they wish. By this definition any software that comes with an End-User License Agreement (EULA) is not free. EULA’s exist expressly to place limitations on what you can do with your software.
I think this distinction is important in several ways. First of all, the people who write software do have to eat, they do have to pay their bills, and so on. We should never kid ourselves about this, and we do have a responsibility to support the people who write the software we depend on. Back when I first got into computers, I made it a point to pay for shareware if I ended up using it. In the FOSS world, software is offered free of charge, but many software authors do have a PayPal button for donations. Last year I hit that button for PortableApps, and got an e-mail in reply from the author which made me think that it is rare for people to make a donation. That is just wrong. If you use the software (and PortableApps is software you should be using if you want to run anything from a USB thumb drive), you should support it. Just recently I signed up to “Adopt a line of code” in Miro, the open-source video app. I use this app daily, so I have a responsibility to support it. Now there are always going to be some people who just cannot spare the money, and I don’t think anyone should stop feeding their children to pay for software, but many of us can hit the PayPal button for $5 or $10 without having our homes repossessed, and we should do so any time it is software that we will be using regularly.
With Linux distros, the situation is a little different. Most of them do not expect to get your money nor do they ask for it. I can download Ubuntu, OpenSUSE, Fedora, Debian, Mint, etc. and never see a PayPal button. That does not mean I have no responsibility to support the distro, it only means that the way I support the distro is a little different. When you are talking about a Linux distro, you should mentally replace the word “free” with the words “Community supported.” And when we use the word community, we mean you. If you are using the software, you are part of the community. There is a saying in the United States that “Freedom is never free,” and it applies in a slightly different way to Free Software. If we do not participate in the production of free software, that quantity and quality of that software will diminish over time, until we are at the mercy of EULAs for everything we do.
Most of us cannot participate by writing code (though there are never enough coders, so if you can code, by all means offer your services), so I am addressing this primarily to person is just using FOSS but has never gone beyond downloading some software and using it. Every project I know of, from major Linux distros to small utility applications, needs lots of different contributions that call upon a wide range of skills. These can include marketing, public relations and publicity, graphic design, writing documentation, managing forums, and so on. The list can get quite large really. Maybe you can help in one of these areas, and if so, they would be glad to have you. But you may think “Gosh, I don’t have any of those skills. I don’t think there is any way I can contribute.” And you would be wrong.
The one thing every FOSS user can do, and should do, is to submit bug reports. Anyone who uses software will eventually have it go pear-shaped on them, and when that happens you can file a bug report. Maybe you have a software configuration that is unusual, or combination of hardware that no one looked at before, or maybe you just did something that no one else ever thought to do. Whatever the cause, you just discovered a bug. You might even be the first to discover it, or maybe you will be added to other users and help the developers find the common factor that leads to patching the bug. The key point here is that bugs never get patched unless they are reported, and the more reports the developers get, the easier it is for them to find the solution and fix the bug.
I feel strongly about this, so my New Year’s resolution is to devote some of my time and space here to writing how-tos and promoting bug reporting. I may have more information about Ubuntu, since that is the ecosystem I live in, but I will try to get some material on other distros as well. And if anyone reading this has information about bug reporting in other distros (on in Ubuntu, I may have missed something