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: wwdc2009-612
$eventId
ID of event: wwdc2009
$eventContentId
ID of session without event part: 612
$eventShortId
Shortened ID of event: wwdc09
$year
Year of session: 2009
$extension
Extension of original filename: m4v
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: [2009] [Session 612] Calendaring...

WWDC09 • Session 612

Calendaring Solutions in Snow Leopard Server, Snow Leopard, and iPhone

iPhone • 48:08

Centralized calendaring is critical to organizations of all sizes. Learn how iCal Server 2 in Snow Leopard Server provides standards-based event and resource management services. Find out how iCal in Snow Leopard and Calendar in iPhone connect with enterprise calendaring systems such as iCal Server 2, CalDAV, and Microsoft Exchange.

Speakers: Wilfredo Sanchez, Cyrus Daboo

Unlisted on Apple Developer site

Downloads from Apple

SD Video (166.4 MB)

Transcript

This transcript has potential transcription errors. We are working on an improved version.

Good afternoon. My name is Wilfredo and I'm the Engineering Manager for the iCal Server team at Apple and I'm going to be talking about pretty much everything calendaring in so far as Snow Leopard, Snow Leopard Server, and the iPhone are concerned. So just to start out right now, our product lineup for these areas includes iCal.

They include iCal Server, they include a web calendar which is new on Snow Leopard and they include the iPhone calendar which in the 3.0 version of the system that actually can talk to iCal Server via CalDAV. See if I can remember this timeline correctly. iCal version 1 was basically a product that was a geared up personal calendar.

And so you can kind of get that. It started out as a download that you could get for Tiger, and it actually shifted with that system and you could basically manage your personal calendar that way. You could put in your birthdays, your dinner engagements, and that sort of thing but it's pretty much just about you. Later on, sync came along and gave you the ability to kind of get that information across all the different computers that you own, but again it was still kind of geared at your personal calendaring information.

Then we shifted to iCal version 2 and iCal version 2 added something a little more interesting which was published and subscribed over WebDAV, and that gave you the ability to share a calendar with other people in a read-only fashion, so I could create a calendar that was like maybe sports events for the little league or something, publish that out to a server and we provided a way to do that through .Mac you didn't have to set up your own server and you can share calendars that way. But once again, that was just a read-only and only one person can edit that calendar. iPhone version 1 followed along and again, it included a calendar application that was geared at personal calendaring much like iCal version 1 was.

Then with iCal 3, we actually introduced CalDAV, and CalDAV gave iCal the ability to actually store events on a server in a more interesting way than it could with just WebDAV, and that allowed people to actually schedule meetings with each other, where I can invite you to a meeting and you can accept or decline.

I could see when you are available for that meeting and it obviated the need for iSync as a solution because now I can get all-- all my computers can get to the CalDAV server directly and get that data down, and it added additional functionality on top of that. iPhone 2 added support for that same functionality when you were talking to a Microsoft Exchange Server which is a highly demanded feature for people in the business center for I's [phonetic] market.

And then with iCal 4, they added also support for exchange and with iPhone 3, we had now have the ability to speak to iCal Server via CalDAV, so thanks. CalDAV is actually kind of the glue that holds all of our calendaring solutions together. All of the Apple products now speak one common protocol, that's an open standard that not only Apple but actually several other players in the calendaring marketplace participate in.

So, let's talk just briefly, give you an overview what CalDAV provides in terms of protocol and standards. First up, we leverage iCalendar which is a text data format that basically specifies when a meeting is, what its title is, who the attendees are, when it ends, does it recur, does it happen on every full moon of the third month of every year, that sort of thing.

It's actually a pretty rich way to describe meeting information. iTIP is the iCalendar transport interchange protocol, I believe, and that allows you to basically schedule with other people. Lets you say send the messages as when are you available for a meeting or, "Hey, I'd like you to come to this meeting, can you come?" Now these two standards have been around for a good long time, and they're supported by pretty much every calendaring software system that's out there today, that includes Microsoft Outlook, that includes iCal going all the way back to version 1 and pretty much everything you use, Mozilla calendar and that sort of thing.

Now we wanted to take these things and be able to store them on a server, and the protocol that seems to be very well regarded for doing that sort of thing is HTTP, but in order to facilitate that, you need WebDAV which leverages XML. And with extensions for access control, you can actually manage who is allowed to do what on a server. And then the CalDAV access protocol uses iCalendar and WebDAV in order to give you the ability to store that data on a server. CalDAV schedule gives you the ability to-- with iTIP actually do delivery of scheduling messages.

