Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2000-101
$eventId
ID of event: wwdc2000
$eventContentId
ID of session without event part: 101
$eventShortId
Shortened ID of event: wwdc00
$year
Year of session: 2000
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC00 • Session 101

Open Source at Apple

Mac OS • 52:53

An update on Apple's commitment to the Open Source community, covering the status and plans for Apple's Open Source projects including Darwin OS, Darwin Streaming Server, and OpenPlay/NetSprocket, and highlight the developer opportunities they provide.

Speakers: Brett Halle, Wilfredo Sanchez, Dave Zarzycki, Chris LeCroy, Joe Gervais, Randy Thompson, Ron Hayden

Unlisted on Apple Developer site

Transcript

This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.

Good afternoon, everyone. We'd like to welcome you to session 101, Open Source at Apple. Here to begin our session, won't you please welcome the Director of Core OS Engineering, Brett Halle. Good afternoon. Hope you've enjoyed the couple of sessions so far today and getting engaged in Mac OS X. I want to spend some time this afternoon and talk a little bit about what we're doing with Open Source at Apple. In particular, we'll spend a few minutes going over some of our key Open Source projects: Darwin, which you heard a lot about this morning, but there's also sessions later today going over some of the technical details.

Streaming Server Technology for streaming QuickTime content over the Internet, HeaderDoc because all that great source actually needs to be documented, and OpenPlay/NetSprockets for some of our work that we've been doing in the games arena. And we'll talk a little bit about where we're going with Open Source at Apple, and most importantly, because the whole point of Open Source is getting involved, how you guys can participate.

So first of all, as I just mentioned, the whole point of Open Source is that it's a community effort. And we take this pretty seriously, as you'll see in the presentation today, in terms of how we've set up our infrastructure and the progress we've made over the last year, in terms of how you can get involved in Open Source and with Apple.

Open Source really benefits everybody in the community. Certainly, we gain a lot because we're getting a lot of really great technology from the community at large. You gain a lot because you can see what we're doing, how we're doing it, and as you'll see, you can actually see what we're doing in real time, and can actually get involved in helping us make the product better. And obviously, the end result of that is the customer ends up with something that's better, really better than the sum of the parts.

This is pretty new stuff though, particularly for a company like Apple to get involved in Open Source. And we're learning moment by moment and working with you on trying to improve. So it's going to be kind of exciting at times, certainly over the past year. We've learned an awful lot about how to do this and how to get better at it. But there's a lot more to go from there and we're really looking forward to making this successful.

You've all heard of Darwin. Steve talked about it extensively in the keynote this morning. You heard it if you were at the Mac OS X overview session this afternoon. It is the core for Mac OS X. And it's really important to note that we're not doing Open Source as a side project. It's not this interesting little experiment off to the side. But the core operating system of Mac OS X is Open Source.

It is one and the same. And I think one important way to help understand that it is our goal and is our intention from the source code that exists in the Open Source community that you can rebuild Darwin, the Darwin Open Source kernel, and be able to replace the Mac OS X core operating system kernel. And it is the same system. We have a little ways to go to get there completely, but this is where we're headed and this is what we technically want to make happen.

[Transcript missing]

Part of the role of the Darwin developer is to partner with you in the process of incorporating changes. We really want to involve not only our engineering team, but the Darwin developers in the process of being able to take the changes that you make to the code or suggestions that you have or bug fixes that you have and incorporate them back into our source tree.

These folks will be coming up on stage a little bit, but I'll have them wave their hand in the air a moment and tell you a little bit about some of the Darwin developers we have currently signed up. Joe Gervais is the president of Naked Mole Rat Software, kind of a novel company name. I'd be interested to find out where you came up with that.

and basically he's a small game development house striving to match the quarterly losses of a large dot-com company. This is his description here, so I figured I'd pass that on. Anyway, in his copious spare time, Joe is the tech lead for OpenPlay and the NetSprocket technology, and he's got some great stuff to share with us a little later in the presentation.

In the streaming server space, Adrian Sun, who's a developer at Cobalt, and is actually an author of Apple Share support for Netatalk. Those of you who have been involved in the BSD community and in the Linux community should be familiar with Netatalk. It's an Open Source package that lets Unix machines supply Apple Talk print and file services.

