formalism in software freedom

A little after the end of the semester, I was thinking to myself “I need something to fill my time”. So, among other things, I started downloading and watching/listening to Stallman presentations from the FSF website (under the premise “if you have to drink something, it may as well be Kool-Aid”). So I watched like 6 hours of Stallman over a couple days.

Well, he’s had a lot of time to think about these things, and based on his premises, a lot of his arguments are generally pretty valid and well-reasoned. However, validity isn’t soundness, and I think there’s some room to challenge some of his premises (and, in fact, some of his premises that I disagree with at the outset).

But I was thinking about it, digesting the information as I was lying down to sleep, letting my mind wander. I do that… it’s a bad habit, that thinking, wandering, etc. Anyway, so Stallman lays out four freedoms: the freedom to run (or not run) the program, the freedom to study and adapt the program to your needs, the freedom to redistribute the program, and the freedom to improve the program.

Well, this sort of reminds me of a couple of other things. Back in CS 448, we looked at query optimization strategies, and sort of skimmed over the idea that query optimization is a heuristic process, because enumerating the entire problem space takes something in the neighborhood of exponential time (the problem is apparently NP-Hard). Truly optimizing the query would take longer than just about any actual evaluation plan! So we solve it with heuristic methods — for example, only evaluating left-deep plans… a clever strategy which finds very good (often near-optimal) answers well-attuned for fairly efficient per-row optimization, and gets done optimizing in somewhere in the neighborhood of linear time. It’s a win-win, but it’s not guaranteed to be an optimal strategy.

In a nutshell, that’s the difference between the rigors of formalism and the … well, lack of rigor of pragmatism.

Let’s apply the same principles to free software, from a pragmatic approach. Let’s assume that I’m an average windows user — I check my email, I surf the web, I watch youtube videos, I maybe download movies or tv shows or music or whatnot…

I’ve got the 0th freedom, because I can either run or not run windows, and I can run or not run applications that are bundled with it (to the extent that I’m willing to use sysinternals utilities and alternative browsers and media players and generally turn shit off).

I probably don’t care about the first freedom — the freedom to study it, because … well, I don’t want to study it. I just want it to not be in my way. So I don’t care about 1 since I’d never exercise that anyway. I’m just a user, and that’s just annoying crap to deal with. It’s nowhere near as entertaining as watching “New Numa” on youtube…

The second freedom, the freedom to redistribute the program to help your neighbor… that’s an interesting one. See, in a formal correctness sense, you don’t have this freedom at all. But in an informal, pragmatic sense, to the extent that product activation doesn’t exist you have this freedom. Sure, it’s illegal for me to burn a copy of winxp for you, but is that really going to stop me? Hell no! But what will is product activation, and to the extent that the os isn’t warezable in a functional state, I guess I lose this in modern incarnations to an extent. But really, the warez scene only needs to find one break in the process to get around it, but microsoft needs to defend against EVERY break in the process… it’s really an attacker’s game. And to the extent that it’s an attacker’s game, I pragmatically have this freedom.

The third freedom is also irrelevant to an end user, since improving the program requires developing on it… and seriously, what percentage of visual studio users have EVER broken out an editor?

Anyway, the point here is that even with proprietary software, there’s a pragmatic irrevocability of those basic freedoms which to an extent mitigates the pressure to carry the banner of formally free software.

Wild Conclusion: Only product activation will ensure widespread adoption of free software premises and principles!

So come on Microsoft! Bring on your onerous licensing and activation schemes, bring on your rabid enforcement of copyright, deny those freedoms and drive free software!

Leave a Reply