Now, CalDAV access was made into an RFC recently, so that's already an internet standard. CalDAV schedule is starting to wrap up and is actually very close to getting to that level, but iCal Server's been supporting these all along. So, there are a lot of players as I mentioned that are involved in this space, of course that includes Apple, but also IBM which is a huge player in calendaring-- Scalix, Mozilla, Yahoo and Google, Kerio, and so on and so forth. There's one that's absent here which I won't mention, but maybe someday.

So, rather than kind of keep doing diagrams and kind of talking to what theoretically you'll see, we decided that this is a kind of all best served by giving you a nice long extended demo of all of these in things in action. But since the demo is a bit long and involved, I'm going to give you a little background about what you'll see there so that when you're following along, it will be a bit easier. So we're going to follow a day in the life of Cyrus.

Cyrus is an employee at a company called Suits Incorporated. [Laughter] They manufacture suits, they love suits, they wear them to work everyday. They are suit business. They've been at it for a long time, old established company. However, the economy has been a little rough on them this past year, so they're having a little trouble making ends meet.

Cyrus sees the writing on the wall, so he kind of wants to develop a plan B and starts a new company called Twunk, and he meets a bunch of kids at Apple's developer conference and they had started up this company that's going to make a Twitter client, 'cause that's where all the money is.

[Laughter] And they're going to make it for the iPhone which is hurting for more Twitter clients. So, let's compare these two companies in how they run their business systems in particular with regards to calendaring. So, the Suits Incorporated network, being an old company, they run Windows so all of their employees run, you know, identical looking PCs. They run Windows Vista, and on there they run Microsoft Outlook.

And of course they've deployed a Microsoft Exchange 2007 Server and they can do all of the calendaring and scheduling via that system and it all works great. Now for his side jobs, Cyrus goes over to Twunk. Twunk of course is a bunch Mac folks. They've got their Mac computers out there and they run iCal, and of course they couldn't run an Exchange server 'cause iCal can talk to that, but that's no fun.

So they set up a Mac OS X server system that runs iCal Server, and iCal Server of course can facilitate all of their calendaring and scheduling needs via iCal. So looking at these 2 side to side, you see that they're actually quite similar. On one side you've got Windows machines talking to a Windows based server system, you've got Mac systems on the other talking to a Mac server system.

And otherwise, they're fairly identical networks. So what are the implications of these for Cyrus, who actually has to live in both environments? Well let's say Cyrus is at home and he gets up in the morning and the family has got an iMac in the house, so he wants to kind of find out, "Well OK, what's going on with my day?" I wanna see my schedule for both the Suits Inc. calendar and the Twunk calendar because they both affect him. So obviously if he launches iCal, he can speak to the iCal Server that's running in the Twunk network, assuming of course that he can get into this network through their firewall as appropriate.

And speaking to that, we've actually added a product in Snow Leopard Server called the Mobile Access Server that facilitates that without the need for VPN, which is obviously a common solution that works pretty well, but it's a little bit complicated to set up and a bit involved. Mobile Access Server actually lets you expose services behind your firewall in a managed fashion to clients that are outside of your firewall, and that of course includes mobile clients like laptops and iPhones and similarly a Mac that's somewhere else on the network.

Now, because iCal supports Exchange now, then similarly he can speak to the network on Suits Incorporated, and that's the details of how he gets into that network. Not really my bailiwick, but there'll be similar solutions there. So from one client, he's got a view of everything there. Now let's say that's he's out on the go on a sales call or something and he's with a customer.

He doesn't have his computer with him, all he's got is his cell phone, and of course iPhone 3 includes a client that can speak to Exchange, actually iPhone 2 had that. And then similarly with iPhone 3 again through the Mobile Access Server, you can reach the iCal Server instance on the new company's network, and again, you can see one unified idea of his calendar in both situations and know what he has to do with his day.

Finally, if he's out on the go and maybe he's outside of cellular network reach or whatever, he can walk into an internet cafe, go to the nearest airport or whatever and borrow a computer there and they may or may not have iCal installed and set up for his needs, but he can get any standards compliant web browser and using the new web calendar feature that's in the calendar server in Snow Leopard, he can once again, through the Mobile Access Server get to the iCal Server inside of that network and get a rich web based UI into his calendar, where he cannot only see what's going on but he can also do editing.

And similarly if you've got, you know, Microsoft's Outlook web access set up, you can do a similar thing with Exchange.

Once again, assuming that they've enabled that and set it up and you can get into the firewall. Now if he sits at his desk at Twunk, obviously iCal can talk to iCal Server and just like he could at home, he could speak to the Exchange server at the other company. Now let's say he goes over to the other place and now he sits down at his PC and now OK, well now he's not using an Apple product, he's running Microsoft Outlook.