He's been involved quite a bit in providing various bug fixes and porting effort to the Darwin streaming server. Judy Tang has been driving NT platform support. She's a senior software engineer at I-Beam and has actually been responsible for making sure that we have Darwin streaming server on NT. In the Darwin OS community, there's Scott Anguish.

and Scott Gawin. Scott is an editor for Stepwise and is also an author of a number of Cocoa Utility applications and examples and stuff, things like the OpenUp utility. John Carmack, I think everybody should be familiar with. I think there was all sorts of blood splattered across the screen this morning from his company. But he's been actually involved not only in bringing great games to Mac OS X, but in working on getting X11 up on top of the Darwin OS codebase.

Luke Howard is actually -- is Luke here? and Luke Luke was an intern at Apple a couple of years ago and worked on NetInfo. He's going to school down in Australia. He's been involved quite heavily in importing NetInfo to the Linux platform and making a number of other enhancements and bug fixes to NetInfo. Andrew Stone has been around in the Next community forever. He wrote the first Next Step app and Rhapsody application. As I understand it, he throws really cool parties, so you want to make sure you get invited. He's working on Core Foundation.

We've had a number of contributions to the Open Source activity. I'm not going to go in detail over this, but we just did a small sampling of some of the stuff that has come in just over the past really few weeks, a couple of weeks here. So, this is a little bit of an example of what we're doing.

We're working on a lot of new stuff. We're working on a lot of new things. We're working on a lot of new things. We're working on a lot of new things. We're working on a lot of new things. We're working on a to give people a moment to look over some of the stuff that's been done.

I encourage you, actually, to go to our website and get some of the details around some of the work that's been going on. So we have a number of things to show, so I'll get off the stage here and let the real engineers tell you about what's happening. First will be Fred Sanchez, who's going to talk a bit about what we've been doing with some of the support infrastructure for Darwin in open source, as well as talk about what we've been doing with Darwin itself, the OS code.

Chris LaCroix will be coming up and talking about streaming server developments and activities. Joe Jarve will be talking about OpenPlay and NetSprocket and has some cool stuff to show. And Ron will be telling you a bit about what HeaderDoc is and how to get involved with that. And afterwards, we're going to have a Q&A panel, so if you have some questions about what we're doing with open source and how to get involved, save your questions.

So without further ado, Fred Sanchez is a manager -- sorry, a manager. Not yet. An engineer within the Core OS team. He just thinks he likes to be a manager in the Core OS team and has been one responsible for a lot of the great activity that's been going on with Darwin.

Howdy, so I'm going to talk about two things mostly. We're going to talk a little bit about the stuff that makes Darwin and the other Open Source projects go, and we're going to talk about Darwin the OS itself. And then at the end we're going to have a little bit of demo stuff.

First let's talk about our source code. We maintain all of our source code in CVS. That's actually all of Mac OS X from kernel all the way up through Carbon in Apple. And we have a repository that contains nearly all of the Darwin code which is available outside of our corporate firewall. And you people as part of the developer community can access that source code at any time. That's actually two repositories. There's a read/write one and a read-only one, but they have the same data on them.

Internally at Apple, we've got our internal developers and they do the majority of their development on that external repository. So as we make changes to the third party stuff like Apache and whatnot or into NetInfo, that gets checked into that repository and is available immediately to our developer community. We also have actually a whole fleet of internal CVS servers. But for CoreOS, we've got one that we maintain some of the code which is not open source there. And we also maintain a couple of projects which are open source but are pushed out as snapshots.

The kernel is the best example of that. And the reason is that we've got parts of the kernel that support hardware that may not be announced yet. So the Power Books that most people have around, you know, we had support in the kernel there a while ahead of time in order to get the testing done. But we don't want to pre-announce what all the features of the hardware might be. Since they're changing and, you know, we like the surprise factor of all that.

So the kernel gets developed internally and then periodically we push out the kernel contents to the public repository where we filter out the few small things that we want to keep private. That also includes things like drivers which are licensed from third parties such as the adaptex driver is kind of the best example where we don't own that code so we can't open source it. But the majority of the Darwin code lives primarily in the external server.

