Pacific Connection(英語)

Mac OS X Attracts New Developers to the Apple Tree: Converts include NextStep, Linux, BSD and Java Programmers

At this year's Apple Worldwide Development Conference (WWDC), Steve Jobs shared the stage with a coffin. To the funereal sound of Bach's Toccata and Fugue in D Minor, he pronounced Mac OS 9 dead, if not yet to customers, at least for developers. From now on, Apple would put its entire development efforts into Mac OS X.

But Mac OS 9 was not the only thing Jobs was trying to bury. He was also hoping to lay to rest Apple's long history of developing operating systems that are too original for their own good. Widely praised for its innovation, Apple had, in the 14 years between Jobs' firing and rehiring, squandered millions of dollars on bloated OS projects. These included System 7, which Apple engineer Phil Goldman once called a "complete fiasco in terms of planning, because the engineers were just throwing in everything but the kitchen sink." And then there was the infamous Copeland, announced in 1994, ballooning into a 500-engineer, $250 million project by 1996, and dieing the same year.

The new Apple under Jobs' reign has made its share of mistakes, but perpetuating the "not-invented-here" syndrome is not one of them. Apple now rivals Sun as an implementer of open standards and open source code. Mac OS X retains NextStep's Mach micro kernel, developed by Carnegie Mellon University, while adding the look and feel of BSD in an optional command line interface. (Offering a command shell is antithetical to Apple's former fixation of shielding users from the bones of the machine with the graphical user interface.) Jaguar, the code name for the newest release of Mac OS X, adheres to industry standards in high-speed graphics and ad-hoc networking.

Apple's willingness to incorporate proven technology and industry standards has resulted in the grafting of a new class of software designers onto the Apple family tree: people who have long experience with Apple's core technologies, yet who are new to the company. These developers represent fresh air for Apple application development, not only because of the skills they bring, but the bitter history at Apple they missed out on. Some have considerably more experience with the technologies underlying Mac OS X and Cocoa than a traditional Mac developer working through Mac OS 7, 8 and 9.

Consider Wil Shipley, president of The Omni Group, based in Microsoft's home turf of Seattle, Washington. The Omni Group has the look and feel of a long-term Apple application company. Its products, including the OmniWeb browser, OmniGraffle chart maker, and OmniObjectMaker developer tool, run only on Apple. The company's stated mission is to make software that is "fun" to use---an Apple-like attribute it says is notably lacking in Microsoft products. The Omni Group also has the elan of an Apple company. It employs its own chef, who serves dinner nightly at 6:30. It offers housecleaning services to its employees, as well as massage, a home theater system, and a massive video game collection. Staff is paid "starving-artist" salaries with a bonus based on company revenues.

But Shipley is not really a bona fide member of the "Apple Faithful." As an undergraduate computer science major at the University of Washington in 1988, he worked not with System 6---Apple's then current operating system---but with a very early version of NextStep, which the university received in its role as a NeXT beta site Later, NeXT contracted with Shipley to complete a database project for the William Morris Agency. With two colleagues, Shipley founded The Omni Group in the early 1990s. The Omni Group, in turn, has followed Steve Jobs and NextStep to Apple.

With that history, Shipley and his company are what Apple developers might have looked like if Jobs had invented Apple afresh in 1998. With no legacy applications to support, The Omni Group has had no need to learn the Carbon framework, Apple's transitional toolkit that supports both Mac OS 9 and Mac OS X. The company relies solely on Cocoa---the Yellow Box in the Rhapsody project---which was developed by NeXT.

"There are a lot of people who like Carbon, but I'm not one of them," Shipley says. "Carbon is simply a re-write of the toolkits Apple started in 1984 with the Mac OS Toolbox. Those were procedural tools and this is an age of object-oriented programming." But while Carbon is mired in the past, it lives on in millions of lines of code. Indeed, Shipley credits Carbon for saving Apple, calling it "the world's greatest hack." Were it not for Carbon, a massive program like Adobe PhotoShop would never run under Mac OS X. Apple without PhotoShop is a non-viable platform, and so Carbon has been instrumental in allowing Apple to move forward.

Shipley believes that Carbon is benefiting from cross-pollination within Apple. "Now that the Carbon programmers are seeing what's cool about Cocoa, they're adding some of the same concepts, and sometimes, the same underlying code," he says "Whereas two years ago, there were Carbon programs and Cocoa programs, and never the twain shall meet---now the line is blurring. Last year, we were able to start integrating the two: that's how our Web browser "speaks" [Macromedia] Flash and Java. All the plug-ins in our pure-Cocoa browser are built by vendors in Carbon. As a company that doesn't use Carbon, that opens up a whole world for us."

Looking ahead to Jaguar, Shipley is especially enthusiastic about Rendezvous, which will provide automatic self-discovery of available resources over an IP network. "It's the most far-reaching technology to come out in years," he says. Shipley argues that self-identification of services is the key to getting networks to work the way people often do---in ad hoc groups. People meet in an office and plug in their laptops or perhaps connect via a Wi-Fi link. This working group may last no longer than the meeting does, but they still require the same expanse of network services found on any network. With Rendezvous, if someone brings a printer or DVD burner with them, that service becomes available to everyone. It is "published" and subscribed to like any network service.

The Omni Group is considering implementing Rendezvous on three of its applications by the time Jaguar ships, including a facility for the on-the-fly sharing of browser bookmarks. At WWDC 2002 where Jobs spoke, Apple demonstrated a more recreational application of Rendezvous, in which a digital play list is stored on an iMac and played through a stereo.

For Shipley, Apple's approach to developing Rendezvous is as important as the technology, itself. "What's cool about this is that the 'new Apple' did it, not the old stinky Apple," he says. "The old Apple saw that Ethernet was the way of the future, so they came out with Ethernet cards with proprietary connectors that didn't accept standard 10baseT cables. The old, stinky Apple for years ignored the VGA standard, and didn't use PCI because they had to use NewBus. Rendezvous represents the new Apple in that the developers talked to IETF [Internet Engineering Taskforce] committees, making ZEROCONF [zero configuration networking] protocols the basis for Rendezvous. It's the first product to implement these standards, and to implement them really well."

Jaguar's Quartz Extreme graphics acceleration using Open GL 3d is anther case of Apple following industry standards, rather than going its own way. "Whereas the OpenGL calls were much worse than in Windows and DirectX, they now leave those systems in the dust," Shipley says. "Especially on the next generation of cards, we're going to see amazing performance gains. Under [Mac OS] 10.1 and earlier, we were supposed to see some ways of talking directly to the card---ways that were supposed to be efficient, but weren't. Under Jaguar, Apple has solved those problems and you can talk to the card very efficiently."

Cross-pollination with BSD

Apple is also attracting new programmers because of Darwin, Apple's implementation of 4.4 BSD-Lite2 running on the Mach micro kernel. A direct descendent of NextStep, Darwin forms the core of Mac OS X, and long term, Apple sees Darwin as a free-standing BSD distribution in its own right. Evidence of Darwin's growing influence can be seen in the growing number of freeware applications running under it. (See for a listing.) While numbering but a fraction of the freeware applications built under Carbon and Cocoa, Darwin applications represent a different programming tradition, emphasizing function over a pretty interface, with the possibility of adding the Aqua interface retroactively.

"BSD is attracting a new community to Mac OS," says Matt Henderson, technical lead for Metrowerks' Code Warrior Mac OS development tools. "Linux developers suddenly have exposure to a huge customer base that is actually accustomed to paying for software, that has no experience with free software, and is willing to pay for polished applications that work great. Apple users are not the traditional UNIX tinkerer: they aren't used to rebuilding their kernels to install a new driver or downloading and compiling the source for a piece of software they need. If you're a Linux developer with a general purpose application, you have to be intrigued by the opportunity that Mac OS X offers."

Of course, porting takes work, particularly in creating a user interface under Aqua (the interface implemented under Mac OS X). "If you have a user interface based on the X Windows layer or KDE or Gnome, you'd have to do a fair bit of re-engineering," says Henderson. "You'd have to adopt either Cocoa or Carbon. But anything that's not tied directly to the user interface would probably pretty much come straight over."

Rael Dornfest of O'Reilly & Associates notices "an increasing number of hackers using the Apple platform, instead of dual-booting between Linux and Windows." He says the platform is catching on with Perl development teams, as well as Microsoft haters looking for a "guilt-free" way to run mainstream applications. "Just because you like Unix, doesn't mean you have to look at it all day."

This September, Dornfest will be chairing the O'Reilly Mac OS X Conference in Santa Clara, California. The event is aimed at sharing information from Apple and Unix programmers---two groups who have had about as much in common as Parisians and Masai tribesmen. "We're focusing on three groups: Unix developers who have switched to the Mac and are discovering the wonders of a truly polished user interface, power users who write complex Apple scripts, and Java programmers who are picking OS X as a development platform," Dornfest says.

All these groups have something to contribute. "There's a lot of history in being a Mac OS developer, and they have a lot to tell open source developers about what Mac should feel like, including user interface stuff that open source developers have never looked at. Conversely, Mac developers can learn a lot from Unix hackers about what things look like under the covers. As you drop into a command line shell, you'll find some interesting things that have been built by the open source world. You might look at the Apache web server, for example, and realize you've never run a Web server locally before."

Dornfest says that the command line interface is also useful for Mac users, at least those with a sense of adventure. "Nothing beats a command when you are trying to find something or rename a bunch of files. Anybody who has tried to use AppleScript [Apple's macro language] to change 50 file names in a directory or copy files on a regular basis will appreciate how easy those tasks can be."

James Duncan Davidson worked at Sun as a Java programmer for four years before becoming a full time author, with books underway on Objective C and Cocoa. He once used the Mac mostly for manipulating digital photographs, but after his Windows 2000 machine "melted down," he switched to a Titanium PowerBook G4. "A lot of Java programmers have moved over to OS X," he says. "They get best of all worlds: Unix underneath with command line environment, a great Java implementation, and office applications." Still, Davidson notes, many Apple developers are resisting. At MacWorld last January, Davidson saw obvious residual support for Mac OS 9. "Presumably, that's beginning to change," he says.

Davidson likes Cocoa because of its ability to leverage existing applications, whether written in C or Java. "I can put together a Cocoa interface in short order and hook it up to existing code. Functionality implemented in C is very easy to get to; the same is true for Java. And of course that means that for applications written under OS X, only the front-end is specific to Apple. All the back-end logic is cross-platform portable."

There's another reason Davidson thinks many Unix programmers are moving to Apple: the sex-appeal of the Titanium laptop. He likes the machine so much that, leveraging its instant wakeup feature, he has dispensed with his palmtop.

Sidebar#1 : A conversation with Matt Henderson, Technical Lead for Metrowerks' CodeWarrior Mac OS development tools.

Metrowerks CodeWarrior is one of the best known integrated development environments for Mac OS, used for building some 90 percent of Mac OS applications, according to company estimates. CodeWarrior for Mac OS supports C, C++, Objective-C, and Java; the Carbon and Cocoa frameworks; Metrowerk's own PowerPlant C++ class library; as well as Classic Mac OS applications. The company is owned by Motorola and has a large Japanese following; after North America, Japan is the company's largest customer base. I spoke with Matt Henderson, the technical lead engineer CodeWarrior for Mac OS by phone from Austin, Texas.

How has Mac OS X impacted your customers?

Our customers, the ones that have been serious about Mac OS, have used CodeWarrior to transition to Mac OS X. It's obvious to us that Mac OS X is the future of the platform and Classic Mac OS is no longer going to be commercially viable.

Is that what Steve Jobs "buried" on stage?

Yes. Essentially what Steve Jobs was saying is we are ceasing our investment in Mac OS 9. All Apple related investment into the platform will be based on Mac OS X solely from now on.

Did that bury Classic with it?

No, I think they'll keep the Classic layer within OS X around for the foreseeable future just because some people have legacy software that will never be ported. If you're not using it, it doesn't hurt the system in any way; but if you need it, you really need it.

Are your customers typically using CodeWarrior to work more with Carbon or Cocoa?

The majority of our customers are targeting Carbon right now, simply because most of them came from a Classic Mac OS development background. These are the people that were building Classic Mac OS software before and migrated using Carbon to Mac OS X.

What are the advantages of going with Cocoa?

It depends on what you like. If you'd like an Objective C language, if you're comfortable programming in an object-oriented environment, and you don't have any legacy code based on Classic Mac OS, then Cocoa is probably a good solution.

You have said that Carbon had one disadvantage in that it was dependent mostly on QuickDraw.

If QuickDraw had disappeared, there would have been no chance of people porting to OS X because Mac applications heavily use QuickDraw. But Apple chose not to initially expose the core graphics APIs---that is, "Quartz"--- to Carbon developers. They are now fixing that with some of the new APIs they are introducing in Jaguar, so that gradually, Mac OS developers who have a lot of QuickDraw code will be able to move to Quartz.

When OS X was first released, speed was a problem. How much has it improved?

Speed significantly improved under 10.1 we expect performance to get better with 10.2. The truth is that everybody is learning about performance under Mac OX X---including Apple.

Is 10.1 speed good enough?

Absolutely. I've been using 10.1 every day since before it shipped. It's more than usable, but you always want more speed. There's no such thing as a software that's fast enough.

What Jaguar features matter most to developers?

I don't think that there was any one big story about Jaguar. If there was something that mattered most to developers, it was that Apple has finally stopped constantly hectoring them to port to Mac OS X--- and is now again advancing the state of OS technology. For the past two or three years at the WWDC, all of the material was focused on persuading developers to transition to Mac OS X and how Mac OS X was now finally equivalent to the familiar Classic Mac OS. This is the first WWDC where Apple has had a heavy emphasis on new technology and how Mac OS X is going to look beyond version 10.1.

What does Jaguar represent?

Faster performance, the cool new Rendezvous ZeroConf implementation, even more of apps with I-chat, and a generally improvement of what's already there.

Jobs said he thought they were two years ahead in terms of graphic support. Does that matter?

I think so. This is really another performance issue. Jobs is saying that we'll see 2D visual effects not possible on other platforms---because they've integrated their 2D layer so tightly with OpenGL and with the hardware.

How are programmers adopting to the Aqua interface?

It has presented some challenges. Basic "Carbonization" [going from Classic to Carbon] of your applications is pretty easy. But after you get it running, making it look and feel like a native OS X app takes quite a bit of work. Virtually every user interface element on OS X changed its size or shape, and in some cases, changed its behavior. So you have to go through and evaluate your user interface and tweak it to look right. That involves possibly resizing and rearranging things and adjusting the behavior per some of the Apple interface guidelines.

From your point of view, how is OS X playing in Japan.

I think the Japanese are very excited about improved localization support that Mac OS X offers. Apple has licensed some great Kanji fonts and has also made it easier for developers to localize their applications, so I think the Mac OS X will bring about more localized Japanese Mac OS software. And the localization capabilities of Mac OS X are pretty much inherited from NextStep. That's helped us, as well. We have a Japanese office that pretty much runs itself. We deliver them the English version of the product, they localize it and handle all the sales and marketing in Japan, and they are very successful.

Sidebar #2 Jaguar Features

Jaguar--Mac OS 10.2---is due to ship in late summer 2002. Features include:

  • iChat: an instant messaging program based on AOL Instant Messenger (AIM). The service works through, Apple's Web-based e-mail service.
  • Address Book, a built-in contact information handler. It supports vCard---an electronic business card format---and can exchange information with Bluetooth-equipped devices. The feature can also identify incoming calls if subscribers pay extra for a feature known as "Caller ID."
  • Sherlock 3, the third version of Apple's Internet search utility.
  • Spam filtering: Apple's latest entry into the spam arm's race, that blocks on content as well as addresses.
  • Rendezvous: a standards-based utility for simplifying network configuration using both wireless and wired nodes.
  • Fast Find: An adoption of the search engine found in Apple's iTune digital music program for Address Book and Finder.
  • Quartz Extreme: Hardware-based graphics acceleration using a supported video card, such as models made by nVidia, ATI Technologies, and AGP Radeon.
  • QuickTime 6, with support for MPEG-4 compression.
  • Improved access for people with vision problems. Users can magnify the screen and translate selected text into audio.
  • Handwriting recognition when using an input tablet.
  • Additional Unix support, including a GCC 3 compiler, CUPS (Common UNIX Printing System) support, POSIX additions, and IPv6 (Internet Protocol Version 6) and IPSec (IP Security Protocol) networking.