Linus Torvalds |
|
|
|
|
|
|
figure 9 |
The other
problem that some Open Source projects have had is that while competition
is good, sometimes competition goes overboard. You do not want to
have two projects that stop competing in the ecosystem and instead
try to compete against just each other. That's what we call "war."
And quite often you have social reasons and economic reasons why
this doesn't happen. In the GPL, again the license requirement for
recombination makes it really hard to compete in an adversarial
manner on a technical level.
The third problem is the problem that all distributed projects have,
which is communication. This is why distributed computing is hard.
Most of the effort in distributed computing tends to be to limit
communication. Obviously, humans are really good at communicating.
That is what we do, quite naturally. But at the same time, there
are communication barriers and limits to understanding, simple limits
like language. Some have technical solutions; the Internet was obviously
one of them. Some of them are inherently hard to overcome, and make
it fairly hard to create truly global development efforts.
So, my last slide (figure 9). I claim, and I want to note again
that this is a personal viewpoint, that development is really about
breeding your products. It's a biological thing. And distributed
open development tries to do this in a more natural selection and
natural competition way. A lot of people breed, even biological
entities, in commercial settings. If you have seen, for example,
the poultry industry today, they certainly breed their subjects
very aggressively and with a very strict rule. The only thing that
matters is how well the chicken produces. And everybody, all badly
producing chickens are killed and never used again.
The problem with taking this extreme approach, the commercial approach
to breeding, is that it tends to create a very lopsided end result.
You have chickens that would never ever actually be able to survive
in the wild. What the openness of Open Source gives you is a much
more balanced viewpoint. You have thousands of people who all try
to push their own view of how the products should look. And by having
this varied development environment, you avoid the lopsidedness
that you often see in commercial companies. This I think was one
of the problems that UNIX had historically -- all the commercial
companies had a very lopsided view of what they wanted to do with
the system, resulting in all the development going into server operating
systems, which resulted in a system that was not really very useful
for personal use. With Linux you have had a lot of different ideals,
and Linux doesn't have a single niche. You have people who used
Linux in servers, but you have people who used Linux on the desktop,
in laptops, on supercomputers, on just about any kind of computer
out there. And avoiding this one-sided view has been, I think, a
natural result of Open Source, and not so much of a result of me
trying to aim for it.
"Release early, release often" that's one motto for Linux. The reason
is to improve the speed of evolution. You want to make each generation
as short as possible to get fast feedback in order to make the next
generation better. This is something that a commercial company usually
can't do. It's just too expensive to release more than once a few
years.
I would like to leave you with a thought about the future of computing,
which is that computing, and especially software, is getting more
and more complex. And the whole meaning of complexity means that
it's getting harder and harder to control. What happens in some
theoretical future when the software we are trying to run is actually
more complex than the organizations that are generating the software.
If you look at the most successful, the most complex piece of technology
on the planet today, what technology is that? It's not software.
It's you and it's me. And guess how that happened. It did not happen
through some super-engineer and his controlled team of people. It
happened through evolution. Evolution is a proven way to actually
generate systems that are potentially more complex than the environment
they are generated from. And this I think is why in the long run
Open Source and the evolutionary method is the only way we can reliably
generate complex systems that are so hard to understand that no
single person really knows how they work. Is that where we want
to go? I don't know. I think it is where we will end up. Thank you.
|
|
|