Subject: Viewpoint on the Open Source community
From: Rich Morin <rdm@cfcl.com>
Date: Thu, 3 Dec 1998 11:18:58 -0800

At the editor's request, I submitted this "Viewpoint" (editorial
opinion feature) to MacTech magazine, a publication that specializes
in serving "Macintosh Programmers and Developers".

In his role as a reviewer, John Gilmore suggested that I send youall
a copy for discussion.  Have fun...

Ducking for cover, Rich

=====

I was pleased, if a bit bemused, when Nick DeMello invited me to be a
Contributing Editor for MacTech.  I'm certainly not a Mac Developer;
the only Mac programming I do is in MacPerl.  I edited Apple's MkLinux
Reference Release, but that's not even Mac OS!  So, what could he be
thinking?

After a bit of reflection, or possibly rationalization, I decided that
I do have something to contribute.  I have a rough understanding of
Mach's philosophy, am quite comfortable in Unixish environments, and
am very much at home with the notion of Open Source software.

If I can help introduce the MacTech audience to some of these notions,
I may be able to help Mac OS X (and thereby Apple) to succeed.  As a
Mac devotee (I'm typing this in BBEdit on my G3 Desktop), I like this
idea quite a bit.  So, let's begin: What's all this noise about Open
Source software and why should Mac developers care about it?

To understand Open Source, you have to think about the nature of the
Unix community, from whence it largely sprang.  Unix users commonly
program, to one degree or another.  Even to use Unix, one must enter
sequences of textual commands; it's a short step from that to writing
small "shell scripts" and, ultimately, real programs.

Unlike the Mac environment, where most programming tools have to be
purchased, the C compiler is bundled into most Unixish distributions,
along with interpreters for languages like awk, bc, lex, make, and sed.
In short, whereas only a small percentage of Mac users program, nearly
all Unix users program to one degree or another.

Assuming that these folks want to exchange programs, how would they do
it?  The target machine may have subtly differing APIs or a totally
different architecture.  Binary distribution is too inflexible; source
code is the only thing that can be exchanged with any reliability.

So, source code has become the universal medium of informal program
distribution and exchange in the Unix community.  Clearly, commercial
vendors sell binary packages, but the "freeware" of Unix is nearly
always distributed as source code.  And, as a side note, "shareware"
is virtually nonexistent in Unix circles.

And, because there are so many programmers receiving the source code,
a lot of programming gets done by the recipients.  They add features,
fix bugs, and sometimes combine code in ways never imagined by the
original authors.  The result is an incredible fount of creativity,
coupled with very rapid convergence towards bug-free implementations.

This is all very well, you may say, but what has it got to do with
the Apple community?  We don't have user-programmers or even tools
for them to use.  Our freeware and shareware is distributed in binary
form and few users desire anything different.

True enough, but there are signs that change may be on the way.  I run
Perl and Tcl/Tk on my Mac; I could be running Python, GCC, or any of
several other languages.  So, the tools are starting to appear.  Also,
while Apple is keeping quiet about its plans, it is quite likely that
Mac OS X will have a complete set of Unixish commands as an option.

More to the point, much of the foundation of Mac OS X is based on Open
Source software.  Carnegie-Mellon's Mach 3 microkernel forms the basis
of the system, supplemented by UC Berkeley's 4.4BSD-Lite distribution.
Open Source add-ins, from Apache and Bind to Perl and Sendmail, will
fill out the system.

If Apple had to pay license fees on these components, could they sell
the resulting system at mass-market prices?  I think not.  Will Apple
rewrite everything, through a surfeit of NIH?  Seems unlikely, though
some things will certainly be revised for assorted reasons.

Will the ported versions of Open Source packages be contributed back
to the authors?  They must be, in the case of GNU code, but Apple is
also handing back changes to BSD code, which has no such requirement.

Finally, whom does Apple expect to buy Mac OS X?  Developers will buy
copies, of course, but they aren't a big enough audience to support a
new system.  Advanced Mac shops (e.g., high-end graphics firms) will
also jump in, for advanced features and increased stability, but they
are also a relatively small audience.

I therefore predict that Apple will cater to, and actively woo academic,
research, and otherwise technical users; in short, the bastions of the
Unix community.  They may be quiet about it, but mark my words; it will
be a large part of their planning.

And, when these folks start playing with Mac OS X, will they leave all
of their favorite tools behind?  Not very likely; in fact, I wouldn't
be surprised to see Apple encouraging a few Open Source developers to
do Mac OS X ports of important Open Source packages!

Let's be clear: Mac OS X is not Unix.  It will have a different file
system, different scheduling and I/O architectures, and more.  Most
commercial applications will be ported to Carbon or written for the
Yellow Box; neither of these is much like conventional Unix.

Nonetheless, I predict that the next few years will see a merging of
concepts between the traditional Mac and Unix communities.  Mac users
will start seeing more Open Source software, even if (as seems likely)
most will never look at the source code.

If this is true, it would behoove Mac developers to learn a little bit
about Open Source, if not Unix, per se.  The best places to begin such
an exploration are www.opensource.com and www.gnu.org; tell them Rich
sent you...

=====
--
Rich Morin:          rdm@cfcl.com, +1 650-873-7841, http://www.ptf.com/~rdm
Prime Time Freeware: info@ptf.com, +1 408-433-9662, http://www.ptf.com
MacPerl: http://www.ptf.com/macperl,   http://www.ptf.com/ptf/products/MPPE
MkLinux: http://www.mklinux.apple.com, http://www.ptf.com/ptf/products/MKLP