And of course we know Microsoft Outlook can speak to an exchange server, so he's fine there, but now he wants to look at his calendar over running on the iCal Server system at the other company, and how is he going to do that? Well, much like he did at the internet cafe, he can launch Safari or IE or another standards-compliant web browser and get into the network that way. Now the downside to this of course is, now this is running Outlook to see one calendar and he's running his web browser to see the other calendar.

And that's not an ideal solution because you've got two applications and you don't-- from your web browser, you don't get alarms and all the functionality you might from the native Outlook system on the computer. Now it turns out that there is a third party company called ZideOne and they sell a plug-in to Outlook or they will be selling a plug-in that's in beta right now, which enables Outlook to speak CalDAV.

Well, we have a CalDAV Server because the A standards. So, ZideOne can actually get Outlook talking to iCal Server and that's actually pretty appealing if you're an Outlook user. So-- and regardless of whether Cyrus is at home using iCal, whether he's out on the go using his iPhone or he's at an internet cafe or whatever using a web browser, whether he's at his desk at Twunk or whether he's running Microsoft Office way over on the Suits Inc. network or Safari or at office with ZideOne, he's got a solution that works everywhere he goes. So with that, we're going to actually have a demo and Cyrus is going to come up on stage and show you some of these things in action.

Okay, thank you Wilfredo. So, you know, one of the key messages from this presentation is this idea of ubiquitous calendaring, the ability to see and manage and interact with your calendars on lots of different systems. So, we saw an example of 4 different systems that we want to actually look at, and this demo will take us through some of these areas. So we're going to be looking at the Windows desktop, the Mac desktop, the mobile phone, the iPhone and then the browser situation. So, let's start at Suits Company where we have a Windows desktop.

Okay, here we have Outlook 2007 running on Windows and it's actually showing me right now my iCal Server calendar information. So how did we actually get that on there? Well, we can go into Outlook's little configuration panel here and we can pull this up and you can see that we've actually installed the ZideOne CalDAV connector for Outlook.

And with a little bit of configuration, user name and password, we can get access to our calendar information. Another thing to remember about ZideOne is that they also have a CalDAV connector built into their product as well, so you can also get access to Address Book Server information which is, you know, Address Book Server is one of our new services in Snow Leopard.

So you can get not only calendar information but your contact information through this plug-in as well. So let's actually take a look at Outlook itself and what do we have here. Well it's just the usual calendar. We got events on here. We can double click on an event and bring up the event detail. We can see that there are several attendees in an event. We can go to the scheduling panel and Outlook is actually going out to the CalDAV Server and looking up free/busy information for each of these attendees in real time.

So let's actually run through a simple scenario of just creating a meeting on our server. So I'm going to create a meeting, let's see here at 4 p.m. on Thursday. It's just going to be a very simple meeting in the office and I want to add some attendees to this meeting. So I can actually go to the Address Book that Outlook has here. Now the Address Book, you know, could come from Outlook's local contacts database. It could come from your Exchange contacts service.

It could come from your Address Book Server service running on OS X Server. To add attendees it's just a simple matter of double clicking the names to add them to the list and then I can just click OK and again in real time, Outlook is going to out, fetch the free/busy information from the server. So, you know, what I can see here is, you know, Thursday it looks like Wilfredo is out of the office whole day. Probably had a late night Wednesday night at Tommy's and, you know, he needs to take a break on Thursday.

So, you know, this looks good. I think I'll just go ahead and book this meeting, a very simple process in Outlook which is click the Send button here. Sometimes we have to dismiss a few outlets that Outlook gives us. And Outlook also decided to go into offline mode. So one more little click here. Let's try that again. OK, here we go.

Meeting, office scheduling and attendees, it doesn't take too long to repeat what you have to do. You don't really want to have to do things twice but sometimes it happens. OK, so that meeting was put up on the iCal Server that Outlook is connected to. So, you know, for those of you who've used Outlook with Exchange you might be thinking well, you know, maybe he's cheating him.

Maybe he's actually connected to an Exchange Server because this really looks no different from the way you would use Outlook with Exchange. And that's, you know, one of the key goals, what we're trying to achieve here, seamless integration of CalDAV services with the Exchange interaction on all of these desktops and all of these situations. So let's actually go across to the iCal Server system and take a look at what we see over there.

So, OK, so this is iCal on Snow Leopard client. Now what I've done right now is actually just configured it with an Exchange account. So, one of the major new features in iCal on Snow Leopard is the Exchange support. In addition to the CalDAV support which we had previously, we've integrated these technologies together to give again that seamless experience. Using Exchange in iCal should be just the same as using iCal Server on iCal with the interactions and so on.