We also have the Darwin developers, which Brett mentioned, and they all have access to the same repository. So they either work with the Apple teams in order to get their code integrated and reviewed, or they talk to us and then they commit it themselves to the external repository. Note that Darwin developers, that orange bubble actually encompasses the purple bubble. That I as an Apple employee and everyone who works in the CoreOS group is a Darwin developer.

And we're all sort of part of the same one whole large team. As a member of the double LL community, you can either coordinate with the Darwin developers if you're making changes that you'd like to see put back into the original code base and eventually into Mac OS X as well. Or you could go to our website and submit directly into a submission web form where you could give us the URL to your code. And we'll review that and stick that into the source repository.

We recently added a bug tracking feature that should be going live tonight. You can submit bug reports through a web form that we're working on. Internally at Apple, we use a bug tracking system called Radar. It's very pervasive to everything we do. We manage all of our source code changes through this Radar tool. Whenever we're going to change something, somebody follows a bug, describes what we're changing, how we changed it, why, what the risk is, and so on. And then before each release, we review what things we want to put in and roll those out.

And so one thing we're going to do is we're going to query that data and take out the stuff that's relevant to Darwin and push that out on our website as a report. So everybody can go in and see what's going on in the CoreOS group in terms of what bugs we're working on, what their state is, who's working on them, what's been done so far, why it's still in whatever state it is now. And that's actually a very good tool, especially if you're a third-party developer and you've submitted one of these bugs and you're like, "I really wish that we'd fixed blah." Well, then you can actually see what's going on there.

Darwin developers, the registered folks, are going to have a special web access so that they can actually edit and review these bugs and we can assign bugs to them and so on. So that they can basically have the same level of access to the radar database that we have.

Quick summary, our website, apple.com/darwin or www.publicsource.apple.com, has all the information you need about how to get started with Darwin, where to download it, what resources are available. The CVS repository is also documented there and it's also available via a web interface so that you don't have to actually use the CVS tools and check out all the source code. You can actually just browse what's in there using a standard web browser.

We've got a pile of mailing lists and these are very important. If you want to be part of the Darwin community, you want to become one of these Darwin developers, you want to contribute, really you need to be active on these mailing lists. Several of the Apple engineering staff are already subscribed to these lists and we listen to everything that goes there.

We respond to as many of the questions as we can. We've got people in the file system group, in the kernel group, in all sorts of parts of the Core OS that are paying attention and actually respond to a lot of the questions that come out on those mailing lists.

Bug tracking is already mentioned and you can get more information about that on our website. And our Darwin developers are of course one of the best resources we have. If you want to talk about getting something into the system, come to me, come to Andy, come to Dave, whatever, and we'll help you figure out how to get your changes integrated into the system.

Darwin 1.0 shipped in April and since then we've actually had a great deal of response to it. We've had a lot of downloads as Brett mentioned. We've also had a lot of people start to submit bug fixes. Prior to 1.0 we had a system that was not based on the latest development stuff that we're working on. So a lot of people were somewhat discouraged about working on a kernel that we're going to toss out most of the code to.

So now that we've got the thing that's going to show up in Mac OS X that's going to ship in mass volume come summer and then in January, that's the code that's out there now and people are already working on it. 1.1 of Darwin is what's in DP4. You've already got that. You can start working on Darwin 1.1 today. We'll start a build of a standalone Darwin system after the conference, so in a week or two you should expect to see a 1.1 download available from the web.

Kernel updates, as I said, aren't immediate. So we have to synchronize the kernel every so often into Darwin. We did a sync just last week of the 1.1 source base. And we'll start doing those more regularly. It took about a month to do that first one and that's on the long end of how often we want to do updates. We're shooting to do them more on the order of a week.

and hopefully even more often if we can get away with it. I'd like to mention that Darwin is a cross-platform OS. It was a... of course we're on a PowerPC, that's what we base Mac OS X on. And OpenStep, which is where we got a lot of our code, ran on a whole bunch of platforms. It ran on 68k Next Hardware, it ran on Intel, it ran on Spark, it ran on HPPA. The Intel code is all still in there.

One of the things we'd like to see is to see Intel brought up and deployed and installable in an easy way so that people can actually develop on that and thereby grow our developer base. Additional platforms are certainly a possibility. We'd probably like to see two before we take on twelve. We've had queries about Alpha and Intel's new stuff and whatnot. So that's certainly all available. Currently, when you install Darwin, you need to wipe a disk.

