jfred: (Default)
So the big free software news of the week is that Amazon is forking Elasticsearch after Elastic relicensed Elasticsearch under the SSPL. The internet's in a frenzy about this, as tends to happen these days whenever a large previously free software project goes proprietary. I'm disappointed that the free software world has partly lost yet another useful piece of software, and glad that the project will at least live on in some form as free software, even if not from Elastic.

But let's back up a moment. What is the SSPL, the license that Elasticsearch was just relicensed to? What does it do? Why does everyone consider it a proprietary license? Well, it's largely based on the GPL, with a few additional restrictions that kick in if you're "mak[ing] the functionality of the Program or a modified version available to third parties as a service". Let's take a look at the relevant bits of the license text for a moment:

If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License. Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.
“Service Source Code” means the Corresponding Source for the Program or the modified version, and the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.

Now, one thing in particular here jumps out at me (emphasis mine):

you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License

Keep in mind that the definition of "service source code" here means:

all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.

You might be able to see where I'm going here. To comply with this license while offering the SSPL-licensed program as a service, you must be able to relicense all the software in your stack under the SSPL. It's incredibly unlikely that you're able to do this: if you use Linux for example, it's under the GPL, and while you can do many things with this you can't relicense it under the SSPL.

I'm inclined to interpret this somewhat uncharitably and say that the license was intentionally written to make complying with this clause nearly impossible. However, let's think about a more charitable interpretation for a moment. If we assume that your goal is to ensure that users of your software are always able to make changes to the software they're actually using, distribute those changes, and so on, there are a few license tweaks you could make. Rather than requiring that the program itself and its surrounding enviroment all be distributed under the SSPL, you could be more flexible with the licenses, like so:

“Service Dependencies” mean the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.
...
you must make the Service Dependencies available via network download to everyone at no charge, under the terms of this License or, at your option, under any other licenses designated as Free Software by the Free Software Foundation, or as Open Source by the OSI.

I'm not saying this is perfect or that we should start doing this, but it's an interesting line of thought to think about. Most hosting companies certainly wouldn't be able to comply with this, but if you were willing to commit to only using FOSS, it doesn't close the door to it immediately. (If the software were running on Guix, for example, it would likely be pretty easy for me to comply by posting the Guix manifest for my servers along with the Guix revision used.) I think a license modified in this way would be a bit more palatable to the free software community than the SSPL is today, while still preventing large companies from integrating the software into their proprietary offerings.

Even this modified license would not be Open Source. It probably wouldn't be acceptable under the DFSG. It might, however, be Free Software, and that'd be an interesting discussion to have.
jfred: (Default)
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!

Profile

jfred: (Default)
jfred

July 2024

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 18th, 2025 06:01 pm
Powered by Dreamwidth Studios