← Back to context

Comment by jcranmer

1 hour ago

The fundamental problem that most people want free software to solve isn't the user-level problem of "I want to tinker with all of the software I run," but the community-level problem of "I want to use the results of other people in getting software to run on my setup." In the context of a compiler, that's support for more esoteric architecture; in the context of a kernel, that's support for drivers for hardware.

The GPL doesn't actually solve the community-level problem very well (which is the basis of Linus's complaints about GPLv3--it positions the license much more directly in the direction of the user-level freedom rather than the community-level freedom). But the solution for the community-level problem involves a lot of social pressure, and it turns out that for a large open-source project, commit velocity means that most proprietary companies find the easiest way to deal with the open-source upstream is to contribute their code to the community to make it everybody else's problem to maintain.

You can see this in the development of LLVM, e.g.: almost all of the proprietary compilers are LLVM-based (especially as EDG has finally thrown in the towel, everyone using EDG is going to look to rebasing onto clang instead). And yet the companies with their proprietary forks of LLVM are still major upstream contributors.