and many more. I think we're going to start all over. It's suboptimal. One thing we're shooting for is to use this depackage tool which comes from the Debian Linux community. That allows us to upgrade individual components of the operating system one by one. It's a clever thing because when you update one tool, it might know that you also need a version of something else.

If you update Emacs, the system framework has to match the same version that Emacs was built against, otherwise it doesn't run. When you update Emacs, it will also update the system framework. These tools are still underway. They're partly built into Darwin now, but we need to do a lot of cleanup and get them working so that eventually you'll be able to update between 1.1 and 1.2 and so on without having to reinstall the whole OS. In fact, it should be as simple as say, "Go get me the latest version of Emacs." It should go out on the net, fetch it, download it, install it.

"Oh, you need also this other stuff. Get that, download it, install it as well." System installation should be improved. improved greatly by using tools like this. Stan Shebs, who's our GCC guy, isn't in town today so I'm covering for him. In DP3, GCC was version 2.7, we had a version of EGCS in there as well, and the combination of the two was the compiler.

In DP4, we've got a later version, 2.95, and in both cases we've got a whole bunch of Apple hacks that are in there. Those are pretty extensive. There's a whole bunch of Objective-C support that dates back to the next days. There's the Mako runtime support. There's support for PowerPC and Objective-C++, and of course the new Velocity Engine work that we're doing.

Going forward, one of our big goals is to get all of that stuff synchronized with the code that the FSF has. One problem that we have is when we update GCC from one version to the next, it takes an enormous amount of work to reintegrate all of the patches that we've been doing every time. So it takes a long time for us to update the compiler. It's a lot of work. And so we can't really do it every time a new version of GCC comes out.

So if we manage to get most of the diffs back upstream, then we don't have to do all that work every time. And so we're working now with the FSF to assign them copyright to the parts and do all the right stuff so that we don't have to keep doing this work over and over again. Of course, we're working on improving the object output so that it's faster, as well as increasing the performance of the compiler itself. We have a technology for doing pre-compiled headers, which is something that's being talked about in the GNU community.

And we actually have something that's a little stronger than what they've been discussing. So one thing is to work with them and see if what we have is appropriate for them to take. We'd like to synchronize a little better with the GNU C++ ABI, just so that life is a lot easier. Objective C++ is sort of a hot issue lately.

We're probably going to retire that. The number of clients we have for it is very small. Supportive for it is very complicated and involved. And it's just getting older and cruftier and harder to maintain. It's just not really working out. So that's probably going to go away. An interesting project is to consider merging or somehow reconciling the Objective C runtimes between the GNU one and the next one.

They forked a long time ago and they're not really compatible at this point. So it would be nice if output from one compiler worked with the output from the other compiler. And of course, we'd like to update to GCC3 as that becomes available. So with that, I'd like to invite Dave up so we can do some demo stuff. The demos are cool.

[Transcript missing]

It's a standard console, not the best GUI you'll ever see. In fact, it's the worst. We get the standard host of Unix tools. And as you'll see, This is... That's rather interesting there, Dave. Yeah. And that says i386, doesn't it? Yeah, it does. Huh. That's weird. Maybe we should reboot. It must have been a bug. Yeah. That's a virtual PC on Darwin. Yeah. So as you can see, we're running on Intel.

So this is a pretty recent milestone for us. We've got an Intel machine back here, and you can come back and look after the talk if you don't believe us. But we've got the whole system stack running there. That's the kernel working. That's rooted on HFS, isn't it? No, this is on UFS, actually. It's on UFS. Oh, well. We're close.

But there you go. The whole thing on Intel, and it's pretty sexy. But not an impressive demo, so we're going to go to something else, which is a little more interesting. I'm happy to say that last week I thought X would be an interesting demo to see, so I started with CarMax port of X11 to AppKit, and I ported it to I/O Kit, which was pretty quick and pretty easy, and we have the whole environment here.

So it'd be nice to see some other things running here. This version of X looks rather '80s-ish. It dates itself. But it works. We hope to make the changes available so people can start playing with it. So this is pretty significant because we're going, we had an export that John did which ran on using the Interceptor API in Mac OS X server. And this is actually now talking natively to the I/O Kit in Mac OS X. So this is running without any help from the graphic system that's in Mac OS X.

