How Mac OS X almost had an official package management tool
A package management tool is common to most Linux and Unix operating systems to automate installing, updating and removing software. In the early days of Mac OS X there were no such tools available and installing Open Source software usually would require a complex list of steps that created demand for projects like Fink and DarwinPorts (now MacPorts) to provide an easier method. The work on these projects gave the Mac community a set of tools that were missing in the OS, returned several improvements that are now used and along the way one of them almost became the official package management tool for Mac OS X.
In the fall of 2006 I started working on an article covering the package management tools available for Mac OS, the Metapkg Alliance and rumors that Apple considered adopting one of the projects as the official package management system for Mac OS. And for the last few years all of those emails and notes have been sitting unused until I decided to pick them backup and piece together what I had started.
1999 – 2000
The first version of Mac OS X was released as OS X Server 1.0 and we saw the public beta which was the first time the Aqua user interface was released to the public. At the end of 2000 Christoph Pfisterer started the Fink project, giving OS X it’s first package management tool.
2001 – 2002
We saw the official release of Mac OS 10.0, two point releases (10.1 and 10.2), and the creation of two projects OpenDarwin (Apple’s attempt at helping development of open source software for OS X and create a standalone version of the Darwin OS) and DarwinPorts (a package management system). With the former being founded by Apple with Internet Systems Consortium and the later including the involvement of a few Apple employees.
2003
Started as a way to share information on porting software to the Mac OS, the MetaPkg Alliance was created between members of Fink, Gentoo and DarwinPorts.
Unofficially Apple considered using Fink as the official package management system, but because of their reluctance of using anything licensed under the GPL, decided to disregard the idea.
Below are the results from the emails and notes left from when I was originally started on this in 2006. The only thing that is edited below is the order that I have placed the quotes to try to show a clear timeline of Apple’s consideration of adopting Fink as the offical package management system. I could have fleshed out a bit more information, but I felt that I would never have time to complete it and decided instead to lay out what I have. Hopefully giving a small, but interesting piece of history of early Mac OS X development.
“I suggest you talk to Landon Fuller. Metapkg was his personal project from the beginning and I don’t think anyone from OpenDarwin (or Apple) ever got involved at all. Landon would know the details – I was one of those who never got involved with it and probably have as many questions about it as you do!” – Jordan K. Hubbard, Apple’s director of engineering for Unix Technologies
“When Mac OS X was originally released, porting software to the platform was considerably more difficult than it was today. It was highly unlikely that any mildly complex piece of software would work without (extensive) patching, and MetaPkg was intended to provide a venue for sharing the load of that porting work between Fink, DarwinPorts, and Gentoo.” – Landon Fuller, former Apple BSD Technology Group engineer and MacPorts developer
“However, MetaPkg arrived just in time to solve a problem that was disappearing:
– Apple improved Mac OS X’s support for common APIs (eg, dlsym, poll, nls, etc.)
– As the UNIX Mac OS X developer community grew, projects were ported to the platform by the upstream developers, and fewer changes were required.Simply put, the success of Mac OS X, and porting software to Mac OS X, quickly obsolesced the cooperative project. Good news, really.” – Landon Fuller
It has also helped that libtool’s support for OS X has greatly matured (thanks in large part to Peter O’Gorman, formerly a Fink core team member). – David R. Morrison, Fink
“Wow… a looooong time ago. As I remember it, Apple decided to name
one of the package formats/repositories the “official” format at WWDC,
very shortly after metapkg was announced, which seemed to go against
the entire spirit of the metapkg alliance.” – Daniel Robbins, Founder Gentoo
Was there any influence from Apple after the Alliance was announced to consolidate to one format or any other changes to have an “official” repository?
“Not especially. Apple had been struggling with the packaging question long before Kevin Van Vechten, JKH, and I wrote DarwinPorts, and until Apple selected a single packaging format there was little room for them to push for an official repository. DarwinPorts (now MacPorts) has never solved the packaging format question, though we did implement support for a variety of formats — everything from rpm, to dpkg, to Apple’s .pkg.” – Landon Fuller
“We got an email from some guy at Apple telling us that one of the
package formats was going to be declared officially supported by Apple
at WWDC.” – Daniel Robbins
“There were indications that Apple was seriously considering adopting one of the open source package management tools as the official one. (I don’t remember the timing too well, but it may have been right around the time that Metapkg started.)” – David R. Morrison
“If I remember correctly, I think they chose fink. The whole series of
events didn’t seem noteworthy to me except to show me that Apple was
being clueless and inappropriate in regards to community efforts, and
that maybe I should focus my time elsewhere.” – Daniel Robbins
“Well, Apple never ended up doing anything about package
management… The closest they came was creating dports, and it
actually made it into one of the seeds of panther, but was quietly
removed again, and as we all know by this point, opendarwin and dports
got pretty much ignored except by the few people on the BSD team that
spent their own time on it. :)” – Benjamin Reed, Project Admin Fink
“I’ve heard some rumors of RPM support in leopard server but hadn’t
looked into it. I helped out on the early dports
RPM-binary-generation port, RPM works pretty well on OSX and has the
advantage of having an architecture designed for platform “variants”
that should work reasonably well with universal binaries, so it seems
a plausible rumor, if not likely.” – Benjamin Reed
“The most promising code to come out of Apple in regards to a packaging format was Xar, originally written by Rob Braun (and contributed to heavily by Kevin Van Vechten), who was also a member of the BSD team at Apple, as well as the fellow responsible for the creation of the OpenDarwin project.” – Landon Fuller
Installer.app in Mac OS 10.5 uses xarchives from xar for installing software which replaced the previous method of using gzipped pax files.
“Metapkg post-date’s any official Apple discussions along the lines of
package management, by the time we formed it, it was for our own
edification –internal politics had made them punt “real” package
management in OSX until some future release, and the Installer.app
team “won” for the time being. We mostly did metapkg to save
ourselves some time, but it turned out to not really work out that
way, so it fell by the wayside, and we all continued on as we had
been.” – Benjamin Reed