Darwin • 53:33
In 1998, Apple became the first major computer company to make open source development a fundamental part of its software strategy. This session provides the 2002 update on Apple's open source projects and infrastructure. Meet Apple's open source team and learn how you can get involved with Darwin, Darwin Streaming Server, OpenPlay, CDSA, and other open source initiatives.
Speakers: Brett Halle, Jordan Hubbard, Richard Blanchard, David O'Rourke, Chris LeCroy, Ed Peterlin, Lane Roathe
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. Welcome to the open source Apple and You session. We're going to spend a few minutes today and talk a bit about Apple's open source projects, what we're doing with our open source efforts here at Apple, where we're going to be going from here, and probably the most important aspect of it is how you guys can participate. If you've been following us over the past few years, you've noticed we have a number of open source projects.
We'll give you some status on these and some new stuff as well. To kind of get into that, we have a few new open source projects we'd like to announce today. The first one is Open Directory. This one now joins the rest of the open source projects. Open Directory is our, basically, directory services layer of Mac OS X.
The abstraction layer of the system for dealing with directory service, the interfaces into things like LDAP and NetInfo and a number of other directory service solutions. The next one is CUPS, which is our new common Unix printing system, which is kind of the underlying technology for the new print system in Jaguar.
and a bunch of additional Darwin goodies. Things like IPv6, which is now part of Jaguar, IPsec, and we've also integrated OpenLDAP, NetSNMP, and PAM for some of the security services and such. And there's a number of other projects that have been updated and other bits and pieces of Darwin that are all brand spanking new. And in addition, we've added yet more pieces from Core Foundation.
You know, I've been kind of slowly but surely in CF Lite, that's part of Darwin, and adding more pieces from the Core Foundation and bringing that down into the open source layer. It kind of represents the kind of the insulation layer between the Darwin open source activities and the rest of the Mac OS X world. And so as those, since that line is fairly blurry, we have been trying to bring technologies that make sense down into the open source layer.
Common Data Security Architecture, or CDSA, is one we actually open sourced last year. But it's one of particular interest, and I would hope if you haven't had a chance to get involved in it, you would. CDSA is actually an open group standard, and it's basically the layer that deals with security, number of security features in Mac OS X, specifically things like encryption and authentication in particular.
As I mentioned earlier, just briefly, we now have PAM support as part of Darwin. Basically, PAM is programmable authentication modules, which allow a common way to deal with authentication at the command line. The various tools, things like Telnet, stuff like that, that may need authentication, go through one common set of libraries called PAM. Well, PAM is actually integrated into CDSA, our security framework for Mac OS X, so that there is one consistent set of behaviors for how authentication is done within the system.
CDSA also provides a number of plug-in mechanisms for being able to deal with, again, cryptography, for certificate management stuff, and for key management and other authentication pieces. I think the most important message we'd like to get out around CDSA is that, one, it's an incredibly powerful set of abstractions for dealing with security, and if you are working with code, for example, that uses OpenSSL, CDSA is actually something that we believe should be replacing OpenSSL as a way for doing secure transport kinds of services.
And the reason being is that CDSA allows so many more ways to be able to support authentication and encryption, whereas OpenSSL does a great job of handling the secure sockets layer communication, but doesn't provide very many ways for dealing with different types of security. Certificates are things like smart cards or other types of authentication services. Thank you.
Other technology we've rolled into Darwin includes IPv6 and IPSec. This is actually some pretty exciting work, and we've been working with a COM-A team to actually get this into Darwin. We're excited to announce that the COM-A team will be joined as committers as part of the Darwin open source effort.
The documentation project is another important one which I encourage people to get involved with. We never have enough documentation for all the technology we have. There are some key pieces that we support as part of our open source efforts so you can help out. A HeaderDoc, which is a set of tools for being able to have embedded documentation within source code, within the headers.
I/O Kit uses this heavily so that basically all the APIs and services for I/O Kit are actually embedded in the headers for the source code. And HeaderDoc extracts all that and presents it in an HTML format so it's web-browsable. There's a number of ways that you can get involved in documentation efforts in the open source, particularly in how-tos, helping with things like man pages and XML tools and other things. There's quite a lot of things that you can get involved with.
We've done a lot in Jaguar to bring a number of man pages onto the system, but there's a lot more yet to be done. So, you know, come land to hand. We've, as far as more specific and focused documentation within our documentation efforts, I/O Kit and other kind of bits and pieces of the I/O system have been documented at various levels. There's another of online full documents for these things, as well as a number of kernel pieces and such. So if you haven't had a chance to go check out the site and see what we've got, we've got to encourage you to do so.
So the key thing with open source is it's not just an Apple effort, it's a community effort. And we've been working really hard to create opportunities for collaboration. And there's actually a lot of folks who have been working really hard with us and on their own to help contribute to our open source efforts. In particular, just in the Darwin layer, we've been working directly with the FreeBSD team. There's the work on PAM. A lot of the work of integrating that actually came from one of our open source developers. Of course, Patchy is a key partner.
And then a number of other services. X386 is another key one who has been also working very hard. A lot of folks in the community doing some great work. The Darwin community has actually been remarkably busy in taking Darwin and moving it onto the x86 platform. And in fact, just recently, I believe, we had a meeting with a group of people at the Darwin Center. They've got it up and running now on AMD chips as well.
So if you're interested in playing it open source at the core level, all the Core OS pieces have actually been ported to another platform. The streaming server has also been ported to a number of platforms. It runs on Linux and Windows. And we'll tell you a bit more about that later in the session here. But it's pretty exciting.
It's all over the place. And the same for open play. It's great to see not only the technologies that run on our platform, but also the capabilities that we have. But to really take advantage of the open source movement is to really get them into even broader communities.
I think one of the most exciting things that was just announced last night, if you guys saw the press release, is that the OpenOffice project is being ported to Mac OS X. And we'll give you a little bit more information about that in a little bit. But it's pretty exciting. It's quite an impressive piece of software.
And then I think probably the most important thing from our open source efforts is the fact that last week we helped launch OpenDarwin.org, which is basically a way for more people to get involved in the open source activities. Darwin, our opensource.apple.com efforts have been great for kind of publishing the open source, and we have some great relationships with a number of committers.
But to really make it work, we need to allow it really to be opened up even further, to allow more forms of communication and ways that people can participate in. And OpenDarwin.org really allows the community to help drive the open source efforts in key ways. and we'll talk more about that in a few minutes as well.
So a number of new Darwin committers. Darwin committers are folks that we've established an even tighter relationship and they have right access to our open source repositories and can make changes. And there's folks from the CAMA team, a number of documentation folks who have joined the committee list, and Robert Watson who's actually dealing with the trusted BSD.
There's a whole effort on creating a secure trusted OS platform based on Darwin. - Mm-mm. So we have a number of folks who are going to come and tell you more about the various technologies. And next up on the list is Jordan Hubbard, who will tell you about Darwin.
I manage the BSD technology group at Apple, and we're basically the folks who are tasked with merging all the good bits from free BSD. We also do the official Darwin releases for PowerPC and x86. I'm going to talk a little bit about the evolution of Darwin, and what we've done with the Open Darwin project recently, if this would work.
Okay, oh yes, point it the right way. So, in the three years since we started Darwin, we've gotten a lot of feedback on how the project is run, both good and bad. People obviously really like the idea of Apple doing open source and participating to this extent, but they've wanted more consistent and real-time access to bug tracking information.
They've wanted to have more people be able to change the sources. One thing about the way Darwin is run, which is kind of cool actually, is that you have access to the live CVS repository. So, if you make a change, it's a Darwin committer that goes straight into the active sources that we use to build a product. The downside of that is that you have access to the live repository, and as you might expect, there are considerable controls that are put on this process in order that people not break stuff.
So, there needed to be... sort of a wider access without a complete loss of control, and I'll talk a little bit more about that. Another thing that people have been asking for is more access to project news. They want to be able to put up bulletins when some significant event in the open source space takes place. They want to evangelize and announce their own little sub-projects or working groups. And while marketing has been sort of the sole arbiter of what goes up on the open source website, this is pretty slow to change and pretty tightly controlled.
Um... And they just... Basically, the community has wanted to drive the presentation of Darwin to a much greater extent. They want to determine a lot more of the look and feel and how the project is presented and sort of what face it puts forward. So, that brings us to opendarwin.org, which those of you who read Slashdot have probably read about last week. It basically was founded jointly by Apple and the Internet Software Consortium. But Apple does not control the site.
Apple has basically... Bootstrapped it. It is now run day-to-day by the ISC, however. And the community will essentially dictate how that project evolves. Sorry again. It's... The CVS repository is completely open. So, you don't need to sign any click-through licenses or do anything special to check out sources. You can do it via non-CVS today. If you want to join the project as a committer, someone who has write access, that's a fairly lightweight process.
You go to a little web page. You fill out a form describing what you want to do and who you are. And right now, this is basically... It goes to the opendarwin core team, which has three people to start with on it, who will sort of eyeball it for correctness and goodness and, in pretty much all cases, just to prove it. All the bug tracking news and documentation is now community maintained. So, we've adopted Bugzilla for the time being. If people have a better solution, we're certainly willing to hear it.
Again, the community will drive this. So, we will determine which tools we want to use. We will determine what sort of infrastructure we want to provide. And all of that is entirely outside of Apple's control. We also would like to leverage the infrastructure in interesting new ways as we go along.
So, rather than just hosting Darwin and OpenPlay and sort of projects like that, we would like to look at new projects, potentially. Some people have already come forward, said, "Oh, we're going to do this." Some people have already started saying they would like to have kind of a working area to port KDE to Darwin and be able to collaborate and have their own CVS repository, their own mailing lists. And all of that infrastructure is currently provided at opendarwin.org. So, we can do that kind of thing very easily.
So, sort of a CVS map as it has existed up to now and as it exists going forward. Right now, there's a one-way pool. You can, as a developer, sign up for an account with the Darwin project and have read-only access to the bits, basically the click-through license.
If you make changes, you can either get those changes submitted via a web form, or if you're a Darwin committer, which is one of the select few that can actually write, then... This can either go straight back to the CVS repository if you're a Darwin committer, or somebody at Apple looks at the web form submissions and commits it for you if they deem it worthy.
So now we have kind of an interesting new piece of the puzzle. OpenDarwin.org is a completely separate CVS repository, as I said. And what we're basically doing is we will pull, on an hourly basis, copies of the Darwin CVS repository onto OpenDarwin.org as a reference repository. That will not be the live repository.
That will simply be there close at hand for the convenience of the committers in OpenDarwin. We'll probably also, we haven't done this yet, but we'll probably mirror the FreeBSD CVS repository, NATBSD, OpenBSD, any other reference code bases we think might be valuable or interesting will be available for reference purposes on OpenDarwin.org.
However, the live OpenDarwin CVS repository, which has started out sort of basically being a copy of the Darwin CVS but can now migrate or mutate in all kinds of interesting new ways, will be a two-way street. So the community can commit their changes straight to it. They can pull it. They can have a lot more control over where it goes.
Some of the initiatives we've been working on in Darwin as well are just overall make Darwin and Mac OS X a better Unix citizen. Make it easier to port legacy applications. We've heard a lot of requests for some sort of ports collection. And as one of the original authors of the FreeBSD ports collection, I obviously have a lot of ideas on how that might be evolved. And maybe it's second system syndrome. Maybe it's really the benefit of hindsight at work. I'm not sure.
But my team is working on something along the lines of the FreeBSD ports collection for Darwin right now. We hope it will be a lot more extensible and scalable in many ways. We're also looking constantly at people's requests for more Unix APIs, more standard POSIX calls that might have been missing up to now for one reason or the other. Missing headers, libraries, basically anything people need to be able to port software more easily. And one thing you're going to see in the next development.
Developers CD is something called the BSD SDK, which includes all of the headers and libraries for things that people have been missing up to now, like OpenSSL, for example. If you have a legacy application that uses OpenSSL, you don't want to port it to CDSA. That's no problem. We've got you covered. We'll ship the full headers from now on in the BSD SDK package. Same goes for TCL, Libcurl, Libbzip, a whole bunch of different things will basically go into that bucket. So when you install the developer tools, just click on the custom. Okay. Okay.
And check it off on the list, and you'll get all that stuff now for free. Again, this is for porting legacy Unix applications. Obviously, there are a lot of high-level APIs that you can and should use if you're writing new applications. But this is all designed to make it easier for Unix folks to port their stuff. We are, as I said, actively working on synchronizing with FreeBSD. We've done some major code pull-ups from FreeBSD 4.4 recently. And this is an ongoing process.
We hope to track FreeBSD with far less latency than we have in the past. Darwin was originally forked from FreeBSD 3.2. So as you might expect, there was a lot of work that we needed to do to kind of bring it up to snuff and bring it current. But we have more bodies on this problem now, and we hope to be staying much more closely in sync with FreeBSD and other open source projects as well. And last but definitely not least, we are definitely working on making Darwin easier to build.
And this is another goal. And this is a goal that OpenDarwin Project will be instrumental on, because its developers won't be able to be very effective until they can build the entire system, install it on another system, and sort of have reproducible results. So I hope that the community will get actively involved in this and helping us to evolve that process. Oops.
Some new things that are in Darwin, as Brett has already said. We are fully supporting the Linux slash BSD PAM API. So if you have PAM modules from other Unix systems, they should port straight across. We also have a PAM module for security frameworks, which means there's basically one chain of authentication by default.
It would be pretty confusing if it was a Y shape, so that's not the default behavior. But if you're an administrator and you know what you're doing and you want to have different PAM authenticators, you can plug them in, you can change the ordering, it's all up to you.
We are now a first class Kerberos citizen. We have been working very closely with MIT over the last year to provide a world class Kerberos implementation, a full Kerberos implementation. And we have integrated that into security frameworks as well, so now everything from Telnet to the login window can support Kerberos. And we've updated many, many different pieces. As I say, there was the FreeBSD merge, but we've also updated Apache, SendMail, Emacs, Samba. We brought Samba into the desktop. We've brought in the product by default, so you can do SMB sharing from the desktop.
We've brought in a bunch of additional languages. We've brought in Python. So we're listening very closely to what the Unix community has been asking for and updating those things. And as I said, we're always working on cleaning up the APIs. We basically want to be a really good Unix from a perspective of portability.
We've also been working pretty closely with the X486 project. Tory Lyons, who unfortunately couldn't be here this year, is a Darwin committer and a X486 core team member, or at least a prominent developer. And he has done a lot of work, along with the rest of the X486 team, in making sure that X486 is well supported on Mac OS X. You can now run it on a separate display, or you can run it rootless, which means your X windows show up on the same desktop as your Mac OS X native applications.
And the basic goals, as I understand them, are to work on acceleration now. Phase one was to make it work and make it work well, and now they want to make it work fast. And that goes for both 2D and OpenGL 3D performance. So I'll look for some really interesting developments there. And there are also people who are working right now on better sort of aqua-themed window managers that make it all appear very seamless, whether it's an X application or a 10 application.
Here are some URLs you can go to for further reference. opensource.apple.com remains the canonical Darwin reference site. Well, actually, /darwin remains the Darwin reference site. This is for all sorts of open source efforts at Apple, of which Darwin is only one. We have the opendarwin.org website now, which again will be evolving very rapidly because the community is driving this now. They are checking in changes to the web pages. It's a very, very young project.
It's only been around for a week. I encourage you to check up on it regularly because it will be changing very, very rapidly. Some of our sister projects, of course, are projects that we use: FreeBSD, Apache, Samba, and so forth. The ExxonX project is sort of the codename for XFREAT6 on Mac OS X. You can check that out as well.
Some other sessions you might want to go to. We're having a BOF tonight at 7.30, and so you'll be able to ask me and lots of other Darwin folks questions. There is a feedback forum as well where you can ask a lot of different people questions at 3.30 on Wednesday, and there are various Darwin sessions sprinkled throughout the rest of the week, so check your schedules. Thanks.
Thank you, Jordan. One year ago, we started looking for a printing system for Darwin. The obvious answer was LPD, but just as Darwin is the substrate for Mac OS X, we wanted a printing system in Darwin that would also be the basis for our OS X printing system. And to be kind, LPD just wasn't going to cut it. So we started looking, we broadened our search a little bit, and we found CUPS, Common Unix Printing System. It's written by a company in Maryland, Easy Software Products.
Cups is available under the GNU General Public License, so it's open source, and so we can use it in Darwin. It's also built upon the Internet Printing Protocol. Luckily for us, our Mac OS X printing system was also designed around the Internet Printing Protocol, so we had a nice fit there.
Cups includes strong PostScript printer description file format support. In fact, that's really the core of Cups. We've been using PPDs on Mac OSes going back about 10 or 12 years. So again, a very nice fit for us. Cups includes both BSD and System 5 command line tools for printing.
This was very important to us. We wanted people who were coming to Darwin to feel very comfortable when they started printing. So whichever flavor of Unix you're coming from, you'll find the commands to print that you're used to. Cups is well documented. The Easy Software folks do an excellent job of documenting Cups.
There's a vibrant community surrounding Cups as well. That is also really anchored by the Easy Software folks, but there are other parts of the open source community that also back Cups. The KDE group is one great example, as are some of the different Linux distributions, all backing Cups, all providing support, all providing momentum as it moves forward.
So how can you learn more about CUPS? Well, the obvious answer is to go to the CUPS website. And again, Easy Software supports this website. You'll find mailing lists and newsgroups on that website. There are about a half dozen documents there describing CUPS from different vantage points, be it user, administrator, or developer. So you can go there.
But the best way to learn CUPS is to get the CUPS book. It's written by Michael Sweet. He is the architect of CUPS. It's an excellent book. I own three of them. I have them all over the place. And the Developer Depot folks have been kind enough to stock them across the way for this week.
There's a limited number. If you want one, I'd suggest you get one. But it really is the best way to learn CUPS. Once you've read the source code, read the documentation, read the book, we'd love you to get involved and help us out. Again, this printing system is not only part of Darwin, but also Mac OS X.
So if you help us out with the open source part of it, you'll see some of your changes flowing through into Mac OS X. We can never have enough printer drivers. So if you have a printer that's not supported, don't complain to me anymore. You can go write your own driver. If you have expertise that we don't have or you just really know something, come help us. Kerberos support.
If you understand the different variants of Kerberos printing, please bring it on. Help me out. And log viewers. CUPS is great about logging different things, and there's all sorts of log formats. We'll find things. three or four of them in the system. Log viewers and log filters would be more than welcome.
We're very excited about CUPS. Again, we're excited to have CUPS in Darwin. We're excited to have CUPS in Mac OS X. We want to hear your feedback. So we have the birds of a feather tonight. If you have opinions about CUPS, it's a great place to bring them and let us hear them. There's a Darwin printing session tomorrow. Michael Sweet, again, the architect of CUPS, has graciously flown out here. He'll be giving that session. It's an excellent session. Please do not miss it. He's really done a great job.
There's a Darwin feedback forum. If you have questions about CUPS, please bring them there. And on Thursday, I'll be giving the Mac OS X printing session where I'll be explaining how we use CUPS in Mac OS X. It's not on the slide, but there is also a feedback forum. It's the last session of the conference on Friday afternoon. It's the graphics and imaging feedback forum.
If you have OS X printing questions, please bring them there. So again, CUPS, it's open. Please help us push it forward. It's a great printing system, and if you help us, we can really move it. So please help us out. David O'Rourke is now going to come out and talk to you about Open Directory. Thank you.
Hi, thank you all for coming today. My name is David O'Rourke. I'm working on Open Directory. This is a very exciting project for me. I went directly to Roadmap, wrong way. Open Directory. This is a new name today. It covers both the client access technology, APIs to access the client access technology, and server software.
We feel that Open Directory combines industry standard protocol access, and we think it's just a really, really important technology. Much of this technology has already shipped with Mac OS 10.0 and 10.1, so what we are finally doing is making that core technology that 10.0 has been based on since day one open source to the community so that it can be moved to other platforms, and also just to show people how we do it.
So it's part of Darwin. It's published on the website today. You can go and download the source bases. We'd love your feedback. My team is new to the open source community, so we're just starting to monitor the Darwin thing, and we got questions three years ago as to when we would open source this, and I can say, well, today's the day. So what is Open Directory? The first thing it entails is Open Directory access. That consists of two major binaries. The Open Directory... Mac OS 10.0 directory service process and LookUpD, which has been part of Darwin from day one. It includes directory server technology.
We're integrating Open LDAP with NetInfo for Jaguar, but we also have NetInfo, and that has always been part of the open source technology, so we have both an access technology and a server technology. Apple also ships a number of integrated tools for managing the directory. All of these tools, the desktop tools, system preferences, users panel, all of this Mac OS 10.0 server tools use and are based on Open Directory technology, so these tools can manage any data for which Open Directory can access.
I think a picture might help you understand directory services, which is the standard three-layer architecture. In the blue box, you have Mac OS X software. If you call the directory service APIs, it will figure out which directory system has been configured for access and route it to the appropriate plug-in that you see here in the red dialogs.
What we've open sourced today is NetInfo and the LDAPv2 plug-in. We will be open sourcing a plug-in for BSD ETSI files, and there will be other plug-ins that we'll be open sourcing in the future. If you want to hear about those plug-ins, I encourage you to either speak with me afterwards or, better yet, attend my session on Thursday. That's session 813, and we'll be going into much more detail about this architecture.
So as part of Darwin today, I'm sorry the URL is out of date. www.apple.com.darwin will get you to the Darwin website. Directory services consist of an API framework and a daemon process. That's open source. LDAPv2, NetInfo, and we have a plugin called the Search Policy, which implements how the system goes looking for users in a multi-node directory system. For Jaguar, we'll be open sourcing DSAgent for LookUpD. We'll be open sourcing our LDAPv3 ReadWrite plugin.
And we'll be open sourcing our BSD Configuration File plugin, which is read-only. An opportunity for the community would be to make that plugin read-write. Service Discovery plugins will be open sourced as well. And these plugins allow you to discover services on the network via AppleTalk, Rendezvous, SLP, and the SMB Windows protocol. So if you want to hear more about the Service Discovery plugins, I would encourage you to attend my session on Thursday.
It's not only about directory access, it's also about what Apple's providing as a directory server for our customers. For Mac OS 10.1, NetInfo is included with Darwin and included with Mac OS 10.1. Mac OS, it's part of Darwin. It provides both a standalone and shared network configuration repository, and many people have used this to manage thousands of machines on their network. So NetInfo is open to the community. I believe it's already been ported to Linux and some other platforms.
We're adopting OpenLDAP for Jaguar, so we have two open source, very powerful directory servers that we're shipping as part of both TIN, the retail product, and Darwin. As a roadmap, there's the Darwin Birds of the Feather session tonight. I would encourage you to go to the security and authorization session. Jordan mentioned earlier that our PAM module calls the security framework. Well, the security framework turns around and calls directory services in some cases to verify the user's names and passwords. So that will give you more perspective.
We're also working on how we're tying PAM to the security framework to directory services to allow authentication to be out of any directory system of the customer's choice. There's always the Darwin Feedback Forum. There's my session on Thursday for directory services, and following in the same exact room is the Kerberos session. So I would encourage you to attend that as well. At this time, I'd like to introduce Chris LeCroy, who will talk to you about the Darwin Streaming Server. Thank you for your time.
Hi, everybody. So I'm going to talk pretty briefly about Darwin Streaming Server. You're going to hear me say QuickTime Streaming Server a lot, and the reason for that is that Darwin Streaming Server and QuickTime Streaming Server are the same thing. Mac OS X, we call it QuickTime Streaming Server or QTSS, so just be aware of that.
So kind of a general status. We're about three years old now. We released the first version of QuickTime Streaming Server in April of 99, and we just released in February version 4 of the server, and I'll go over some of the new features in a minute about that. Since then, we've had over 300,000 downloads of the server. That's a lot of downloads for a server, especially a streaming server, which is a pretty narrow niche of people who are doing streaming out there. We obviously are open source.
That's why I'm here, and we've made it so it's really easy to port to other platforms. We have a couple of files that basically provide whatever layer you need, that provide kind of a layer abstraction or an abstraction from the OS, and it's really easy to port to anything that's POSIX compliant.
It's fairly, well, kind of a medium effort to port it to things that are not POSIX compliant, and we're completely standards-based. Some of the other streaming solutions out there use proprietary protocols and codecs and things like that. We are using RTSP, RTP, RTCP, SDP, HTTP, MP3, and just about any other kind of streaming standard you can think of or acronym you can think of.
So what's new? In 4, we have... Enhanced the module API. So QuickTime streaming server contains a module API sort of like what Apache has. You can write modules that can either be dynamically loaded into the server or statically linked into the server if you want to rebuild the server itself. And this is basically where all the functionality for the server comes from.
So being able to stream QuickTime movies was done as a module. Being able to rebroadcast live broadcast stuff was done as a module. Being able to do access live broadcast stuff was done as a module. And then the service logging was done as a module. So everything's done as a module. And we've enhanced the APIs as we do in just about every release. I'll give you a little more detail on what we did there in a minute. We've completely redesigned the web admin.
So QuickTime streaming server has a web-based administration console. Works in any browser. And we've basically just completely revamped it. We hired a really good engineer who's really good at this stuff. And so it works a lot better. It looks a lot better. Much easier for developers to extend if they want to extend it. And actually, if you want to take a look at this stuff, you can come to our session later, which I'll tell you about in a minute, too.
We've added support for automated relays. So what that is is streaming servers send streams to clients. Well, there are times when you may need a streaming server to send a stream to another server, which then sends off to a client. In the past, that was pretty complicated to set up. So we've kind of made it so it's automatic now. Server A can announce to Server B that it wants to relay something, and it just magically works using standard protocols again. And we've added UI for that in the web admin.
and we've added native MP3 streaming. And what I mean by native MP3 streaming is shoutcast, icecast compatible streaming. We don't do encoding. All we do is the reflection of the stream, but we've, because we're using standard protocols again, you can use things like the LAME encoder to hook into the stream if you want to do any kind of transcoding. We have support for serving MP3 straight off disk though, but we're not doing any encoding.
We've added MPEG-4 support. QuickTime Streaming Server can now serve any ISO-compliant MPEG-4 file. That means that in addition to being able to send streams to QuickTime players, you can now send to any compliant MPEG-4 player. We expect this to really open things up. This is a great new standard.
And as always, we've made some performance improvements. So let me show you the performance improvements we've done this time. So back with QTSS 1, we were doing 1,000 streams off a single machine. And with each release we've increased that. We're now up to 4,000. And I think with the next release, we'll probably be going a little bit higher even. I think we've got a few more tricks up our sleeves.
In terms of the module API enhancements, So you can build more powerful and new types of modules now. And the major reason for this is our API is really object oriented. And what I mean by that is that there are actual objects that get passed into modules and they can call methods on those objects. Prior to QTSS 4, though, modules could not declare and instantiate their own objects, objects that they owned. And they can do that now. And that makes it easier to write much more powerful modules.
We've also listened to developers and provided some documentation on some things that people have been screaming for. We've documented our reliable RTP protocol, which the marketing term is skip protection for that. So if anybody's writing a compliant player or a compliant server, that's documented now. We've also documented our implementation of tunneling RTSP over HTTP.
So if you want to write a server or a player again, that's documented. And we've also got some caching protocol extensions. So for developers who are writing streaming caches or proxies, we've documented those extensions so that they can take advantage of some of the really good things that those protocol extensions provide.
So here's where I beg. So if you want to help us out, we have a lot of pressure to get new features into the release or into the server every release. So some of the things that are really difficult for my team to do are some of the things that would be nice for the open source community, like autoconf support. I would love it if somebody would raise their hand right now. Anybody? And volunteer for autoconf support.
Also, we have great packaging mechanism on Mac OS X. On the other platforms, we basically live with tar files and zip files. And it would be really nice if somebody could kind of step up and do some native packaging, like install Shield for Windows or RPMs for Linux. And as always, developer documentation is always something we could use help with. Just documenting how the server works internally, documenting the source code, things like that. So that's my plea for help.
Places that you can learn more about this online are we have a mailing list for developers. It's pretty low traffic and it's pretty high quality. You can go to lists.apple.com and it's a streaming server developers mailing list that you want to subscribe to. I can always go up to the Apple open source website to find more information about the Darwin Streaming Server as well as any of the open source projects at Apple. And because the QuickTime Streaming Server is the Darwin Streaming Server and we also work very tightly with QuickTime, the QuickTime site is also a great place for getting information about some of the things you can do with the server.
And in terms of a roadmap, so we've got a full-blown streaming server session on Thursday, and we'll have some engineers showing how you can customize the server, how to write a module, things like that. We'll go into the new features in a little bit more detail as well there. There's a session on QuickTime and MPEG-4.
If you want to get a technical overview of that, that's Friday in Room A2. And we will have server people at the QuickTime feedback forum, so if you want to provide any feedback there, we'd be happy. We'd love to hear it. I think that's it. So next is Ed Peterlin. He's going to talk about open office. Thank you.
Hi, my name is Edward Peterlin. I'm a contributor from the openoffice.org community. I specifically work on the OS X porting effort. Well, first question that we usually get, what is OpenOffice.org? OpenOffice.org is an open source project for technology within Sun's Star Office productivity suite. A while ago, Sun open sourced the source code for Star Office and released it for our community, and we've been working on porting efforts ever since to support new platforms. We're supporting Linux PowerPC and x86, Solaris and Windows. Mac OS X developer build is now available. It's a great time for us.
We've had 1.0 released on our major platforms, x86, Flourish Windows, and now OS X. And it supports Darwin as well. Several more ports are under development. FreeBSD, RX264, Amiga, talks of AIX, HPUX, and there's over 21 languages that it can run native in. On the OS X team, we kind of developed a porting roadmap here.
Our first stage was to build and link on Mac OS X. There were lots of technical issues that really held us up since April 2001 when we've been working on this. Next, we need to get up to the OpenOffice 1.0.org source. We're just so far behind, we need to catch up. After that, we need to start getting it to work with the Aqua graphics layer and core foundation. GCC3 is released. We need to get this working for new compilers. We need printing support.
Installation help. And after all of this is done, then we need beta testers, end users, and release 1.0 testing. So, I'm here to make a plea to get developers to help us. We've only had less than 10 people ever work on this port. And right now, there are only three active coders. So, it's been a long time and we need everyone we can get. But the cool thing is, you know what? It built. It's ready for a demo.
OpenOffice.org consists of a number of files. It's an open source productivity suite that has a major word processing component, very similar to MS Word. You can type. We can even check spelling in runtime. We have dictionaries, and it works. In addition to word processing, there's also a full spreadsheet implementation. The spreadsheet is very similar. You can use similar formulas from Excel. We can enter. We can come down.
Make sums, insert ranges, add numbers. We even have some basic macro support coming from opening cell files. In addition to all of this, there's also Our word processing component, which I brought back up by mistake, but you'll get to see it again. We also have a drawing component. Drawing component, again, we have basic support for two-dimensional and three-dimensional objects.
And we can also come around, rotate these objects. We need people to help us move this to work with OpenGL. And... What I just did there, ask it to insert an openoffice.org calc spreadsheet. See if it'll do it for me. There we go. And here, two, three, four.
and David O'Rourke. What you're seeing here is our first developer build. We made this available this morning from our website. And that's it for our demo. So let's figure out, how can you help us? We just got it building. This is one and a half weeks old. This is such an exciting time for OpenOffice.org in our community. You can go visit http://porting.openoffice.org. This is our main porting website. From there you can find links to all the Mac porting websites.
And what's even cooler, we've had some friends over the weekend have some little CD burning bashes. You can get a couple of six packs and burn developer CDs that we have at our exhibitors booth in the exhibit hall. With full binary installers, double clickable so you can play with it now.
Full source code from our CVS branch. Build instructions so you can work on it tonight. We need Mac OS X developers. We need help getting Aqua working. We're going to support X11 and Aqua so we can run on OS X and Darwin. We're going to continue this support. We need people to help with printing.
We need people to help with internationalization. Unicode, font support, everything. There's so many different areas of this project you can work on. Non-developers, you can help too, even if you don't have time to contribute. We're going to need testers. We need documentation for the OS X specific portions of this. We need web and graphics design. We need people to make screenshots, make it look nice for end users. Usability testing. What the Mac OS X users need out of this product.
And also local language. It's an exciting time and I invite you to come help us. And now here's Lane who's going to talk about Open Play. and I'm here to talk to you about OpenPlay and give you a brief description of where we are with the open source effort. And let's see. All right. Wait a minute. I did the same thing.
You would come up to bite me, wouldn't you? Alright, so, OpenPlay started out as open source a couple years back, and one of the latest things that we've done is we have integrated NetSprocket into it, and it's still going to fight me. What this means is that NetSprocket's API now is integrated into the OpenPlay effort. This gives NetSprocket the ability to run on every platform that OpenPlay does. The old NetSprocket source is still available on the website if anybody wants it, but all the future development is happening with the OpenPlay source.
Okay, the OpenPlay is a networking API. It's designed to be protocol and OS independent. That means that it currently runs under Mac OS X, Mac OS, Windows, and as of a few days ago, Linux and some various Unix. Yes, we had somebody do a POSIX version. So, it also has, of course, TCP IP as a module and Apple Talk, although Apple Talk is only for the classic Mac OS. And if somebody wanted to take the time to make Apple Talk work on other platforms, that would be wonderful.
So, OpenPlay consists of three different API layers. There's a game interface, which is the easiest to use. It just takes a couple minutes to get something up and running. That is the old NetSprocket API. There's the protocol interface, which is basically a good wrapper around the low-level APIs. This is the old OpenPlay interface.
And then there's the networking interface, and these are the net module wrappers around TCP/IP and AppleTalk. And that's what gives you your protocol independence. It basically looks like this to your application. There's the three layers. They all sit within OpenPlay. NetSprocket uses the protocol module. The protocol uses the net module. And then your application can use any one or all three of those, as well as the underlying raw protocol APIs.
With the new 2.1 release that was just put up yesterday, there are two new test and sample apps. The first is the NetSprocket stress test, which exists for Mac OS, and that has given us a lot of good feedback in making NetSprocket very bulletproof and able to handle really good networking loads. It also helped us track down a few bugs.
The really cool thing is the new NetSprocket example. This is a really nice addition to the open source archive. Previously, there was a lot of example applications and some testing applications, but nothing that really showed you how to use the API. This example does just that. It separates it all out into one file. It's a full game with a client, a server.
Players can come in and out. And you can take that code, strip out the one file that contains the NetSprocket or the OpenPlay protocol API that you want to use, put it into your application, do a little bit of modifying, and you're done. At least that's the goal.
We also have a lot of titles that are shipping now that are actually using OpenPlay or the older NetSprockets APIs. This is a list of some of them. There's a lot more and several that are, of course, in development. So, now I'll give you a quick demo of this test application.
Let's see if we can't... So it's very graphically intense. This poor machine is going to be very hard to keep up with all this. So we're going to start a server. We're going to run it on the default port. We're going to allow the default number of players, the default name.
[Transcript missing]
So it connects to it. You can answer the questions. It tells the other client whether it's working or not.
[Transcript missing]
That's basically the quick demo. That little program there is the example program that is now provided. It gives you a really good idea of how to handle players coming in, players going out, hosting games, connecting to games, and all that good stuff that you need. And that's the end of the demo.
simple roadmap for this one there is an actual open play session Thursday two o'clock it's in room C and I will be giving a lot of code examples in there going over that example app that I just showed step-by-step about how you connect how you start up a server and all that good stuff and now we'll have somebody else come back on stage and wrap it up Thanks, man.
[Transcript missing]
If you've been watching us over the past couple, three years, you should see a real trend. We're just constantly increasing our involvement in the open source activities. You see more projects, you see more committers, more opportunities for you to get involved.
We certainly, you know, hopefully you see a trend here. This is something we take pretty seriously. There's a number of conferences that if you're in the open source community at large and you're interested in participating or seeing more, we're going to be at USNICS this June, MacHack, of course, which is always lots of fun, the O'Reilly Open Source Conference in July, and if we can get Steve to allow us to fly over there, we're going to sneak a trip over to BSDCon in Europe.
So, you know, certainly there's a lot of other conferences we're trying to get involved in. The benefit of these other forums is actually to get more and more people involved. The BSD community and some of the open source developers. The more they learn about TEN, the more excited they get and the more they want to participate as well.