So what I want to do first is actually set up an account for my iCal Server on iCal. And again, one of the key things we want to do with all of our client interactions is just to make this as easy as possible for the user. So now the process of actually configuring an account in iCal is pretty straightforward.

Basically, you just need to provide your email address and your password and iCal will actually go and use a suitable order discovery mechanism to determine what is the Calendar Server that's appropriate for that particular email address. Now you can if you want, you know, you can choose the Automatic option and iCal will try all of the different possibilities suitable or you can explicitly say CalDAV or Exchange and also configure at Google or Yahoo directly.

We're going to stick with automatic for the time being and I'm just going to enter my information here, my email address and my password. I'm going to click Create. So iCal is going out. It's searching the DNS. It's doing DNS SRV record lookouts to find the local CalDAV Server for my particular domain that returns the host name and port information. So, you know, the service settings information that you see here, all of this information was automatically determined by iCal by doing these DNS queries or the discovery lookouts.

So, a very simple process for the end user to set up and configure accounts. So let's actually look at some of the data that we have on the server. With both-- with the Exchange support, you know, we have here an event that was created on Exchange and this was an event that was the Suits CEO John was inviting me to a meeting and I've got the option of accepting or declining as usual. I'm not actually going to do that at this point because we're going to see how that works on the iPhone in a minute. Again, creating-- let's create-- actually create an event on Exchange.

So I got my Exchange calendar set up here. I'm going to go in here. Create another meeting and I want to add some invitees. So iCal is actually going to use the contact information from the system that I have here. Remember, Address Book also supports Exchange, Address Book also supports Address Book Server and you can have local address information in Address Book and iCal can pull that information from Address Book as well.

So I already have John configured in my Address Book, so I can just type a part of his name in there and we have an invite ready to send to John, but let's actually just have a quick look at his availability. So in iCal, again, I did a free/busy lookup, but this time it's the Exchange Server that we're dealing with so iCal went to Exchange and actually queried for John's free/busy information for Thursday.

And we can see that he was actually free at the time that we've picked, so this looks-- this looks OK. I'm going to click Done here and I'm going to send that off to John. So we just did a very simple scheduling operation with Exchange. Let's do the same thing on iCal Server.

So I'm going to create-- I need to select iCal Server first over here, and I'm going to create a green meeting. So we want to schedule, just to go through the same process, meeting history and again, I'm going to-- I want to invite some people that are on my iCal Server.

Now in Leopard, iCal actually required the client machine to be bound to OpenDirectory in order for the Attendee Order Completion Facility to work. Basically, the directory was providing the user information to the calendar server, iCal could buy into the directory and get that same information and use that to order complete the addresses of attendees that are known to be supported on that Calendar Server.

Well, one of the things that we changed in Snow Leopard is to remove the need for the client machines to actually buy in to OpenDirectory in order to get the attendee information. So this machine is not actually bound to the directory, but the server is bound to this.

Server still gets its user information from the directory but the client machines don't need to buy into the directory anymore. Instead, what we've done is used facilities in the WebDAV Protocol to allow the clients to actually search through WebDAV to find information about users on the system. So in WebDAV, users are each represented by a principal resource on the server, and there's a query report that the client can do to actually say, "Tell me about all the users with a particular name or of these letters" that we can do in order to complete operations there. So, if I start typing, iCal is going out to the Calendar Server, making a query of the Calendar Server in order to complete those letters that I type and it comes back with a few names.

So again, I can type in several names here, and in real time we're going to query the server and get that information. And just like with-- with the Exchange event we just created, I can pull up the availability information and again, get in real time, free/busy information from iCal Server. So again, the same process that we can do in Exchange, we can do exactly the same thing with our iCal Server, it's no different. The users don't have to do a context switch. In their mind just think "OK, I'm doing something on Exchange.

I have to do it differently over here or do something in iCal Server different here." None of that. Everything is the same. The interactions are the same. So in this case, I'm going to click Done, we're going to send that meeting off and the attendees can reply to that in a-- in a usual way.

Now, another thing that's different about Snow Leopard Server is that we now have the ability to schedule with users who are not actually hosted by the server itself. So in that particular example, I actually typed in the names of attendees who are known to be on-- on my Calendar Server. But let's say I want to schedule with someone who's-- who only has a Gmail account, and a Google Calendar account.

Well, we can now do that in Snow Leopard. So I'm actually going to add the name of my friend Elisa who I have configured in my Address Book with her Gmail account information. So I'm going to add her to that event, and I'm going to click Update to update that event and put that back up on the server. Now, what's happening in the background is, iCal is storing that event on the server. The server is passing out all the attendee information. It's spotting that Elisa is not actually a user hosted by that server.

