This weekend I’ve made trips to two events that really got me thinking about who we should promote free software to. The first stop was the Durham Farmer’s Market, and the second was a benefit concert for a cooperative preschool in Chapel Hill. I have been thinking for a long time about the “organic food crowd,” particularly because I’m a biology graduate student, and most of my fellow graduate students buy organic food or shop at farmer’s markets. They seem to have values in common with me, yet few of them use free operating systems. A lot of my fellow graduate students know about certain free software, like Firefox, R and Python. However, mostly they use Window$ or McIntyre operating systems.
I really think somebody needs to get the idea of free operating systems to people at the Durham Farmer’s Market, Whole Foods and events like the concert I just attended. Obviously that could be me, and I could just go and talk to the vendors at the farmer’s market. That would be easy. There are a few problems, chief among them the assumptions I’m making. I automatically assume that these people who I seem to have a lot in common with are very different from me. I assume that they are making their decisions from a fashion-inspired reflex. I think I feel this way because I have come to my own values my own way, and not because of fashion. However, I know my conclusion is not justified. I don’t actually have good data about the “organic food people,” and probably at least ten percent of them do indeed use free software. Probably more than ninety percent of them at least know about Firefox, even if they don’t know what’s actually good about “open source.” I do know that pretty often I see cars like the one I saw driving back from Chapel Hill: bumper stickers saying “When words fail, music sings,” alongside an Apple sticker.
The other problem is just what I would say to them? Would I recommend a particular distro? Would I recommend that they read GNU Philosophy? Would I recommend that they learn about the issues on Wikipedia? These were all helpful things for me. However, it’s best to get across the ethical essence of the idea by simply giving people a persuasive argument. That almost always gets people’s attention, but you need to give them at least a step to get going. Another good first step is to recommend the film Revolution OS, but that’s starting to seem a bit dated. Perhaps it’s time for another documentary, like Patent Absurdity.
The third challenge is to remember is that promoting freedom is not a race to get the most users. People in the software press seem to always be concerned about numbers, about “desktop share,” and about “killer apps.” That’s really not the point. The point is to demonstrate that ethical motivation is enough to create a working operating system. In other words, whether the GNU/Linux operating system was created for freedom and fun, it was not created for money. Often the first thing people tell me when I give them my persuasive argument is “but programmers have to make money!” as if money were the only reason that anybody ever does anything. The point of free software (and Wikipedia) is to show skeptics that there are people who have different values.
Ultimately, I believe, that ethical motivation will prevail and one way or another, whether they know it or not, people will end up using ethics-promoting software. It doesn’t matter how many Windows users we “convert” or how many Mac users we tell the truth about much of the software they’re using. It doesn’t matter that we “conquer the world” or anything like that. What matters is that those of us who care about our freedom now do what we can to continue to improve our ability to live our lives without using ethics-compromising software. The more we can do that, the better demonstration we make to people who finally decide that they want to make the effort to preserve their freedoms. We will do our best, and others will see it and make their decision.
An excellent video condensing the history of Linux into some nice cartoons:
I especially like the portrayal of rms.
Factionalism is bad. I agree mostly with the points of people who call the software I use “open source,” whereas I call it “free software.” Most of the time, there is not a big difference. In fact, I feel like acting defensively whenever somebdoy bad-mouths open source software. I hear people do it all the time, and it bothers me, even though when those same people suppose I use “open source” I correct them and say “free software.”
Where does the problem lie? The problem lies in that when I correct people from saying “open source” and tell them it’s my freedom that I care about, they shut up. Many people use software knowing it’s open source, but don’t know that it is also free, and the implications of that freedom. For people who are used to proprietary software, open source is just an alternative that they have no compelling reason to entertain. Freedom, however is compelling. If it doesn’t change the minds of proprietary software devotees, at least they have no comeback. This is why I’m asking everyone reading this to start calling free software “free software.” Free as in freedom.
I’m unimpressed with open source: so are its detractors
The open source movement has not successfully shown that “open source” is a better way of promoting software freedom and their development methodologies. Nor have they shown that promoting user freedom as a primary goal is a bad idea. They have shown rather the opposite. Consider the following:
- Microsoft is now an open source company, without changing any of their business practices or policies on user freedom
- “Open source companies” are now suing other “open source companies,” debasing themselves to the level of corporate greed-vehicles like Microsoft
- The arguments for open source are not compelling to anyone who believes that proprietary software is better than free software
- While there are multiple, confusing uses of the word “free,” there are more confusing uses of the word “open”
By ignoring the moral and social conflict between user freedom and proprietary software developers, the open source movement has made proprietary software okay. That’s not okay. Furthermore, I hear people who cling to proprietary software laugh at “open source” as though it were the retarded cousin of software they believe is better only because you have to pay for it (they typically don’t notice or don’t care about the licensing terms). In 1998 during the height of the browser wars, open source was a good weapon, if not an outright success. Unfortunately, open source has become an avenue for proprietary software to infect people’s lives.
Open source has become a joke
Articles like this critique of Meego are what I mean when I say that Open Source is a joke. The author is even complimentary to open source, but he presents a good argument for how uncompelling it is. Or take this completely insane argument: Google’s ChromeOS will fail because
… Every year for the past decade was supposed to be “The Year of Linux on the Desktop.” It hasn’t happened and it’s not because it was an idea ahead of its time or it needed a stronger champion. The mass market has rejected Linux on the desktop. Linux is nothing more (or less) than a niche OS loved by a loyal group of highly-technical users. Even Google can’t change that, unless it’s prepared to write Linux device drivers for all of the world’s printers, digital cameras, keyboards, and mice. –Jason Hiner, Google Chrome OS: 3 reasons it matters, and 4 reasons it’s irrelevant
I agree with him that “The Year of the Linux Desktop” is a myth that will never materialize (at least it won’t be called “Linux desktop”), but “niche OS” is a bunch of bologna. It ignores the fact that most of the world’s servers are run by this niche OS, but it also ignores the fact that people choose to use software for reasons other than how successful it is in a highly anticompetitive market. People use GNU/Linux not just because it’s easier to use, more featureful and more reliable than Microsoft Windows (if you disagree then you haven’t tried GNU/Linux lately), they use it because of the freedom it allows them. Everything else (ease-of-use, features, stability) just comes along for the ride. (not to mention that his argument about Google needing device drivers is BS, too; he obviously forgot what ChromeOS is supposed to do; I’ve never had trouble with keyboards and mice, as those are most of the time controlled by the BIOS; duh)
By far the most effective argument against adopting the open source stance, as opposed to the free software stance is this:
A pure open source enthusiast, one that is not at all influenced by the ideals of free software, will say, “I am surprised you were able to make the program work so well without using our development model, but you did. How can I get a copy?” –Richard Stallman, Why Open Source misses the point of Free Software
If you don’t believe that distinction is clear, then look no further than your university’s so-called “Linux” servers, which are probably mainly a platform for running proprietary software like Matlab.
Perhaps you consider my perspective a little narrow, and you’d be right: I’m an academic computer user. I have no investment in what “the market dictates” or “the ecosystem” says about what kind of development tools I should use. I make my own decisions about these things. I have the “luxury” of caring mostly about my freedom. Doesn’t that seem wrong to you? If you are in a job where you don’t feel it’s valid to consider your civil rights and the rights of your coworkers, neighbors and friends, maybe you’re in the wrong place.
A few weeks ago I migrated two major projects to distributed version control systems (DVCS), leaving only one project in Subversion, the one hosted on Savannah. As you can read in my prior posts, I have resisted switching over to DVCS. However, recently I’ve understood the benefits propounded by DVCS adherents, and I’ve found that it has more features than most tutorials let on.
Why Did I Resist?
I resisted DVCS so strongly for a few reasons:
- Most arguments for DVCS I encountered were actually anti-Subversion arguments; much of them based on incorrect information about Subversion and CVS
- Much of what I read sounded like knee-jerk trendiness: it sounded like people were doing it just because Linus Torvalds says Subversion is stupid
- I had an important project (my dissertation!) in Subversion, managed with Trac. I didn’t want to lose all that history by doing a crappy conversion.
When the anti-Subversion arguments didn’t hold up, I ignored them. I thought maybe my working conditions were just different or other people just weren’t reading the manual. Those are still possibilities, but the harder thing to examine was my second reason for dismissal: I assumed that anyone who said these things was a total newbie, who had just been told that DVCS was better. I’ve talked about object-oriented programming proponents often just sound inexperienced with programming. I figured the same was true of DVCS proponents.
However, two things happened that really changed my mind. The first was that I’ve realized that the most annoying thing about somebody questioning my decisions is the feeling that they think my decision is poorly considered when it is deliberate, careful and took me weeks of preparation. It’s very easy to take that attitude with people online: when I don’t hear or see people, I don’t have that mirror held up to me. It’s very easy to just brush something off and say that the other person “just isn’t thinking about it.” Realizing how much that pisses me off when people take that attitude with me, I’ve thought a little more about how I consider peoples’ attitudes online.
Many experience hackers have switched
The second thing was realizing that people whose opinions I know I can value, people who definitely have done their homework, have switched major projects to DVCS. Emacs, my favorite piece of software that I am using right now to right this, is kept in Bazaar now. I know the people who made that decision were doing their homework, not going by knee-jerk reaction, certainly not just to copy Linus Torvalds. Bazaar is also part of the GNU Project.
What about my revisions?
svn2bzr answered my third concern. svn2bzr is a featureful-enough tool that will create Bazaar branches or repositories from SVN repository dumps. It’s really freakin’ easy to create whatever configuration you want:
> python ~/.bazaar/plugins/svn2bzr/svn2bzr.py --prefix=subdir svndump newrepo
This will create a new Bazaar repository in the directory `newrepo’ that contains all the revisions in the subdirectory `subdir’ of the svn repository. This is where Bazaar’s concept of repositories shows its difference.
In a Bazaar repository you can have many branches beneath the repository in the filesystem, and you import a branch by branching into a subdirectory. I did’t get this for a few weeks, so let me give you an example. Suppose I have a branch called `branch’ located at `~/Public/src/branch’ and a repository called `repo’:
> cd repo > bzr branch ~/Public/src/branch here
That creates a branch within the repository called `here’. Now I can create other branches, merge them, etc. The only tricky thing about getting my revisions into a place where Trac could use them was that I needed a repository hosted on HTTP. Then I used the TracBzr plugin to add the repository to Trac. I realized that changeset links are only used in Trac tickets, and since I had so few of those referencing current revisions, changes in the revision numbers wouldn’t matter that much.
Features of DVCS
I heard many, many anti-Subversion arguments and some really bogus arguments for DVCS. People have said “you can’t merge,” “you can’t make branches,” “Subversion causes brain damage” and on and on. The bogus pro-arguments I heard were that you can commit without a network connection, “forking is fundamental,” and that DVCS is “modern.” Answering these arguments is simple: committing without a network connection is not a big deal. On the other hand updating without a network connection is impossible, and it’s a situation I’ve found myself in more often, especially working with a laptop, instead of just two workstations. This is where DVCS was nice. Updating is a bigger problem than committing.
As to “you can’t merge” and “you can’t make branches,” we all know that’s bologna. However, what you can do much better with DVCS systems like git and Bazaar is edit directory structure and rename files. This is a huge advantage of DVCS systems. Bazaar, for instance, totally keeps track of all renames and copies in its history. Subversion, on the other hand, does renames with a DELETE operation and an ADD operation. Not so smooth. A good way to do get something better than CVS, but not the best.
Furthermore, DVCS systems are very good at merging. That doesn’t mean you can’t merge with Subversion — I’ve been doing that for years. However, merging between two branches in Bazaar is much simpler than merging in Subversion. I don’t have to read the help when I’m merging with Bazaar; merging with Subversion is not hard, but it’s not as simple. Simplicity is the name of the game, baby.
A Stupid Git Realization
I had tried using git before and didn’t enjoy it. I’m glad to say I was using it wrong. I had tried using it to manage my webpages, but whenever I pushed my local changes to my remote webpage tree on UNC’s servers, I would get messages about not updating the local tree and stuff like that. It was just confusing. It didn’t really make sense. I wasn’t interested in trying git again, hence using Bazaar for some new projects.
I had a weird realization one night: I was working with the git tree of Guile, and someone on irc had told me that the most updated git source had a known problem. I didn’t want to go get the tarball for Guile 1.9-13, so I thought “Wait, I have the git tree, so I should be able to generate whatever release version I want. How do I do that?”
> git tag -l > git checkout release_1-9-13
and there I had it. Wow! That is cool.
I also followed a simple tutorial to get my webpages working with a hook that would update the local tree (the one served as my homepage) every time.
It seems a simple idea: make a repository in a different directory,
and check out to it every time I push to that repository. Why hadn’t
that occurred to me before? Conversion from SVN to git was insanely simple:
> sudo yum install git-svn > git svn clone http://path/to/repo webgit
I think I’m done with Subversion. DVCS, at least git and Bazaar, can do a hell of a lot and I really like their features. I wouldn’t mind using Subversion for an existing project, but I think I’m not going to start any new projects with it. I’m also going to take it easy on people who disagree with me online. I’ve seen that at least some of them were speaking from the same position I hope to.
Ladies and gentlemen, it’s really happening. Microsoft’s domination of software is ending and the new hardware era is about to begin. Microsoft has failed to do anything new over the past few years, and no, Windows 7 is not anything new. I laugh when I hear people say that Windows Vista or Windows 7 is a new operating system: it’s the same operating system with a new version.
Soon hardware makers and OEMs will be packaging whatever software they want with their computers, and people either won’t tell the difference or they’ll be glad to see Microsoft go. I say “New Hardware Era” because the computer business used to be all about hardware. From the beginning of commercial computing — with Univac in the 1950s — up until about 1991, selling computers meant selling hardware. Software, although not incidental, was what companies needed to put on their computers so that they would do something after the customer turned them on. The best example is the proliferation of Unix variants that occurred in the 1980s in response to the workstation market: Sun created a market for networked desktop computers that was quickly emulated by DEC, NeXT, HP, Apple, Dell and many others. Companies designed their own Unix variants to run on these machines, while at the same time promoting their products saying basically “That program you wrote on your old machine will run on this new one because it stil runs Unix.” This was the original meaning of “open” in the computing world.
However, the only company that still does business this way is Apple. IBM and HP will still do this with AIX and HP-UX respectively, but those workstations are not their biggest sellers. Apple, however, still sells desktop Unix workstations — complete with the Unix trademark — the same way it did twenty years ago. Things changed in the computing world from hardware focus to software focus mainly because Microsoft pushed companies into making hardware incidental, instead of software. This was a good thing for Microsoft to do — yes, even Microsoft was capable of good.
However, as I’ve written before, Android, Meego and the iPad are quickly showing people that “Hey, you don’t need Windows to run a computer!” Knowledgeable people have always known that, but those aren’t the people who buy most computers. The people buying the most computers could best be called “electronics customers.” Notice that people still buy hardware, but they buy software bundled with it. This is how Microsoft built its monopoly. That and bullying hardware companies.
Not anymore. Microsoft’s chief software strategist has quit, Microsoft has completely failed in the mobile phone realm, and has missed the boat in tablets. Here are my predictions for the comming year:
- Meego and Android devices will increase the visibility of Free Software in the public
- Schools will start distributing netbooks and tablets pre-loaded with GNU/Linux (this is already happening)
- Hardware companies (Dell, HP, etc) will start shifting their products to support whatever free operating system they decide to use for a particular model
- People will stop relying on specific proprietary programs to get work done, most of all Microsoft Office
- Microsoft’s mental monopoly will break down: people will know that when they buy a piece of hardware, it will run with whatever the manufacturer put on it
- Microsoft will be reduced to the world’s largest patent troll
As to my point about hardware, this will be very much like when hardware companies created their own Unix variants, except that you would also be able to download it off the internet and use it on someone else’s hardware (for free). People will stop saying “there are no device drivers for Linux[sic].” Almost all hardware problems as of now are caused by subtle hardware problems that are not an issue for machines built with GNU/Linux in mind. As for office programs, what I mean is that once people realize that they don’t need Windows, they are going to see that they also don’t need Microsoft Word. I’m not saying every old person is going to start using Emacs, but quite a few of them might see the light and at least use gEdit. You will stop hearing arguments like “Software package X isn’t supported on Linx[sic].” People won’t care because when they buy a computer, it will have preloaded some program that allows them to get their job done.
The main thing Microsoft realized, and how they created their monopoly, is what Neal Stephenson called the “blinking 12:00 problem”: people take what they get. If what they are getting is GNU/Linux, then they’ll take it. It won’t matter that it doesn’t have M$ Office.
Microsoft will be reduced to a much smaller company that mainly tries to make money by suing people — most likely the companies that used to bundle their software and will soon be bundling GNU/Linux. Microsoft will basically be SCO with a name that people recognize.
The new hardware era is coming: tablets and laptops preloaded with Android and Meego are about to become very popular. This doesn’t mean that desktops are going away. They will again become high-end tools used by scientists and engineers, and they will come preloaded with software that is actually usable. Let’s see how my predictions fare.
- iPad-style tablets will fundamentally change the “PC industry”
- Android tablets will overtake the iPad soon
- Microsoft has missed the boat
First let’s get something straight, the interviewer says that the iPhone is “revolutionary” and that Apple invented the tablet. Both those statements are complete Apple hype. Microsoft had tablets before Apple did. Nor did Apple or Microsoft invent touchscreens. Touchscreens have been around for almost as long as the mouse, and they have always been used to lull computer users into thinking that they’re doing something “fundamentally different,” the same way Apple did in the eighties with their other invention, the WIMP GUI. Oh wait, Xerox invented that.
The idea that the iPhone is revolutionary is hype spread by people who think Steve Jobs getting a cup of coffee is revolutionary.
As to the analyst’s assertions: all I can say is “good.” Finally people will know that hardware companies other than Apple can produce a good product. I think it’s okay for tablet PCs to become more common, they look actually useful, as opposed to many laptops that are still too bulky to be portable, and still too slow to be useful. I might even want a Meego tablet, because it would save me from carrying a lot of things. I’m not going to stop using paper, but I might find a tablet useful.
If Android overtakes the iPad, again “good,” but that’s not necessarily a “great day for freedom.” We in the Free Software community need to put less stock in what business world people think about these trends. People in business care about money — they don’t care about what’s done well, what’s actually helps people get their jobs done, or about what’s ethical. We need to push software freedom where it really matters: in schools. As soon as I have kids in public school I will be at school board meetings and city council meetings telling them about Free Software. If kids start using tablets in school, then they sure as hell better have free software on them — and the schools need to enable and encourage them to use it — or we will be sending the message of “good for business, good for society,” to our kids. That is the wrong message to send to kids.
For the analyst’s last point, it’s more like “about time.” Finally people are starting to see how much Microsoft sucks. If it takes a product from Apple to show them, then so be it. I’m just glad that a sorta-free alternative (Android) is out there. There is also a mostly free alternative in Meego. I’m disappointed that it’s taken most people (including me) over twenty years to wake up and smell the coffee brewing near Seattle, but that fact that it’s finally happening is great news for everyone.
I think the best thing about Android or Meego tablets being on equal footing with the iPad — and therefore a good thing that the iPad finally created a viable market for tablets — is that it’s a step toward common knowledge and acceptance of Free Software as something usable and no longer the exclusive domain of “sandal-wearing freaks.” So “thank you” goes to the iPad and I hope this market does in Apple the same way it will to Microsoft.
Simpleio seeks to provide a simple interface for configuration files and writing results. Project goals are to keep the interface clean and simple.
Contributors can help by finding and fixing bugs. Examples of usage are greatly appreciated!
The Free Software Foundation (FSF) has an interesting take on the Oracle v. Google lawsuit. Of course they decry Oracle’s victimization of Google and abuse of the patent system. However, their analysis also includes this valuable lesson for future developers:
Unfortunately, Google didn’t seem particularly concerned about this problem until after the suit was filed. The company still has not taken any clear position or action against software patents. And they could have avoided all this by building Android on top of IcedTea, a GPL-covered Java implementation based on Sun’s original code, instead of an independent implementation under the Apache License. The GPL is designed to protect everyone’s freedom—from each individual user up to the largest corporations—and it could’ve provided a strong defense against Oracle’s attacks. It’s sad to see that Google apparently shunned those protections in order to make proprietary software development easier on Android.
Yes, it seems Google took the bait. This clearly shows what an “open source” company like Google is willing to do, and how that attitude can bite it in the ass.
I’ve developed an input-output library for scientific applications that is now available on Launchpad. Take a look, download it, play with it, see what you can do with it.
As of now the only documentation is the source code, but I am working on a manual. Simpleio allows you to specify simple configuration files where you can specify ranges for variables, define variables, and input values for calculations. You can also use its writing capabilities to write large buffers of output at the desired time.
I’ve completely redone the recombination algorithm, fixing bug #30720 that produced impossible offspring. Also check for many improvements to the homepage, including News links and new results for the nrm example program.