And one nice thing to do after this of course would be to get it to work with the graphic system in Mac OS X so that you could co-locate X apps with Mac OS X apps. And that will help people with their porting work from Unix to OS X and so on and so forth. Which is not to say that Apple will support X11. But it will help people with porting. So that's cool. Thank you Dave.

Thanks for you guys to think about. Hopefully. Now that Darwin 1.0 is out, there's a lot of opportunities for people to work on stuff. Device drivers is sort of a great thing for people to work on, especially on the Intel platform where we actually have very few supported Intel configurations. We've got kind of like APC that works, but there's a whole bunch of hardware out there in the Intel space that we don't have support for. And similarly, back in the days to support older Macintosh platforms, we'll also need some additional driver support and platform support.

NetInfo is our directory service in Mac OS X and it's part of Darwin. And one nice thing about that is that it can be ported to other platforms, which means that once you've got that, then you can have a distributed directory service that works in a heterogeneous network so that you can administer them from a central place and everybody's got the same user accounts and configuration information.

We'd like support for various file systems. There's work underway for Arla and Sara, who's not here today. and many more. We're also working on supporting Mac OS X. X11 is something we'd like to see more work done. This demo is cool, but there's a lot more that can be done to support more toolkits. Also OpenSSH, which is a secure communications tool, which is actually pretty important to us because we use it to access the CBS repository.

That's a good one because it has a free license and we like it. So there's a whole bunch of things you can do. Of course, this list is by no means exhaustive. If you're interested in getting involved, please get on the mailing list, please start talking to us and let us know what you're thinking about.

Sessions that you might be interested in going to. There's a Darwin overview across the hall after this session. There's an I/O Kit overview tomorrow, and there's networking also tomorrow. Of course, these are all components of Darwin, so they're all interesting. And the file systems talk is Wednesday, which is Clark's talk.

Don't miss that. Birds of a Feather session is Wednesday, so we can all get together, hang out, and do some sort of free-form discussion where it's not just me spewing up here. Kernel Talk Thursday, Feedback Forum Friday, and I'm doing a talk on BSD support in Mac OS X, which is sort of a general OS overview for the Darwin side of things, Friday at 3:30. So with that, I'd like to hand off to Chris, who's going to talk about the Streaming Server.

Thanks, Fred. So I'm going to talk real briefly about what we've been doing with the streaming server for the last year. So, starting with last year, we came out with the initial release of Darwin Streaming Server on Mac OS X. And that was pretty big news. It was the first open source, totally open standard, free streaming server on the planet. And a year later, it still is.

With 1.02 we announced a re-added support for Linux and FreeBSD. And soon followed that with a 2.0 release that added support for Solaris. And last month we announced support for NT, which should be ready in just a few weeks. We're still kind of cleaning that up a little bit.

So another thing we did with the 2.0 release is we added a plugin architecture to the server. And we realized early on that developers were going to want to be able to extend the server, and we figured that if we just left them with Open Source, they would hack the server up and it would be a miserable mess for everybody, so we added a plugin architecture.

And two of the goals of that architecture were that it be easy to use and that it be high performance. So with that in mind, we decided to eat our own dog food, and we re-implemented nearly all of the functions in the server as plugins. So like the video on demand support, the live streaming support, the logging, the authentication, all that stuff is done as plugins.

So that's definitely the preferred way to do any enhancements to the server. And if you want to check out the documentation, it's part of the source code downloader. You can either download or get into the CVS tree. Another thing that happened is the server became extremely popular. Some of the biggest names in internet content hosting picked up the server. Digital Island, for example, has announced that they're going to deploy the server on 6,000 SunBoxes.

Akamai has been running Linux versions of the server for over a year now. So Akamai, if you're not aware, they host all of Apple's QuickTime TV content. Interview, they do hosting for CNN's streaming content, and they've had the server running on Linux boxes as well. And then iBeam just recently has begun deployment across their network on NT machines. So there's a pretty good reason for why these guys are all deploying, because there's a huge amount of demand out there.

So in the last year we've had over 36 million downloads of the QuickTime 4 client. And on top of that, every month over 200 CD-ROM titles ship that contain the QuickTime 4. So there are a lot of reasons for supporting QuickTime. So, get back to the plugins. So with that size of installed base, there's obviously a bunch of money to be made out there.