But we specified an email address for her. So the server can be clever and create and iMIP message which is basically an iCalendar attachment imbedded in email, it can create that message and actually send it to Elisa's email account at Gmail. So let's actually see what Elisa gets to see on her end. So I'm going out live to Google right now, and yup, we see that there's a new event in Elisa's inbox here.

Let me double-click on that to bring that up. OK, so we've got information for the event that we just created and sent to Elisa. So we got a nice big icon there letting her know exactly when that event is, we got the details, who's-- who's the organizer, with information about the other attendees.

Now, Elisa has a couple of choices here. She has the option of replying directly from this email message. She can say "Yes,"Maybe," or "No" right here in the email, or she can actually go to her Google Calendar. Now as it turns out, Google's integrated system allows it to take that iCalendar, attach it from email, and automatically put it on her calendar. So it's already on her calendar when she goes to look at it.

And again, if you pull up the details for this event, she can see all the relevant information about attendees et cetera, and she can actually reply directly from her calendar. So, what Google is now doing is again creating an iMIP message which is a reply to the one I sent her, but this one contains her new status which is accepted. So that message is winding its way back through the cloud, back to our server over here. So hopefully, we should actually see that pop up in iCal depending on how fast email is going today. We'll wait for that to come through.

In the meantime, we're going to talk about another feature of iCal. One of the additional features that we added is the ability for attendees to provide private comments back to the organizer when they're replying to events. So for example, let's see, I put an event here that I had created and Morgan and Wilfredo were both invited to this event. Now, Morgan actually declined this event and he actually sent me a comment to explain why he was declining the event.

He has to go pick up his kids. Wilfredo accepted the event and-- but he also sent me back a comment saying that he was going to have to leave halfway through the event 'cause he has to go fly to Vegas for a business meeting or a poker game or something. So you know, these are comments that attendees are sending to the organizer.

Now, other attendees don't get to see these comments. It's only the attendee and organizer pair, those two people that actually get to see this particular comment. The actual process of sending a comment to an organizer is very simple. So here I have a meeting that was proposed by the CEO Chris, and he invited me to this meeting.

I haven't replied to it yet but I'd like to just send a comment back to him, so what are we going to say, "Good idea." OK, so I can just type my comment in and I can click Accept, and that comment and that reply is now going back to Chris and in just the same way that we saw Wilfredo's and Morgan's comments in this event, Chris will see my comment coming back in his event.

So let's see. Oh, well, Elisa's reply has just come back in. We see a green check mark next to Elisa. And so that email message we sent out to Gmail with the iCalendar attachment, she replied to, has made its way back to our server and iCal Server with its new feature took that email in, passed out the iCalendar information, figured out that Elisa said she was accepting the meeting and it updated my calendar automatically for me. So her participation status is automatically covered. So we can schedule with people, not just on our server, but on the other systems as well.

[Background applause] And you know, this should work on-- with pretty much any system that knows how to handle the iMIP protocol, and that's pretty much you know, most email calendar systems that are integrated together. So Google, Yahoo, Outlook and Exchange can also do iMIP scheduling if needed. So let's look at a couple of other features that have been added to iCal.

One thing we can do in iCal, we have this Inspector Window, we can drag these windows off and we can actually have multiple Inspector Windows open at the same time so that we can see [background applause] multiple events. And another option that we have is if we go to the Edit menu, we have this Show Inspector which gives us a Floating Inspector Window, so that now, as you select different events that stays updated [background applause] and synchronized with the event you're looking at.

And one more feature that we have in iCal, let me-- let's take a look at this event here that I proposed. I'm going to look at the free/busy information for Friday. Now, if you look at the top row here, this is my free/busy information, and you can see it shows me as free all day. But let's say I needed to go on vacation that day. I'd like to actually block that time out for everyone.

A simple option to do that might be to go in here and create an All Day Event, vacation. So if I go and do that, and I go back here and look at my free/busy information, what do I see? Well, it's still showing me as free. So something didn't work quite right there. So what's actually happening here is that by default, iCal actually creates All Day Events as being free.

That's the behavior in Leopard and that's the behavior in Snow Leopard. What's new in Snow Leopard is that you now have the option to actually mark events as free or busy. So they can be free or blocking-time busy. Again, by default, All Day Events are marked as free, and by default, Timed Events come up as busy.

[Background applause] So it's a very simple process for me to block the whole day. I can just mark this event as busy, click Done, and if I go and pull up the availability, you see that I'm now blocked out for this entire day. So a very simple process to manage the free/busy information.

