Apple and 'getting' Open Source
Two opposing articles on Apple either 'getting' or not 'getting' Open Source,
one by Jeremiah Foster (http://www.oreillynet.com/mac/blog/2007/03/apple_failing_to_understand_op.html) and one by Iljitsch van Beijnum (http://arstechnica.com/journals/apple.ars/2007/03/22/apple-were-breaking-up-you-only-want-me-for-my-source). Both of these are only superficial glances at what is really going on.
To really understand what is going on, one has to understand the process
that is usually involved with what people refer to as 'Open Source'.
The 'Open Source community' is often viewed superficially as a bunch of
people who work on source and release that source freely. Perhaps a
better name for what is traditionally referred to as 'Open Source' is
really 'Open Development'. The 'Open Source Model' typically consists
of someone releasing the source to something, accepting bugs, interacting
with users, developers, and bug reporters, fixing bugs and adding features
in an open and collaborative manner. People know or are able to know what
the developer(s) of the software are doing, what the upcoming features are,
what bugs have been reported, and can view the development source and try
it for themselves. A user in such a model tries out the product, reports
feedback, and if they are inclined/able they will contribute back bug fixes
or features for inclusion in the product.
Apple clearly benefits from the 'Open Source Model' as evidenced by the
amount of open source software they use. However, do they actually
participate in the model? There are some specific examples where they
do, such as with GCC. Apple uses the official GCC repository for most
of their development, and to some extent uses the GCC bug tracking system.
This is nearly 100% in line with the abstract notions of the Open Source
community and development model.
For most of the rest of the source they use that comes from outside the
company, the picture looks much less rosy. Portions of the source such as
the FreeBSD userland tools, rsync, samba, and others, Apple does not use
the official upstream repository or bug tracking tools. Users are not
able to see bugs, interim releases, or have any insight into the development
process at all. Occasionally Apple will report a bug upstream, and possibly
even contribute a patch or two, but this is not the norm. However, Apple
does not violate the letter, or even necessarily the spirit of the licenses
of the source they use. When a public binary release is made, such as
Mac OS X 10.4, Apple releases the source (potentially) used to generate
the binaries they shipped including any changes they may have made.
On a cursory glance, this seems great. They are meeting or exceeding the
terms of the licenses. However, for the authors/maintainers of the software,
or even their users, not all is well. First, Apple has shipped a potentially
forked version of the software and the only indication that it has been
forked is to grab the source Apple has kindly made available, and examine
it line by line, comparing to the 'official' sources. This is the process
the upstream maintainers must go through to see what Apple has done to
their software, and painstakingly extract any generally useful bug fixes
or features, and then worry about copyright/licensing issues. Apple does
not go out of their way to inform individual maintainers of what bugs were
fixed, features added, or even that the changes have become available.
The burden is entirely on the upstream maintainer. While this might not
be exactly evil, it is a tad unfriendly and it does not engender a feeling
of cooperation with the various upstream maintainers Apple draws on.
Another category of 'Open Source' Apple engages in, is releasing its own
entirely internally developed source. They do release a good chunk of
the source. However, the question is again, do they participate in the
open source model? For these projects, they typically do not allow
access to the bug tracking system, preventing users from seeing what
bugs have been reported, and they typically do not allow access to
the developmental source repository so users cannot try it out in an
interim stage and become involved in the development process. If a
person outside Apple wanted to participate, they could report bugs
and submit patches, but more often than not the bug reports and patches
will go unanswered until the next binary release of the product.
The external developer would have no way of knowing at the time of
submission whether someone already reported the problem, if Apple had
already done all the work they just did, or even if the patch they are
contributing is even relevant anymore. With development cycles on the
order of 12-18 months, that can be a long time for any feedback, and
the external developer has usually moved on since then. For Apple
developed 'Open Source' projects, they most certainly do not participate
in what is normally considered the open source development model.
The above is a rough characterization of the situation. Apple is very
large with many different products. There are specific examples of
open source projects which deviate from what was listed, such as Bonjour,
WebKit, and I explicitly mentioned gcc. However, I believe the majority
of the open source projects fall into the categories above, such as
xnu, IOKit, and the various drivers and userland utilities of Mac OS X.
As for whether the situation is getting better or worse, taken over the
8 years or so I have been involved in Apple's Open Source efforts, the
situation has steadily declined of that time. However, it is worth
noting that despite the decline in Open Source relations, the popularity
of Apple's products has dramatically increased as has the company's
stock price over those same 8 years.
Some other articles on Apple's open source:
A Brief History of Apple Open Source Efforts Feb. 21 2006
http://www.opendarwin.org/~bbraun/oshistory.html
WebKit and Apple's Open Source Efforts Feb. 23 2006
http://www.opendarwin.org/~bbraun/webkit.html
Why Did Darwin Fail Feb. 23 2006
http://www.opendarwin.org/~bbraun/osfail.html
Response to Slashdot Posting of "A Brief History of Apple Open Source Efforts" Feb. 24 2006
http://www.opendarwin.org/~bbraun/slashdot_response.html
Lessons Learned from recent Darwin experiences Feb. 24 2006
http://www.opendarwin.org/~bbraun/darwin_lessons.html
The Proper Context for Apple and Open Source Apr. 11 2006
http://www.opendarwin.org/~bbraun/apple_context.html