And the plugin API provides that opportunity. It allows you to create value-add products on top of the streaming server. Some examples might be a turnkey solution for internet streaming on the radio. Radio streaming. Internet streaming for radio stations. Another one may be like a full-featured ISP solution that contains back-end database support, account management, bandwidth, and disk quotas, and things like that.

Those are things that we're probably not going to do in the near future. So there's a huge opportunity to take care of those things, or to develop those as your own products and sell them. One thing I should mention is that, so plugins are a little bit different. They don't fall under the APSL, Apple's Public Source License.

And what I mean by that is that Apple Public Source License requires that if you modify any Darwin source code, that you need to post that back to Apple, and then we'll eventually post that back to the world. Plugins don't start out as Darwin source code. They start out as your own source code, and they just happen to call an API that's in the Darwin streaming server.

So they remain proprietary. You can keep your competitive advantages, and you can actually create your own products that way. And we really want to promote people starting with the Darwin streaming server and creating your own products, branding it as your own product, and selling it as your own product, and making a bunch of money, and helping to propagate QuickTime. propagate quick time.

So a couple of the things we've got planned for the future. We're going to add a pluggable file system layer to the module API. And by that, what I mean is you'll be able to write a module that will effectively replace the file system as far as the server is concerned. So an example of that may be that you want to write something that treats some high-speed database as the file system.

You drop that into the server, and all of a sudden, the server and all the modules that make file calls will retrieve all of their movies and information and any other file out of that database. Maybe you've got a distributed network file system you want to get it to work with, that kind of thing. So that's the first thing.

The second thing is we plan to do a web-based admin for all of the Darwin platforms. Currently, the only GUI that we have is on Mac OS X server and it's an application that runs in the yellow box of Mac.

[Transcript missing]

The next step is to add functionality or create your products under the Darwin Streaming Server.

You should be able to drop that stuff right in and it'll just mix in as a part of the UI for and other developers. Thank you for your time. Let us know. The best way to contact us is through the Darwin Streaming Server developer mailing list. You can go to lists.apple.com and sign up on that. And for any other information about the streaming server, just go to www.apple.com/darwin.

A couple of sessions before I go that you might want to check out are the QuickTime Streaming Web Techniques session, which will be tomorrow at 3:00 in the Civic. And at 4:30 in the Civic, there will be a session on how to write streaming server modules. In fact, I think the engineer doing that session is probably going to write a module right up on stage just to show how easy it is.

Also, we'll have streaming server engineers at the QuickTime Feedback Forum and at the Darwin Birds and Feathers, so if you want to stop by and say hi or ask us any questions or provide your feedback, we'd be happy to talk to you. And that's all I've got to say, and I'd like to pass off to Joe.

Thank you very much. Randy is setting up an interesting demo for when we finish up here. For those of you that don't know, OpenPlay and NetSprocket are the Open Source networking items.

[Transcript missing]

and we've been making some good headway with it since. NetSprocket just became Open Source. You might be familiar with it out of the GameSprockets package that Apple's been supporting for quite some time. And we got that in December and when I finish up here, Randall will show us some pretty exciting developments in what we've got.

Do you have the screen? OpenPlay right now is live, active, ready to go on a CBS repository. You can download it, compile it, Mac OS and Windows, it runs right now. At least one commercial title, I believe LucasArts shipped a title using it in December in time for the Christmas market and it's gone over quite well. So it's real, it works, it's effective. It is cross-platform. Right now the Linux and OS X variants are still in the works, but we've got pretty good coverage at the moment. It's protocol agnostic. It uses a plug-in module design.

which has the advantage of giving your user the choice of which protocol they'd like to use. If you're using a game market, for example, very few home users are that adept at setting up a TCP/IP network, but they can get AppleTalk up and running. Using OpenPlay, you don't have to worry about how you're going to support the lower level protocols. You let us worry about it and let the user choose. So it cuts down your risk, increases your time to market, or reduces your time to market.

[Transcript missing]

Which was really nice.

I'll get to it in a bit when NetSprocket was released. We'll be able to leverage some good things. But basically you have the application,

[Transcript missing]