So those are some of the key features that we have for Snow Leopard, iCal Plan [phonetic], we have the integration with Exchange, we have the new CalDAV-scheduling support that's built in. I mean a lot of the work that's involved there is kind of under the hood, but we have some of these new-- new UI features and new user interaction capabilities to enhance the calendaring experience for iCal on the desktop.

So where do you want to go next? Well, we've been to our Suits Office and we've been to our Twunk Office you know, it's kind of the end of the day. I need to, you know, hop on the commute bus back into the city, but I've got a few things I'd like to check on my calendar. So how am I going to do that? Well, let's go over to iPhone.

[ Pause ]

OK, so we have iPhone. This is running iPhone 3.0. Now in iPhone 1.0 and 2.0, you were able to actually synchronize your CalDAV Calendars with the iPhone using iTunes and a cable to connect the two. You can see that little cable here. Well, good news, I can pull this cable out, I can, you know, throw it away, and we can now do CalDAV on the iPhone, over the air, talking directly to the server.

We don't need that tethering when-- [applause]. So we can change events. We can modify events. We can see events, changes, get propagated to the phone. We can see all that over the air, no need for tethered sync. So let's actually pull up our calendar here, and I'm going to go to our calendar view. So again, in iPhone 2.0, we had Exchange support. So here, we have an Exchange account that's set up and we also have our new Twunk CalDAV accounts of that as well.

And iPhone lets us aggregate the view of all these calendars, so I can click the All Calendars option. And now I'm seeing the same events that we saw in iCal where the Exchange is in red and Twunk iCal Server events in green, and these events showing up in the same way that we get on the desktop. We get the same view on the phone, again, the seamless integration, ubiquitous calendaring approach.

So let's actually take a look at one of these events. So this is an event on the Exchange Server. Again, it's-- that's the event that was booked by the CEO for breakfast. We can see information about you know, who is invited to this event. We've got information about availability. We can set our own alarms.

And at the bottom here, we have the option of responding to the event with a suitable response. So I'm just going to click Accept here, and the phone again, is going out to the Exchange Server, sending that response back through Exchange, and we'll see that information get updated on the Exchange site as well. So let's say I want to create a simple event on my iCal Server now.

So I'm going to go in here and just click the plus-sign and I'm just going to create a very simple event I need to-- OK, pick up dinner. OK, so I'm done. OK, let's see, what time-- well I need to do that probably in the evening. So I'm going to make this not too late in the evening. OK, 6 p.m. when I'm going home, I got to remember to do that.

Click down, yeah, I probably need to set myself on the left, OK, 15 minutes, click down on there. OK, everything else looks OK. Yeah, that's in the right calendar, I can click Done. So that event 6 p.m. on Thursday, we just created that on the phone to upload it to iCal server.

So let's see, did we actually get that over here? Let's go back to our iCal and yes, here we go, we've got that Pick Up Dinner Event. We created it on the iPhone, went out to the iCal Server, any CalDAV client has connected that iCal Server will be able to see that event update, and it will come back down to those clients.

And again, we have a consistent view of our calendars. We get, you know, updates in real time. We have push notification system built into Snow Leopard, again, another new feature that allows us to push these updates to our iCal on the desktop. So rather than iCal having to pull, the information comes in almost immediately.

So [applause]-- so that's our iPhone solution. We're, you know, we're very happy to see CalDAV on a mobile device, probably the first CalDAV solution for our mobile device and we hope to see many more people using CalDAV on mobile devices. But let's say that, you know, I got my-- I'm traveling home, and I'm at internet cafe and, you know, oh dear, I left my iPhone on the bus. Well, I could use the fancy new MobileMe to find my iPhone but it's, you know, it's on its way to some other town.

So, I'm going to have to do something else to access my calendars right now. Well, the internet cafe that I'm at has, you know, a Windows workstation. So here we are in Windows, I need to get access to my iCal Server Calendars again. Well, we have our new web calendar in iCal Server on Snow Leopard.

So I can just go in here, fortunately, for me I already had a bookmark set up for this but, you know, it's a pretty simple process to type in the URL to get to your calendar on the Calendar Server and type in your username and password. And then again, we have all the calendar information that we got before, we're now seeing this again in the Web Calendar.

So the Web Calendar, yeah, we designed to give you, you know, an experience that's pretty much the same as what you get on iCalendar desktop So let's go in and do same operation what we did before. We want to create a meeting here, so let's do something on Friday. So I'm going to double-click here. I can type in the title. I'm not being very creative with titles right now, and the office location.

So that's fairly straightforward. And then we have our attendee panel. So again, because we have attendee with-- because the server can provide attendee information to the client, our web client can actually go back to iCal Server and make requests of it to do its order complete for attendees.

