

The Good, the Bad, and the Ugly: The Unix Legacy (by Rob Pike) - silentbicycle
http://doc.cat-v.org/bell_labs/good_bad_ugly/

======
ars

      And it has some horrible mistakes: (Ugly)
        The preprocessor
        Conditional compilation
    

Quite disagree - this feature is what makes C programs so portable.

And yes I saw the thing about Plan 9 compiling a kernel for all arch's with no
ifdefs - well they only way you can do that is by cheating and either making
your own preprocessor, or a fancy makefile. So big whoop.

I read some more, but rapidly came to the conclusion that this is unreadable
without the associated (verbal) commentary.

~~~
silentbicycle
Elsewhere in the plan9 writings, Rob Pike says that he structured it by
putting all of the stuff that would need to be ported in one group of files
(which export the same interface), conditionally compiling the relevant subset
of those, and then writing everything else in terms of those. (A better
packaging/namespace system could handle this much more elegantly, though.)

Also, the C preprocessor is largely ignorant of C syntax. Am I the only one
who finds that incredibly strange?

~~~
vorador
What would be the advantages of a preprocessor knowing the syntax ?

~~~
silentbicycle
While it probably wouldn't be as useful as Lisp macros, due to the
comparatively complex syntax, it would at least avoid bugs involving things
like #define macros that evaluate their arguments multiple times.

OTOH, not having the C pp tied to C means it can be used for other stuff. The
only thing I can think of offhand that uses it is the BSD calendar system,
though, and that's largely just #include.

------
pugio
His main point is that a strong community is a strength, but many different
communities leads to too many fragmented (and incompatible) codebases and
ideas.

Some counterpoints:

1\. The number of different implementations grew as the number of available
computers and users grew. The number of smart people using each distro
nowadays is probably still more than the total number of users of some of the
original Unix implementations - the same implementations he says spawned the
most good ideas.

2\. Many different distros allows for many different ideas and paradigms to be
tried out. Over time, the best ideas will escape their parent communities and
become adopted by all the major versions. Ideas that may never have gained
traction in one massive community might find purchase in some of these
splinter groups.

The fracturing of the distros was a natural and necessary step in the
evolution of the nix system. Yes, Microsoft managed to assert its dominance
because it presented a single unified solution, but its heyday is nearing an
end. Slowly, the myriad good ideas coming from the countless nix's are again
unifying into a very strong front. Mac OS X (FreeBSD Unix) and Ubuntu (Debian
Linux) are two great examples of how many different ideas have coalesced into
a pleasing and usable system.

Rob Pike ends his message with an injunction to the Unix users of the world to
unite, to work together as opposed to walling themselves off in their own
segmented communities. While I think the segmentation was beneficial and
necessary, I do agree that a strong effort towards unifying the current crop
of ideas into a uniform package is beneficial, if only to provide a seed for a
whole new set of distros splintering off in new and unique directions.

~~~
thisrod
"Over time, the best ideas will escape their parent communities and become
adopted by all the major versions."

It's taking a very long time. At the current rate of transfer, Linux will take
the whole 21st century to absorb the progress Plan 9 made in the 1980s.

What I hope will happen, is that Linux will focus on the traditional OS role
of abstracting hardware, and become purely a hypervisor system. That would
exploit its strengths: the vast collection of device drivers, and systems such
as network packet munging and LVM. It would provide a sane, consistent
hardware interface, that sane, consistent application interfaces such as Plan
9, Oberon, and Alan Kay's new system could easily support.

------
andeka
1\. What is the best thing about Unix? A: The community. 2\. What is the worst
thing about Unix? A: That there are so many communities.

Learning the insides of things is what got me into UNIX. I wanted to know how
hardware and operating systems worked together. Rooted in academia and
science, the community and culture drew me in, It is a problem solvers
platform. You will find many a startup trying to make their dream come true by
hacking together their idea in C/Linux. Microsoft may develop a great business
application platform. But if you want to learn and experiment with new
computer science concepts you have UNIX.

------
devin
I totally agree with Rob's final statement (Community = Good), (Communities =
Bad). In fact, you can apply the same analogy to all sorts of other relevant
real world situations. Think: politically, racially, religiously, etc.

------
amanfredi
I was looking forward to reading the comments on this after finishing reading
the presentation, but there aren't any yet!

~~~
windsurfer
Well there are now!