With NetSprocket, we had some really nice things that we wanted to have in OpenPlay, but we didn't have the resources at the time to get, and we were anxious to get it released into the community. When we found out it was possible to do so, we jumped on it. It is multi-protocol, TCP/IP and AppleTalk, through OpenTransport.

It does some of the higher level functions, packet management, player management. As APIs go, it's quite simple to work with. The only disadvantage was it was Mac only. There are larger markets out there that if you could leverage, you may as well. Between OpenGL and OpenPlay, those two right there can cover most needs of many applications.

Why not expand your market essentially for free or as close as you can get? So what we've been doing, Randy in particular has been busting butt and he now has NetSprocket sitting on top of OpenPlay. So we basically got the best of all worlds at the moment. We have, if you want to use it, the higher level functionality of NetSprocket sitting on top of the cross-platform nature of OpenPlay.

I have a working demo in about a minute here. The reason it's exciting to have this out there is, again, The cross-platform development between NetSprocket, OpenPlay, OpenGL, and other technologies, there's really no reason not to target multiple platforms. It's better for the Mac environment, it's better for everybody.

The developer community has been very good at supporting us. More names than we can mention at this point. If you want to sign up and join us, we're ready to roll right now. We've got a lot of changes coming up. We've got a critical mass momentum. We'll be finishing up Linux shortly and then Mac OS X. And from there, anything we want.

So as it stands now, you can either write with your application straight into OpenPlay if you don't choose to use the higher level functions or use NetSprocket. The one problem OpenPlay has is its name. It's not necessarily just a gaming API. We've got people interested in medical imaging that would like to use it and plan to.

Because really it's just sending bytes using a single API, again cross platform. Advantages for a lot of people. and with that, Randy Thompson, agent of Freeverse Software, would like to show off the wares he's been working on. Things don't blow up, but it shows things working and I happen to think it's kind of fun. Button three.

Play a game, Joe. I'll let you know when to hit any menus or buttons or anything. Gonna play some cribbage. This is a game that I released with Freeverse Software. Say thank you Ian, wherever you are. Oh, around the November time frame. Let's just go ahead and do the NetSprocket OpenPlay demo host game.

and there I am, Randy T., waiting for other players. So now Joe, if you'll hit Demo Join Game. And there's Joe. So why don't you just click on the screen once. and we're shuffling the cards and ready to go. You can also chat. Joe could too if he wanted to.

and Joe Gervais. So without real, let's just hit two cards at random there, Joe. Uh, yeah. And now it's your turn, just go ahead and hit a card. You can see that we're really playing here, Joe and I. I really wish we had time to play an entire game here in this demo because I think I could kick his butt. But it doesn't look like that's going to be possible, so I'm going to choose a restart game. and Joe LeFranco, and we're back in a mode where we can accept new players. Okay Joe, you're free to go now.

Let me tell you a little bit about what I did here. Classic Cribbage was released last November and originally it used NetSprocket 1.7. A few months ago I downloaded the OpenPlay and the NetSprocket source and I started to work replacing the open transport calls inside of NetSprocket. There were plenty of them.

I pulled them out one by one and replaced them with their equivalent OpenPlay calls. In some cases there weren't equivalents so I had to get a little bit fancy and tricky and hopefully I don't have too many bugs. But now we basically have a new NetSprocket that sits on top of OpenPlay as the diagram showed.

Look, Mr. PC just joined. I guess he was there for a little while. Joe, why don't you ask me a question? Ask me how these folks can be sure that this cribbage isn't just using NetSprocket 1.7. Randy, how can they be sure we didn't can it just for the demo? That's a pretty silly question. How you can be sure is Mr.

PC here is actually an OpenPlay application that's running under Virtual PC on this laptop right here, right now. So it's actually a Win32 application running on Virtual PC that just connected with this game. Unfortunately, due to technical difficulties, we couldn't get a video feed on this old laptop here, so you'll just have to trust me.

If you don't want to trust me, you're welcome to show up on Wednesday at Birds of Feather and you'll be able to see a lot of this. We'll have a lot more time, I understand, to do things like that. So that's pretty much the demo. I think we have one more slide. Switch over to one.

Thank you very much Randy. So as you can see it's real, it's in the real world, it's running, companies are using it. It's a good thing. If you can get to the birds of a feather, I'd strongly encourage it. Obviously, we're no better than our group of developers, which is all of you.

So the more people that can contribute, the further we can get along. And again, it's not just games, it's networking in general. And maybe use it to roll into your own web company and start an IPO before the market dries up. Please make it if you can. With that, I'll pass it over to Ron Hayden who will be doing the session on HedrDoc.

So you saw earlier there are 80,000 hits on Darwin and 600 on HedrDoc. So one of my jobs, aside from getting people to contribute, is to get people using it. Frequently, as important as the source code in any Open Source project is the documentation. And we're very serious about documentation in Darwin.

So we're starting on a program of making sure the documentation is as close to the source as possible. And the first project for that is HedrDoc for reference documentation. Now why would you want to use HedrDoc? Well, you can go to an Open Source project not using a tool like HedrDoc and get bad documentation.

Or you can go to a Darwin project using HedrDoc and get great documentation. What you get from it, with no extra work, is, in this case we have one of our I/O Kit classes. All of our I/O Kit reference documentation is done using HedrDoc and accessible in the source.

We take the I/O Kit class, we break it down into its introduction, its public functions, its protection, its data types, etc. Give excellent formatting of parameters and everything else. For all the work that you have to do is stick in some tags like this. So we support C and C++. We stay as close as we can to Java doc style, but we have to vary from it because these are different languages and this is a different tool. And you use that and you get the output that you saw.

[Transcript missing]

Also, we find one of the main requests we have from internal developers as well as external is they want the API grouped and ordered. So if you have display functions, you want all those display functions together, and you want the most commonly used ones at the top, etc. So we would love to get some assistance in making that happen.

Finally, and this is already started thanks to Lewis Gerberg, we would like to be outputting XML. Right now we go directly to HTML, but it would be great to go to XML because then you can choose what format to go to from there, you can go into a database, we can do lots of cool stuff. So we have some work on that started, but there's a lot to do for that and it would be great to get some assistance. But the number one thing anyone can do is just start using it on your project.

We would just love to have everyone using this on all of the Darwin projects because that is really going to make this thing take off and it will be really good for everyone. and yes, we have Birds of a Feather in room E at the same time as everyone else.

So, I think a couple of important messages we want to leave you with here. Apple is very committed to Open Source. We have a lot of technologies and things we shared with you today. We have some external partners who we've been working with. We'd like you to join with us in working on our Open Source technologies.

For these technologies, the source is live in CVS, so if you want to find out what we're doing, this is the best way to do it. Download the source code, get in there and get involved. I'm going to stress again, and you'll hear this a few times through the week, that Darwin, our OS part of our Open Source project, is exactly the same source code as the Core OS for Mac OS X.

If you are involved in Mac OS X, which you all should be, and want to know as much as you can about what's going on, get involved with Darwin, contribute, help learn, get in the right drivers. There's a lot of cool technology in there, and that's the place to start.

Also, help get involved with the support infrastructure. We've got a lot of cool stuff that we've released recently, certainly the CVS stuff. There's bug reporting, there's our mailing list, all of these things, our Darwin developers. These are all resources you should start working with and start contributing to.

This only works if you're involved. It's the whole goal of Open Source. It'd be great if we just, you know, just made this, posted it up on a wall somewhere, but the real key is, is that in order to make this really powerful is to get you involved. So, you know, you've got a lot of great ideas as you're working, importing your projects, as you're, you know, developing cool new technology, you know, this is a place to have an impact on the future of Apple directly. So get involved.

Also check out the to-do list we have on the website and in the mailing list. One of the things that we're trying to do in case you're not really sure how to get started, you want to get involved in this Open Source stuff, it sounds really cool, but don't know what to get involved with first or how to get your feet wet, we've got some to-do lists that give you some ideas. If you've got your own, that's great. But if you're looking for ways that you can help contribute and help make the environment better, come check out the website.

and definitely join us at the Birds of a Feather sessions on Wednesday. There's a great opportunity for a lot of one-on-one communication. We'd love to hear from you and your ideas and ways that we can improve this. As I said early on in the presentation, you know, this is pretty new, you know, a new approach for the community at large and certainly for Apple. And we're learning and are very open to any ideas that you might have.