So again, as I-- if I get the names right, OK, so Wilfredo Sanchez. So I can start typing and the web client is going out to the iCal Server, order completing that, getting the results back. So again, it's a very simple process to type in attendee names, Chris... Bill is out and get them in there.

And again, the web client just like iCal, is going out to the server and getting the free and busy information for those users in real-time. So again, we can see, you know, for Friday-- well, I was on vacation that day, but if we go back to Thursday, well we see little bit more detail on the free/Busy information for the events that those folks have got booked.

And again [applause], I'm actually going to go at least on the Friday. So it will be a little bit clearer when we look at it over on the iCal side. OK, so I just went and booked that event over there in the Web Calendar. Now if I go back to iCal, well, here's the event that we just created in the Web Calendar.

Again, just like-- on the phone, we created an event, push it up to the server, all of the CalDAV plans accessing that calendar information, they get to see the updates in real time. So that's basically it. The key here is ubiquitous calendaring. Calendaring on what's the different platforms and lots of different scenarios.

Our goal, you know, as calendar vendors, you know, one of our goals is to satisfy the needs of users, and users want to be able to get access to their calendar data wherever they are, whatever the time is, they want responsiveness from their calendar system, and they want to be able to interact with it to get free/busy inforamtion and to schedule with other users.

And we certainly believe with the-- Snow Leopard Calendaring solutions that we've gone a long way to addressing those requirements. So with that, I'd like to hand it back to Wilfredo.

I mean, I know a lot of you folks are in the IT world. And you can imagine that for that demo there were an awful lot of moving parts there, all right.

I mean, we were looking at a lot of stuff here. We were looking at iCal, talking to CalDAV Servers, and to Exchange Servers. We saw the iPhone talking to CalDAV Servers and Exchange Servers. We saw iCal Server 2 and the Web Calendar feature that's new in there that gives you a full reach calendar experience on a standards-based web browser or IE. We saw Safari 4 in action. We saw the Mobile Access Server kind of in play.

So there's a lot of stuff going on here that all kind of glues all of these together and the joy of standards is that all of this stuff works together. So again, regardless of what Cyrus was, if he was using his iPhone or iCal, whatever, it can either talk to the Exchange Server or it could talk the iCal Server and all of the stuff plays nicely. The idea here is Apple is once again, isn't trying to walk you into anything.

Whatever environment you want to live in, we'll be there for you. So let me give you some updates on what's new since the last time we talked about this stuff. So in iCal Server 2, we have a few things. One is we've got attendee lookup support, made have we [phonetic] over HTTP Protocol now.

What this means is that clients no longer have to buy into Open Directory and do lookups through the directory services API in order to look up attendees. That's much easier for setting up your clients and it's way easier for your mobile clients that need to setup out on the open network because setting OD when you're outside the firewall isn't the easiest thing in the world.

Also very cool is we got rid of Services Locators and those weird schema extensions that we had in the directory systems that made it harder for you to set up your directory especially if you are coming in from an OD Environment [applause]. We worked really hard on performance in Snow Leopard.

It's kind of the feel on the client's side. We took that to heart and the server side as well.

And, you know, in Leopard, we could deploy those small businesses and was a decent solution there, but frankly, like when you try to scale it a very large business, it didn't work out.

So we decided to suck it up and we were going to make this work until we could deploy all of Apple worldwide. All of our employees are now using iCal Server as of 2 weeks ago. We shut down Meeting Maker which we've been using for like 15-plus years and are now living on iCal Server [applause].

Now if you want more of the scoop on that, you can head us up at the lab, which is going to be downstairs after this. But short answer, running on one server because we don't have clustering yet, so one server supports the entire company. Now, also on this server, we've got improved client data validation, which you know, is important from the standards point of view because you don't want a client putting data onto the server that another client is going to get confused by. So iCal Server is being a little more careful about checking the data that's coming in. We've added support for-- we call them Implicit Scheduling which is a very fundamental change in the CalDAV Scheduling Protocol that happened since we shipped Leopard until now.

And that was actually a change that we drove pretty hard, and basically moved a lot of the logic for scheduling from the client down to the server. And that means a few things. One is that the implementation for the scheduling logic is in one place, so that if there are bugs, we can kind of rule that out as a server update, and you can update your server rather than updating having many thousand clients you've got out in your network. It also means that there's only one implementation, therefore, it agrees with itself as supposed to different clients implementing the same logic and having slightly different interpretations, possibly correct ones of the standard.

