Free software is not enough: on practical user freedom

by Jonathan Frederickson — Fri 19 June 2020

Every so often, I'll have a discussion with a non-free-software person that ends up here:

Me: I think software freedom is important because it allows everyone to modify the software if they need to. Person 2: But most people won't change their software! They don't know how! Why do they need to be able to?

Obviously, as a free software advocate, I do think it's important for people to be able to change their software. There are plenty of reasons for this that I won't get too deep into: autonomy, trustworthiness, interoperability, etc. These have been covered pretty comprehensively already, and the GNU project's philosophy page is a pretty good place to start.

But, honestly... they also kind of have a point. Most people don't know how to change their software. Most people wouldn't even know how to start. Hell, I have some programming experience myself, and even I find it nontrivial to get started modifying some of the software I use.

I feel like, while software has gotten progressively easier to use, it hasn't gotten that much easier to build, develop, and compose. Take the web browser you're reading this from, for example. If you see something on your screen and you want to find out how it works, how do you even get started? Imagine you've never touched a command line before. What are you supposed to make of this?

It doesn't have to be this way. The early web was much better at this than the web of today; "View Source" was a powerful thing when most sites were handwritten HTML. I personally learned the HTML basics from Neopets, of all places! (And I definitely wasn't the only one.) Now, with minified HTML and JavaScript everywhere? Not so much.

It's not just the web, too; I use Emacs extensively, and one of the best things about it in my opinion is that it exposes its internals in a way most modern software does not. Just about everything in Emacs is introspectable and programmable - you can jump to the source code for any of its functionality in a few keystrokes, and you can overwrite parts of it on the fly and see what it does. In fact, your personal configuration is code in the same language and environment used to write Emacs itself! There's a snippet from a speech on an early Emacs that I think is particularly illuminating:

Multics Emacs proved to be a great success — programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program.

There are few such systems in the wild today, though. Most modern software is not like this. But there was so much promise in earlier computing systems! Just look at this demo of the Alto's software!

Or what about the Sugar environment used on the OLPC laptops? That had a "View Source" button for every activity. And something magical happened when they got that into the hands of kids: the kids started programming! About 50% of commits came from the kids themselves! (See this video at around 3:00.)

What's the takeaway here? I think we need to drastically lower the barrier to entry to hacking on programs. The ability to modify free software is an enormous advantage, but we don't lead people to it well enough. It should be a benefit available to everyone. Then, maybe, we'll build a world where everyone is able to and expects to be able to shape their computing environment.

Imagine one of these kids visiting an Apple Store sometime in the future and innocently asking where the “View Source” key is. “Let you view the source? But that’s our property, it belongs to us, you can’t have it.”

I would be remiss if I failed to mention the Malleable Systems Collective, which aspires to exactly this goal. Highly recommend browsing through the site for more examples of systems that provide this level of openness to their users.


I'm writing this post as part of #100DaysToOffload. This is my first post in the series, but I'm hoping I'll be able to make it a habit. Fingers crossed!


Comment: