Thought experiment: imagine a language model where you can describe exactly how you want software to behave, and it produces a binary that does that. You don't get the source code, but it works 100% of the time. As long as you can install this binary on whatever device you have, does this achieve the goals of free software?
Conversation
Notices
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:41:31 JST Matthew Garrett - clacke repeated this.
-
Embed this notice
clacke (clacke@libranet.de)'s status on Wednesday, 28-Feb-2024 20:41:27 JST clacke @mjg59 This was answered 30 or so years ago. If the compiler is a non-free binary, software built with it goes in "contrib" and cannot go in "main". -
Embed this notice
Jørn (jornane@ipv6.social)'s status on Wednesday, 28-Feb-2024 20:41:36 JST Jørn @mjg59 So this would be a programming language without documentation, with a closed source compiler?
I think programs written in it are open source when you share the input (description of how you want it to behave), but I wouldn't want to be a package maintainer for it.
clacke likes this. -
Embed this notice
aeva (aeva@mastodon.gamedev.place)'s status on Wednesday, 28-Feb-2024 20:41:40 JST aeva @mjg59 is this the freedom software version of original sin
clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:41:42 JST Matthew Garrett I think it's fair for a requirement to be that the model that generates this is free software in itself, even though that wasn't a hard requirement in the early free software days (eg, free software was free even if you needed a non-free toolchain to build it before gcc was bootstrapped)
-
Embed this notice
Andrew Zonenberg (azonenberg@ioc.exchange)'s status on Wednesday, 28-Feb-2024 20:41:45 JST Andrew Zonenberg @aeva @mjg59 "feed the program to itself"
That's a new take on the classical halting problem paradox.
clacke likes this. -
Embed this notice
aeva (aeva@mastodon.gamedev.place)'s status on Wednesday, 28-Feb-2024 20:41:46 JST aeva @mjg59 Sure. You just ask the magic box to generate a version of itself that generates very clean human readable C instead, and then use that version for everything else. And maybe have it translate itself to very clean human readable C as well and slap the GPL or whatever onto it.
-
Embed this notice
clacke (clacke@libranet.de)'s status on Wednesday, 28-Feb-2024 20:42:00 JST clacke @mjg59 Within the context of this magical compiler, the sorce code I feed in is free software and the binary that comes out is free software, but it is an unsustainable situation and should only be accepted as an interim solution if a free implementation of the compiler is in our foreseeable future.
-
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Wednesday, 28-Feb-2024 20:42:03 JST Stuart Langridge @mjg59 (this assumes that the model itself can't be taken away, of course. If it can be taken away or restricted in use in future, then I'm in two minds about whether this meets the goals of free software, because a year from now if I want to make changes to my or your software, I can't if I can no longer use the model.)
-
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Wednesday, 28-Feb-2024 20:42:03 JST Stuart Langridge @mjg59 that is: the idea behind having the source is that if I want to change the program ten years from now, even if the compiler is not easily available, I can in theory also build that compiler from source, or write my own, and therefore I can still run the program. If the compiler (in this case, the model) isn't available and I also cannot create it because I don't know how it worked, then having the source code for the program isn't very helpful.
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:42:03 JST Matthew Garrett @sil The compiler being itself free software has not traditionally been part of the definition of free software
-
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Wednesday, 28-Feb-2024 20:42:04 JST Stuart Langridge @mjg59 assuming that either you also publish the instructions you gave for that binary so I can see them, or that "make a thing which does exactly what Matt Garrett's thing does" is an instruction I can give the model and get back software which is a clone of yours, then yes. Having the source code isn't the point; being able to make the changes I want and nobody being able to stop me from doing so is the point. If I have a magic wand, I don't need source code.
-
Embed this notice
clacke (clacke@libranet.de)'s status on Wednesday, 28-Feb-2024 20:42:07 JST clacke @mjg59 The software written is free software, but writing free software with non-free tools is a short-term compromise.
People worked on gcc then just like how people worked later on free implementations of java and c#, as well as vala as a similar-ish language.
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:42:08 JST Matthew Garrett @clacke emacs was non-free before gcc could build it?
-
Embed this notice
clacke (clacke@libranet.de)'s status on Wednesday, 28-Feb-2024 20:42:12 JST clacke @mjg59 The point with "main" vs "contrib is that non-free tools have no place in a free system. Now that we have a free(ish, usually) system, why go back to the bad old days?
Maybe it would be strategically useful if it helps replace proprietary software, but replacing the non-free compiler with a similarly capable free one should then be a high strategic priority.
-
Embed this notice
clacke (clacke@libranet.de)'s status on Wednesday, 28-Feb-2024 20:42:13 JST clacke @mjg59 That claim has been made before, and it's not entirely off. There are definitely degrees of freedom within technically free software.
How obfuscated can source code be before it's a binary blob?
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:42:14 JST Matthew Garrett @tante That kind of suggests that something written in Erlang isn't free software for me if I can't read Erlang
-
Embed this notice
tante (tante@tldr.nettime.org)'s status on Wednesday, 28-Feb-2024 20:42:15 JST tante @mjg59 The point is that this still obscures what's actually running/in the structures. From a purely legal standpoint it might but I think that we should go beyond pure legal perspectives
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Wednesday, 28-Feb-2024 20:42:17 JST Matthew Garrett @tante What if we also had a model that could take a binary generated in this way and give you the prompt that generated the output?
-
Embed this notice
tante (tante@tldr.nettime.org)'s status on Wednesday, 28-Feb-2024 20:42:18 JST tante @mjg59 I'd argue that one of the reasons for open source is to facilitate learning, creating a mental model of the software, hardware if one wants to. It's not just about giving a tool but about being able to see how the toolmaker worked and thought. To be able to learn for oneself and just as importantly to be able to see implicit biases embedded in the structures of the software.
So that's a no.
-
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Thursday, 29-Feb-2024 11:51:40 JST Stuart Langridge @mjg59 I think if you know how to produce the model (or something equivalent to the model) then this is all fine, right? At that point, "make the word processor of my dreams" is perfectly adequate source code for a programme because you know how to make the compiler that can compile it; nobody can take that compiler away from you, so all is good. That's my intuition anyway!
clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Thursday, 29-Feb-2024 11:51:41 JST Matthew Garrett @sil That's a strong argument, but what if we had a deterministically trained LLM with only free software inputs?
-
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Thursday, 29-Feb-2024 11:51:42 JST Stuart Langridge @mjg59 agreed entirely! and I'm in favour of that. But that's because it didn't really need to be; all previous compilable languages had the property that even if you didn't have the compiler, you could work out how the compiler *worked*, and therefore in a pinch could write your own. (A lot of work, but doable.) But with this, you don't know how to build the compiler, and the source code is not enough by itself to build the program.
clacke likes this. -
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Thursday, 29-Feb-2024 11:51:46 JST Stuart Langridge @mjg59 this is a question of philosophy, I think. Is "be my ideal word processor" adequate source code? If you've got a compiler that can compile that correctly, yes. If you haven't, no. Is the Python source for that word processor adequate source code? I think yes even if you don't have a Python interpreter because you can see how it works, not just that it works. This feels like I'm talking myself into a different position than the one I intuitively thought.
clacke likes this. -
Embed this notice
Aurimas Černius (aurisc4@floss.social)'s status on Thursday, 29-Feb-2024 11:51:55 JST Aurimas Černius @sil @mjg59 looks like a clarification is required for the word "exactly" in the original toot. IMO, programming language is a way to write what you want a program to do. Natural language can be used for that too.
If you start writing your abstract wishes and still get what you want, you have a model filling the gaps. Is it even possible without a per-person model that knows you very well?clacke likes this. -
Embed this notice
Stuart Langridge (sil@mastodon.social)'s status on Thursday, 29-Feb-2024 11:51:56 JST Stuart Langridge @mjg59 I think there's, as you say, an implicit assumption that "source code" is low-level enough that you can understand how the program does what it does. What your theoretical model does is undermine that idea, because the source code expresses a wish rather than an algorithm; there's no explanation of how it's accomplished, which historically people have always assumed that source code has to do. The model is more like a genie that brings you what you wish for; you're dependent on it.
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Thursday, 29-Feb-2024 11:51:57 JST Matthew Garrett @sil I think this is an extremely interesting answer! From the FSF definition we assert that the source code alone is sufficient to understand, but in this hypothetical english→binary compiler we don't necessarily believe the english is sufficient because we don't know what happens next. Why doesn't this apply in existing languages?
-
Embed this notice
James Henstridge (jamesh@aus.social)'s status on Friday, 01-Mar-2024 21:44:35 JST James Henstridge @mjg59 All versions of the GPL define source as "the preferred form of the work for making modifications to it", so the LLM prompt would be source code going by the FSF's definition.
Extending the thought experiment: what if all the code, data, and build scripts used to train the language model was made available under an open license, but it would cost you a billion dollars in compute time to reproduce the model?
clacke likes this. -
Embed this notice
trdebunked (trdebunked@mastodon.social)'s status on Tuesday, 26-Mar-2024 14:22:03 JST trdebunked @mjg59 one of the things that really pisses me off about the movement in general- and i bet you share my pain on this- is that to create gnu it was necessary to temporarily enlist non-free components to bootstrap something more fundamentally free... and while of course this is not denied and even granted an explicit exception- when you do it, it becomes subjected to all sorts of double standards and bad takes from the orthodoxy.
for example: free hw deserves the same graces to become viable.
Haelwenn /элвэн/ :triskell: and clacke like this. -
Embed this notice
trdebunked (trdebunked@mastodon.social)'s status on Tuesday, 26-Mar-2024 14:22:07 JST trdebunked @mjg59 it should be/isnt obvious that the more you obfuscate the process of compilation the farther you get from a compiler that gives you freedom 1- regardless of the input giving you 4freedoms & the output being a result of that input.
btw i wrote a toy transpiler that turned stallmans verbatim-copying-only essays into transformative, executable scripts and he didnt get the humour or the point. he thought i was trying to prove something- i was just trying to get him to look at it differently.
clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Tuesday, 26-Mar-2024 14:22:07 JST Matthew Garrett @trdebunked I completely agree there, you're pushing a free idea into an opaque blob in order to receive free code. But free software as defined in the 80s was fine with opaque compilers, and I don't think anything ever happened to expressly redefine that
clacke likes this.clacke repeated this. -
Embed this notice
Wouter Verhelst (wouter@pleroma.debian.social)'s status on Tuesday, 26-Mar-2024 14:45:30 JST Wouter Verhelst @mjg59
If the model itself is not free software, it falls the tentacles test. Other than that, sure.clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Tuesday, 26-Mar-2024 14:45:34 JST Matthew Garrett @trdebunked (I don't think LLM models are inherently non-free - if someone supplied all the tools and the training data someone could rebuild that, the problem is that it would be implausibly expensive for most people to do so, but again that's not something that's been factored into the free software definition)
clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Tuesday, 26-Mar-2024 14:45:36 JST Matthew Garrett @trdebunked I think it's interesting tying this into the "systemd isn't really free software because it's so complicated" kind of argument. Free software is never going to be equivalently free for everyone - people who can code enjoy more freedom than people who can't (unless they have enough money to pay someone to do it). Where do boundaries get drawn?
clacke likes this. -
Embed this notice
trdebunked (trdebunked@mastodon.social)'s status on Tuesday, 26-Mar-2024 14:45:37 JST trdebunked @mjg59 yeah not inherently, just most often in practice. its more of a tendency.
one of my bigger obsessions with free software is looking at ways that freedom can be effectively diminished without being explicitly violated.
note i prefer openbsd to gnu/linux because i think it does more to protect freedom 3, but i love any work done to remove non-free stuff from it too. if the goal is perfection there will be detours and setbacks, while the fsf paints things into corners.
clacke repeated this. -
Embed this notice
trdebunked (trdebunked@mastodon.social)'s status on Tuesday, 26-Mar-2024 14:45:41 JST trdebunked @mjg59 i simplify this by saying that the more bloated a project becomes, the closer it approaches a binary blob. my original interest was electronics, which makes me very sympathetic to free hw. i appreciate takes like yours that point out the times where machine code / decompiled binaries actually works like source code. not all hacking is source hacking- a lot of it isnt actually.
the other side of that of course, is that source code makes many changes more accessible.
clacke likes this. -
Embed this notice
trdebunked (trdebunked@mastodon.social)'s status on Tuesday, 26-Mar-2024 14:45:45 JST trdebunked @mjg59 bloat is subjective but it reduces accessibility.
for me, squaring the circle and a perfect world isnt bloat-free because theres no reasonable way to define that. in a perfect world, bloat is optional because non-bloat is always available and an option.
for me the crime of systemd is how damned hard it is to completely eliminate from your system, not from the world. it approaches the idea of mandatory software. for years people have debated the finer points of this while it takes over.
-
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Tuesday, 26-Mar-2024 14:45:45 JST Matthew Garrett @trdebunked I think the obvious response there is just how much free software ended up depending on GNU behaviour (be that libc, gcc, or even somewhat more arguably Linux)
clacke likes this. -
Embed this notice
Matthew Garrett (mjg59@nondeterministic.computer)'s status on Tuesday, 26-Mar-2024 14:45:51 JST Matthew Garrett @trdebunked That is a take I hadn't really considered, thank you!
clacke likes this.