We've also added Server-to-Client push notifications. This is based on the XMPP Protocol, and we've added email invitations and use the Web Calendar. I'll get into these little more detail. Again, in implicit scheduling, there's a big change in CalDAV. One of the other effects of doing this is that it makes it easier to write a client, because you don't have to do the scheduling work in the client, it's all on the server. The web client which is all done in JavaScript, now we don't have to load up all of the scheduling logic into your browser, it just edits the event and the server magically takes care of the rest.

This also means that consistency on the server is improved because if a client does some of the operations but not others, you can kind of get into an inconsistent state. Now, because the server is doing it, we can kind of have a better guarantee that all of access is going to be consistent. And again, with Leopard, if I invited a hundred people to a meeting, the attendees aren't going to know about each other's participation status until iCal sends updates to everybody. And in order to avoid doing a lot of messaging, it doesn't do that very often.

Now that the server is managing that, everybody gets an update right away. And this actually helped a lot with the email invitations. The Server-to-Client Notifications eliminate the need for iCal to repeatedly pull the server, "Hey, do I have any new meetings? How about now? How about now? No? OK, how about now?" And so, now the server says, "Hey, iCal, now is a good time for you to check up for new meetings because we have new data for you," and that helps with server load, and it also helps with the user experience, because it feels a lot more real-time for the user when they get notifications right away as supposed to next time iCal gets around to checking.

But a user Web Calendar-- now we had a Web Calendar in Leopard but it was kind of limited to groups. Now every user can log in and they can edit meetings and schedule, and as you saw that was a very rich experience, you can do free/busy lookups, you can actually do all of the things you can do in iCal, but now you can do them all on the web.

Email invitations allow you to invite people who are not on your server to a meeting, and as you saw, Cyrus invited somebody who had a Google account, but similarly, you can do the same thing with a Yahoo account or somebody who's using Outlook at whatever email system they're using because most calendar agents out there in the world already understand iMIP and almost all of them understand iTIP so that they can get these attachments, open them up and then in that calendar agent, you can reply "Yes" or "No" or "Maybe" to the meeting. Now, we went through some effort to make those emails look pretty. So as you saw, there's an HTML formatted message in there.

There is also a plain text alternative, and then you've got the attachment. Most mail agents will process that for you and the replies that come back actually don't go back to iCal or to your email client and then to iCal. They go back straight to the server which because of implicit scheduling needs that the server can then process that and then update everybody's status immediately.

So everybody knows what's going on. So this is what that looks like in Apple's Mail Client, rendered in WebKit, so embedded you there. This is what it looks like in Gmail. Again, it's pretty similar. Gmail gives you a little effort to accept that right in there. And in Apple's Mail, you can actually have them automatically forward, straight into iCal for you.

Now, there are some other features in Snow Leopard Server that are relevant to the calendaring space. One of them is the Wiki Calendars. Of course, we got this whole Wiki, this-- the user Web Calendar came from the Wiki Calendar implementation. And now you've got User Calendars in that product as well. And again, that's much richer with scheduling and real editing of calendar events.

But notifications server, the "push" notification server, that's push-- that's included in Snow Leopard servers is what we use in order to send those XMPP messages to make the experience more real-time for our users. The Mobile Access Server gives you access to manage-- access to things inside of your firewall, where you can restrict it to certain users, and other certain conditions. And we've integrated entirely with the mail servers.

So that when you configure iCal Server, it just sets up iCal within a-- sets up mail with an account that we can do this email delivery stuff-- stuff was. If you're not using our built-in Mail Server, you can set up, you know, configure IMAP and SMTP for iCal Servers to use in order to facilitate all of that as well.

So again, it's all standard based. iCal has got a whole bunch of new stuff for you as well. We've-- they've done a lot of work to support this implicit scheduling work that we've been doing to make that flow better in the-- in the user experience on the client's side. They of course, have to have support for these push notifications and subscribe to them in order to take advantage of that.

And again, they are now doing these attendee lookups via CalDAV and not through Open Directory which allows you not to have to bind to-- to an OD Server. They've added support for this attendee comments and Cyrus demoed that. So now you can reply to a meeting that I organized and I just see that message, and it's not shared with all the other attendees so you can explain why it is you can't come to a meeting or any other comments you have about it. iCal supports now-- supports Exchange like the iPhone does.

It's got a much simpler experience for setting up your account in the first place, including built-in support for Yahoo and Google calendars as well as Exchange, and the entire application is a 64-bit top to bottom, which is one of the key goals in Snow Leopard on the client in general.

iPhone Version 3, of course, now facilitates access to CalDAV which for us means good news on iCal Server. So for more information on all of this, you can head up Mark Malone, and he can fill you in on any questions you have after this session, and for training information, go to training.apple.com.