WWDC2003 Session 000

Transcript

Kind: captions
Language: en
[Music]
[Applause]
good afternoon in the history of the
Macintosh operating system there are
some defining moments one of those
moments was of course 1984 with the
release of the first Macintosh I'm sure
everyone here is really fond of that
little black and white screen if you
look carefully you'll see all the sizes
for folders I express for disk sizes I
expressed in kilobytes
we've gone quite a ways over the last
two decades now there's another moment
that's very dear to my heart which is
2001 when we released the first version
of Mac OS 10 version 10.2 it already had
all the elements you are now familiar
with the aqua user interface and the
strong unix underpinnings the reception
has been fantastic from our users and
from you who have brought thousands of
applications to the platform so we felt
it was time last year at the Developers
Conference to symbolically burry Mac OS
9 and that meant that for development
purposes Mac OS 9 life was over
it was time to move on to 10 and a few
months after the Developers Conference
last year we released Jaguar which was
probably the most or one of the most
successful arrest releases Apple has
ever had in its history there were lots
of features in Jaguar some were brand
new revolutionary features and some were
just evolution were committed to
constantly improving all our components
so now we're moving towards Panther so
what's in store for Panther I add a
little bit of a challenge preparing for
this presentation because there are so
many features in Panther pretty much
every
you look every component has been opened
and we've added features there so I
thought hmm maybe I could draw an
analogy and I chose for the analogy the
Apple music store that we introduced two
months ago and that has been widely
successful why is the music store
because it has the same wealth lots of
songs wherever you go your brass and you
listen to a song and it's it's just
wonderful and hopefully you will buy a
few along the way now of course I'm not
going to talk about songs here I'm not
going to talk about the top songs also
top albums I'm going to talk about
features and there's of course user
features and you got to test this
morning in Steve's keynote but I know
that you all came here to the Developers
Conference to hear about the developer
features all the features that help you
for your development for your
application and so the first category of
feature I chose to talk about is
mobility
why mobility because we all like to roam
[Music]
now the basics of mobility of course is
great portables and we are happy because
we have the best portables in the
industry we introduced at the beginning
of the year the 12 inches 17-inch
fantastic portables but of course what
you're interested more is what's inside
those things so this is an x-ray this is
what's really inside one of those
portables so if you notice at the top of
that x-rays is kind of funny-looking
bent piece of metal that's the antenna
we've been of course the leaders in
wireless technology first with 802 11 be
the airport 11 mega mega bits of course
and more recently at the beginning of
the year with 802 11 G which goes to 54
mega bit
that's what we call export X Airport
extreme we are also adding for Panther
802 1x now the whole naming of those
things is a little confusing at all
those bizarre letters that are added
after numbers L 2 when X is actually not
just wireless protocol it's an
authentication protocol that can be used
for all networking and this is where we
put it into the system
at the place where it should be so that
all networking can leverage 802 when X
ok so let's go back to that picture of
the portable and let's focus on the
modem port and the Ethernet port and the
antenna again all those things together
or networking ports so networking is a
big focus of what we do there's a lot of
resources that go into doing networking
right and that's really hard because
networking is fundamentally very hard
there's a joke that networking is only
one letter away from not working and
that's really true and when you do the
rehearsals for Vishu and you have all
kinds of networking problems the rattles
Attucks
the rest of you realize networking is
really really hard so because it's so
hard we make it a system service so that
if your application is a
document-centric application it should
not have any networking code we do the
networking code so we have a number of
new features in Panvel that your
application can leverage we adding ipv6
IP SEC and based on IPSec we're adding
VPN that I'm sure a lot of you who in
corporate environments will will enjoy
802 NX I already mentioned and something
that your application may actually want
to use is what we call the advanced
reach ability API
let's say your application depends on
the server out there and one way to to
make sure that the service you depend on
is there is to ask every every second
every minute you just poll and ask this
is terrible this is polling this is
really bad for a number of reasons so
what we have provided is rich ability
API where you can say hey I'm interested
in this server call me back when the
reachability change whether the server
becomes reachable or not reachable and
one thing which is fantastic is that we
know exactly as a reach ability because
we are working on the lowest layer here
so I already mentioned that that working
is hard and this is BSD networking at
the lowest level is very tricky and so
what we did is we put a layer on top of
the role BSD networking that we call CF
network that abstract some of the
difficulty away and it's an abstraction
to support a number of protocols circles
DNS all the common protocols that you
use in your application it's also a
layer that really meshes well with your
application because all the data types
are to use in your application as a same
data types that are provided by CF
network so you have a bag of byte you
have a string and also it meshes with
the event group so run loop of your
application so see all the events coming
from safe network addressed events that
all get merged together in this run loop
and
that get redistributed to wherever you
want in your application we added some
new functionality for CF network in
Panther we have a new host concept and
that's where you can do dns lookups all
a synchronous and that's also where the
reach ability plugs in so CF network is
definitely easier it's also fast now why
do I say fast well we use it okay we use
it in key applications that are fast and
if you look for example at Safari the
speed derives from the rendering engine
of course but also from very fast
networking all the networking in Safari
is done with CF network that's how we
make sure that what we do is really good
and all the other applications presented
here do you see F network okay so let's
go back to that picture and let's focus
on another interesting rectangle down
there and that's the hard drive that's a
storage for your computer now with
mobility you have new problems with your
storage the first problems that you have
is disconnecting because let's say you
access the server an NFS server an SMB
server and FP server now you close the
lid and move to another location you may
not have access to the servers so what
we are doing in Pantera is putting some
effort into filesystem mobility to
facilitate disconnection and
reconnection so the AFP is the DFP
client is now reconnecting when you move
to another locale now in an
industry-first
our NFS also supports mobility this is
for all of you who have been using NFS
this is really industry first and you
usually when you connect with an NFS
that you start ok
you move to another location without
service not accessible you have spinning
wheel forever
so another problems that you have with
mobility and storage is that you are
going to evolve the storage on your
computer you are going to work on a
number of documents that you have
locally now at some point you want to
bring those documents back to the rest
of the world and so you have this
thinking problem now this goes both ways
the rest of the world also evolves and
you may have some caches of the rest of
the world or some documents from the
rest of the world and they're still as
when you reconnect after your airplane
travel so that's why we have over the
last year developed new syncing
technologies to help this mobility story
to help the whole mobility program area
so we started at the end of last year
with addresses syncing calendar
information syncing we added just a few
weeks ago bookmarks bookmarks syncing
for those of you who are who have that
Mac and have several computers now you
can keep the bookmarks on these
computers the same it's really a
lifesaver for me now I'm new in pant fur
and this was touch upon this morning
we're adding file syncing with the eye
disk syncing that enables you to keep
the IDS the same on all your computers
ok so let's go back to that picture and
this those bizarre cylinders down there
what are they well those are all the
weights that you carry when you carry
your portable is that when most of the
masses we enter land of physics here
that's your energy source so there's an
interesting equation this is the biggest
equation I have in the presentation by
the way I won't go any further than that
which says that if you compute more you
consume more energy any registered
transfer that you do is going to eat a
little bit as that battery so so the
more you compute so more battery you eat
the more energy you consume the same
thing goes with the frequencies actually
roughly
wherever the frequency so if you compute
very fast you are going to consume a lot
more of that battery than if you compute
slowly so what can we do about that well
if you look at that frequency term first
the first thing that we can do is slow
down the OS when it's not needed to go
very fast and so we do that okay in we
have this low power mode where we just
don't consume too much energy and we
slow down the processor we power step
back now let's look at the over term
that's the computation and of course you
want to get rid of all unneeded
computation now that's sometimes some
computations as I need it for example
polling to have that server to know
whether that server is online or not
that's not needed you can use a
reachability API to avoid that
computation so to summarize how to save
that battery you should minimize the
computation be even driven and above all
no polling okay so there's a number of
recipes here to have to be a great
citizen for mobility and you should
adopt all the system services that we
provide at the lowest level at the
lowest layer for system networking you
should use api's like the rich ability
api if that applies you can program at a
higher level using CF network you can
performance tune by having things more
synchronous more even driven more on
demand you can use spreading because we
have a modern operating systems that
support threading in the networking
intrinsically and you can be more even
driven if you do all that you will reach
the near vanna for mobility which for me
is careful computing okay so that was
mobility now what are you going to do
with all this mobility
[Music]
reaching people is one of the activities
that we do the most on our computers
nowadays which is fantastic it's human
centric computing so we added a key
technology to reaching people and that's
on level only who enables you to
discover your neighbors it's Auto
discovery its breath ability of the
people nearby in the networking sense
now rendezvous is totally compatible
with existing hardware software it's you
don't need to change your routers or
anything like that it's all based on a
standard networking it's all based on
tcp/ip and DNS it's fundamentally a new
way to use DNS and to build upon that
whatever of course is modern and
supports human readable names not you
know eight character limit or anything
like that and it's a key to a DAC
networking when you don't have a
sysadmin that's going to hook up
everything just right and give you know
all the IP addresses and put everything
in control and all that stuff when you
just have totally a dork you just plug
in like here in in this conference this
is a dark networking and the holiday vu
is fantastic in those situations now
what's very pleasing is that we released
on day through last year with Jaguar we
had adopted it in a number of
applications this year we are using
other whoo even more we enhance some of
those applications to leverage even more
rendezvous and we're adding new
applications into the mix but beyond the
adoption
one thing that is really making me happy
is the innovation that has taken place
we've owned a room and that innovation
comes from you it comes in the different
forms it for example you have printers
that have adapted on a room you have
games multiplayer games that are using
on the room you have some devices and
you have some brand new way to do
collaboration using on a room and that's
very exciting to me so our view is from
testing to find out who your neighbors
are or to communicate with your
neighbors but there are times where you
want to reach someone who's not nearby
and that's when the address book comes
handy so the address book is an
application we've invested a lot of
effort to make it just right and the
address book of cross manages all your
addresses now we have a number of
applications that use the same addresses
and as time goes we put more and more
application that that go to the same
storage fundamentally the address book
is an application that chooses the
databases underneath and the key here is
the database the application is
fantastic but it's on top of the
database that database has a number of
API is that you can use for your
application we consider that the
repository of addresses is a system
service that we provide for all your
application we want this to become the
hub for all the communication centric
applications and we are doing a lot of
refinements in Tantra we are improving
the API adding some functionality that
has been requested here and there one of
the functionalities that we add is what
we called the action plug-in so let me
set this example let's say I want to
call this this person I have his address
scout there and now I need to reach the
phone to call that person so I promise
that my screen is over there my phone is
over there so I can just click at the
right place and now I can enlarge the
phone and now I can type the phone so
this is a functionality that we've added
to the address book and that
functionality is using the action
plug-in and it's available for all of
you to specify for your data type how
you want to have what action you want to
have happen for that data type another
functionality we've added is what we
call the people picker which enables you
to filter the database of all addresses
and select and let the user select which
address they want to have and then that
selection is available through your API
okay so you
education can definitely in many cases
uses two fundamental technologies or
they rule and address book and that's
reaching people one of the activity we
do the most on our computers now let's
change the beat so this is my techno
session that's really UNIX that I want
to talk about so we have now Mac OS 10
totally based on on UNIX this was a bold
move and we wanted to let the world know
about that so we run this ad a year ago
telling everyone hey we are unique space
why would we choose UNIX for a number of
obvious reasons UNIX is very very solid
UNIX is powering the internet most of
the servers out there the Internet
servers are running UNIX computers so
that's kind of testimony of how solid it
is it's very mainstream there's no doubt
that you hear but talk about UNIX
everyday and nowadays it's it's quite
interesting it was for us the fastest
way to get to a number of features no
other place we could have gotten a
networking stack that has thousands of
engineers put into it in terms of tuning
in terms of being standard compliant all
those things in fact networking is
defined on UNIX in general and this was
also a way for us to attack new markets
markets where Apple traditionally had
not been particularly strong and now
that we can go towards so we've the
great mobility that we have we have now
a dream machine for UNIX folks it's a
portable that you can take on your
conference draws you can do presentation
because you get all the standard
software all the productivity software
you get PowerPoint but also now keynote
of course and if you also have world you
know all those things
to all of us use daily and so some
people are really liking it and if you
look carefully and at that picture
that's Jem Gosling or of Java FM who of
course is using a power book
so our UNIX is very very standard we are
very good unique citizen in fact if you
work to a book store and you look at
some titles you will see titles like
this that all apply to a platform so is
it perfect
well we always get a lot of feedback
that's always kind of requests and even
though everyone is telling us yes it's
it's really a good citizen I mean I was
very surprised to find everything I
would expect there's always the top of
the list and the top of the list for us
was X 11 so X 11 is a tool box a window
toolkit that a windowing toolkit that is
very ubiquitous in the UNIX world
I think x11 has been ported on all the
machines all the UNIX machines in the
world and if you go to the scientific
areas you'll find applications that are
programmed to x11 something for higher
ed or the enterprise so we've integrated
x11 right into Panther and by
integration I mean that rather than
having one big windows that has all your
x11 applications kind of inside that
window now you can have x11 applications
that have Windows that mix with other
windows from all the cooker herbs or all
the cabinets so fully integrated with
quads another thing that was heavily
requested is to have really really fast
x11 and especially for doing OpenGL
functionality because a lot of the
scientific apps do use OpenGL and so
those applications didn't want some
installation layer with OpenGL so I
wanted to go down to the metal and this
is what we have done when your
application uses your x11 application
uses OpenGL
it's a native OpenGL now let's talk
about standard so another request that
we have constantly is to add things to
add little things
and one of the top requests after X 11
was to add a great XML parser so we've
looked around and we asked a lot of
people what's the best XML parser that
we could add and pretty much the
consensus that has formed is lib XML -
so this is what we're adding in Panther
another place where we had some request
was for locales and we added ICU the
international components to Unicode for
Unicode we adding wgot which also was
heavily requested to help you port
applications to Mac OS 10 and a few
others and of course there's a constant
refresh we are committed to constantly
refresh all the unix components that
need to be refreshed one of those things
on the list of the Refresh list is ufs
and that brings me into file systems we
added journaling to the file system last
year for the server now in Panther it is
a standard all panful systems by default
will have a journaling file system this
is taking the high end technology and
making it available for everyone we
added NFS looking quite frankly it was a
shame that we didn't do lucky we fix
that we added mobility for the file
systems as I already mentioned and we've
had a lot of emphasis on performance
performance of the remote file systems
like SMB NFS and web dev but also
performance of ufs now for those of you
who used you FS you are pretty much at
parity with HFS+ which is quite a feat
ok so I'd like to digress a little bit
and talk to you about architecture and
I've been architecting systems or being
involved with authorizing systems for
over two decades now and I've realized
over the last few years that I'm kind of
part of the old school of design so what
do I mean by old school
oops okay so that's I started to realize
a few years ago so that's kind of the
old way to do design let's say you have
like a subsystem to architect the first
thing in the old school that you do is
really try to get to the essence of the
problem and you create this wonderful
engine that's going to just address the
problems you know there's a core problem
so you design this vision and the API of
course that you have on top of the
engine for all the applications and you
spend a lot of design work there now
there's some books that says hey you
should do top-down design all that stuff
but we all know that it's it's both
top-down and bottoms up you actually
write some code along the way and then
you verify your assumptions are correct
and all that stuff but essentially this
is the design phase after that you write
a lot of code and that can take months
because it's brand new piece of code and
so we all know that there every ten
lines or so you make a mistake and you
have to debug find that mistake and even
with something like Xcode it can take a
bit of time so then you have this
systems that's perfect okay you have it
just perfectly integrated to your system
you are very happy with it and you say
well now I need to connect to the rest
of the world and that's really ugly
because the rest of the world has all
those legacy systems ISO standards you
need to connect to and that's where you
need to write adapter code this is this
is tasteless and you write all those
I've kept the codes and finally you have
the system that works well for your
system and that integrates with the rest
of the world now I think that's a new
way to do that and the new way is open
source so how does that go with a new
way the first thing you do is you go
shopping this is very bizarre you just
go shopping the problems that you are
trying to solve probably has been solved
by quite a lot of folks in the past so
you try to identify those bodies of God
that's solve use the same problems that
you are trying to solve and you evaluate
those bodies of code
you evaluate them looking at the speed
of those buddies of God you look at the
standard Ness as I started compliant and
this is the most bizarre of all things
you look at the reputation that they
have on the net okay this is this is
really like shopping so the next thing
that you do is you write adapter to your
system so this is kind of the reverse of
the previous picture the piece of code
that you have is totally standard it
totally fits with the rest of the world
now you are trying to adapt it to your
system so maybe your system has a
different UI maybe your system has an
aqua user interface that's where you
will write some code to adapt it to your
system now this is not as really a bad
thing because you're actually going to
add value there's some examples that can
come to mind there where you add value
by making this fantastic user interface
on top of this engine that was an open
source engine and the last step which is
very important is to advocate your
changes with the community you don't
want to be on a diverging branch of
evolution because guess what the rest of
the world will win not you and so you
want to make sure you are all converge
okay so so you need to to advocate your
changes and the best way to advocate
your changes is to make sure that you
have value in your changes you don't
want to do like crazy renaming your
variables and changing everything no no
no that won't work you want to do the
minimal amount of code that adds value
so what are the advantages of this
approach obviously this time to market
you no longer have the downtime of going
away for a few months and writing all
this new code also it's a lot more
reliable which sometimes may be
misunderstood but the open source code
is actually very reliable and this has
been proven in our experience we've done
that with lots and lots of bodies of
code and typically the open source code
has way less bugs than the new code that
we write because the new code that we
write is new there's no secret here it
is also very secure very important in
this modern age if the code is not open
source say it's closed it's not secure
that's pretty much
always true and there's a social aspect
of this which I personally like which is
this two-way exchange with the community
you get some you give them back so we
are using this strategy of course in my
Christine we've used that in Jaguar for
a number of components and we are doing
that for more and more component I just
listed a few here one of the most
noticeable in this list is of course
KHTML which is the rendering engine of
Safari but the there's many more in fact
you go to any group at Apple and pretty
much every group is incorporating
open-source went from another okay so in
summary with your application and Unix
first if your application has been
running on UNIX forever but not on Mac
OS then bring it drawing the party this
is the place where things happen and
it's easy to port your application to
Mac OS 10 because my question is very
very standard we've got all the
facilities that you want to help you
port now conversely if your application
has been running on the Mac forever now
you have some new markets where you can
expand you can go to the scientific
market you can go to the higher ed to
the enterprise market and the two sides
can come in there's some technologies at
a longtime Mac OS technologies or
technologies in your application and
there's some technologies that come from
the UNIX world just new synergies to
explore there and think about
incorporating open source this can save
us quite a lot of time and you end up
with a better product in the end so this
was my techno section
[Music]
at this point I'd like to thank you to
have come from all over the world to San
Francisco and one reason while you may
have come here is that you went on the
web and so this enticing video saying
come here to San Francisco and that
video of course features Scott frost all
my friend and colleague that is going to
take over at this point
so now you know that I only have one
nice shirt this is not an intro for me
this is intro for aqua so we believe
aqua is incredibly sexy and we've worked
this year to make it even sexier and
we've worked to improve the usability of
Mac OS 10 as a whole so let's get into
it we started with the open and save
panel here's the open panel here is the
open panel here there's the open panel
in Jaguar a few people didn't think it
was the greatest open panel they'd ever
seen in the background and we agree the
problem with this open panel is it
wasn't user centric it wasn't human
centric it was all about the computer it
was computer centric I mean just to get
your home directory your floor levels
down right you're always scrolling back
and forth trying to find things
so one thing we did this year is we have
this brand new finder right a user
centric finder and inspired by this we
have a brand new open panel as well so
the open panel has the same left column
you see in the finder you can get to
your you know your Documents folder your
pictures anything your home directory
extremely easily it's right there for
you you can also get to your your
devices and really importantly and I've
been using this for a while I love it
you can get to your removable media
right so you throw a disk in or you
mount a drive it's right there in your
open panel in your face another request
we have which we have for Panther now is
we've added ListView so
this fuse built-in we also have a path
pop-up up there we have back and forward
buttons so we think you're gonna love it
now we haven't forgotten about how you
like to customize the open panel right
you like to add your own widgets so we
have that as well in an accessory view
at the bottom so we've done this in a
binary compatible way there's no new API
so you should have to worry about your
application should just get this much
improved open panel when you run it on
Panther please install the seed you got
this morning test it out let us know if
there's any issues because we try to do
lots of tricks for those of you who are
doing crazy things in your open panels
to get your controls in the right place
we think we've done it but let us know
and of course we didn't forget about the
safe panel so again we've made it user
centric we've been asked a lot about
that that switcher thing people say hey
you know what about that switcher thing
not that's what your thing although we
get asked a lot about that switch with
thing also that switcher thing right
there so we have this view switcher in
the finder and we've decided you know it
really works well as a control in a
number of different places so we have it
in the finder you notice we have it in
iPhoto as well we added it to the
address book so we had a lot of requests
people saying hey you know you're using
that and we actually had implemented
that ourselves and each of our apps but
it clearly was a nice standard control
that you wanted and so for Panther it's
built into both carbon and cocoa you've
got it
we worked really hard this year to
polish aqua and make it even that much
better
[Music]
all right here is aqua in Jaguar which
we thought was great but we knew we
could do better and every release we try
to refine it and make it even better the
first thing we looked at were those
white corduroy lines we felt they were a
little too strong in some places
you'd look at a window and if there was
text over it it felt more like an
interference pattern than it did like a
nice texture so we went through tons and
tons of different background patterns
trying to look for something better I
mean sort of like Thomas Edison going
through filaments for a light bulb we
through each one out we throw out
different materials we had a mock-up
with gold and at the end we settled for
something which is very very subtle you
can see it better on your machine when
you install it but here it is so here's
Jaguar Panther Jaguar Panther what we've
done is we've toned it back it's very
very subtle your eye sort of notices
that there's something there's a texture
there there's something elegant but it
doesn't get in the way of readability of
text or other elements the next thing we
looked at were the tabs so you know
these tabs work fine but the top felt a
little bit clunky and we love this
switcher thing we've added to the tool
kits so we looked at that and said if we
can start with that and then we can we
can do better we can make a tab out of
that you notice the tab here also it's a
sheet that sits sort of awkwardly on top
of the window we decided to etch it in
so there's the tabs on Jaguar there's on
Panther it's a Jaguar panther
Lia's great and the most important thing
for all of you is the mantra this year
was save the same metrics so this is the
exact same metrics as the tab in Jaguar
the content regions the same the control
is the same you don't need to do
anything you get it for free the next
thing we looked at was the toolbar so
there's some apps that use the toolbar
in a way where it's more of a view
switcher when you click on it like in
System Preferences it takes you to a
given pain but there's no persistent
state in the toolbar in Jaguar to show
you where you are now there is so here's
Jaguar here's Panther persistence date
let you know where you are there's an
API you can adopt for that if you use
the tool or in that way next we looked
at the title bars the inactive title bar
goes translucent nice use of courts bad
use of UI to find what windows are
inactive you have to sort of look around
and say well what windows are
translucent and how do you know that
well gets a different color depending on
what the background is behind it you
look at it be untitled there and it's a
little difficult to read you get
interference especially if it's over
another text document so we said okay
we're gonna take and make the inactive
title bar windows opaque now once you do
that it becomes more difficult to tell
what the active title bar is so we took
the active title bar and we add a nice
simple gradient on top of it and here it
is there's Jaguar Panther Jaguar Panther
we think you're gonna love it
the next thing we do
is panels so in Jaguar there's no way
for you to tell if a panel is key
meaning if you hit delete here is it
going to delete a font collection or is
it going to delete characters in your
text document right there was absolutely
no distinction what we've done and
Panther is there's now a key state for
your panels
so here's Jaguar here's Panther you can
actually tell and it turns out there's
three distinct states now there's the
key States and this in the panel is now
key
there's the document it's acting on
which actually has a little bit of a
gradient but it's very light gradients
and that's the main window and then
there's the inactive window in the
background now you shouldn't have to
worry about this as a developer the
toolkit should handle this for you
automatically
unless you're doing wacky stuff for the
tool kits and windows so you should pay
attention to make sure you're not
breaking our job of doing this
automatically for you so that's the
third state so here is aqua and Jaguar
Aqua and Panther Jaguar Panther all
right so we heard this year that a size
definitely does matter and we've reacted
to that you see we've had our standard
controls and the standard controls you
know button and sliders and everything
work great almost everywhere right I
mean in most usage you want to use the
standard controls but some places you
want to use small controls because
you're creating a pallet so you want to
squeeze a little more into that pallet
but we found that in some pallets or you
know pro apps with lots and lots of
pallets even with these small controls
it feels a little bit cramped and so we
got requests to have even smaller
controls so new for Panther we're adding
mini controls
so we still have our standard size
controls are small controls and now this
suite of mini controls and if you look
back at that palette again here's the
palette with the small controls which
looks pretty good here's the Palace same
palette with mini controls you can
really tighten it up and you save that
much space so if your app is the type
that it's a it's a pro app you have lots
of palettes take advantage of the new
mini controls and Panther
so we're gonna help you find what you're
looking for in Panther when we built
iTunes we found that one of the most
important elements we added one of the
most important features we built in was
this it's this great search field
there's three elements of the search
field it's fast it's incremental and
it's readily accessible - right there in
the main window as we've built other
applications like mail we found the
exact same thing we wanted to have a
fast search field incremental and right
there in the main window address book
fast incremental right there in the main
window iCal has the same thing as does
the new finder right it's one of the
really important features of the new
finder the new font book great search
fields built right in
even Xcode is really built around having
great search built right in we found
this wasn't just an element for us to do
it's really more about the user
experience of using most applications if
you can build great search right into
your application your application will
feel better it'll be a better experience
for the user so we're gonna help you out
in two ways this year number one we're
gonna provide the UI there's now a
standard search widget built into both
cocoa and carbon it looks like this
we're branding the rounded text fields
to mean search so if you use a rounded
text field that's a search field don't
use it to mean anything else it has an
optional magnifying glass you can use
that to have a drop-down menu where you
can scope your searches where you can
save older searches and and someone can
choose the older searches from there so
that's the optional magnifying glass it
also has an X in there which clears the
search once someone's typed it so we're
providing the UI and both cocoa and
carbon for Panther next we're providing
the engine so we're building in a new
framework into Panther called Search kit
search kit is an a search engine you can
all use for your applications we already
use it for
these applications so for the finder for
the address-book mail help it works
really well so what is Search kit its
v-twin but much evolved so back in mac
os9 we had something called v-twin it's
a search engine people really liked it
and we've been moving it forward and we
got it to the point now we're ready to
make it public and Mac os10 and fully
support it going forward it supports a
bunch of different kinds of searches so
prefix searches like you'll see an
address book and a lot of these apps
boolean searches natural language
searches so you can ask a question and
even similar documents so if you do a
search and it comes back with the
document but that isn't the document
you're looking for but you know the
doctor you're looking for is similar to
that document will actually do an
analysis of that document look at all
the other documents you've indexed and
returned these similar ones and it's
fully Unicode based CF string API is
built right in so you can index any of
your different languages for Japanese we
actually do some really difficult work
which is we have to do linguistic
analysis to figure out where the word
boundaries are because there aren't
obvious word boundaries we do that all
built right into search kit it supports
these six document types right out of
the box so text RTF RTF with graphics
HTML PDF and even word but when your
application adopts search kit you can
add on support for any type of
application that your or any type of
document that your application knows how
to parse so that's aqua we've taken the
finder and made it very user centric
instead of computer centric we've taken
the open and save panels and moved them
right along with the finder we've added
that switcher thing as a standard widget
we've really refined aqua and we think
you're gonna like it we've really you
know tried to polish every little thing
there's a lot of other things I didn't
show you which we've polished we've
added mini controls and we encourage you
to adopt search and we provided both the
search field and a framework to help you
do the indexing itself
[Music]
I'm not gonna moonwalk
so for text we've done a bunch of things
this year starting with text input for
Japanese we've really improved text
input for Japanese the first thing we
did was simplify it and Jaguar you had
to go to a bunch of different menus
different palates to try to find the
right input method in Panther there's a
single menu for you to go to it has
everything you need and there's a
standard single palate you can keep on
your screen to switch between the
different input modes so we've
simplified the UI the next thing we did
is we improve the accuracy we made it a
better input method there's two main
ways we did this we started off by using
the latent semantic mapping technology
from our speech team now this is the
same technology we use to do junk mail
filtering and what we've done is we use
it to sort of predictably guess based on
the characters you're typing what actual
character you're going for so based on
the keystrokes you're typing what
character you're going for and this
actually improves our accuracy quite a
bit the next thing we've done is we use
the context in which you're typing to
figure out what character you're looking
for so as you're typing along rather
than having to guess what character
you're going for purely based on you
know the the keystrokes you've done we
look in the document we look around in
the document for other characters so if
the keystrokes you've typed could
resolve in three different characters
and you've already typed one of those
characters into your document a line
above will guess that character so it
helps the user you know get the better
characters faster now the important
thing here is you need to adopt this to
help us out so there's a protocol you
need to adopt this protocol which will
vend back the context of the document
the person's typing in so it can pick
the right characters we've also added a
preference for all of those people who
are coming from the dark side to the Mac
and you know they still want to feel
comfortable with
elements of the old crack home in the
new home so you can use the same pipe
but it's now on the Mac and it feels
comfortable bond support we've really
simplified dealing with fonts and
Panther the first thing is installing
fonts is as easy as double-clicking a
font file it comes up with this preview
you hit install it goes right to the
font book so installation incredibly
easy but the access for those fonts is
in the font panel itself so you should
build the font panel and use the font
panel in your applications that's where
your users will get at the fonts but
they install it through the font panel
or through the font to book next the
font book is for organization so you can
create new collections you can populate
these collections and again you access
those collections you access those fonts
through the font panel in your
application you can also activate and
deactivate fonts so take that font
collection we just had we deactivate and
you'll see it disappears from the font
panel so we really encourage you to use
the font panel as the standard access
method on the system for fonts however
we know that some of you have very
custom UIs for your fonts and the font
panel doesn't make sense for you so for
all of you
and Panther we've added a new set of
api's to get directly at these
collections at the activation and
deactivation of those you can use it
directly text performance there's one
thing we heard loud and clear from you
about our text performance in Jaguar
[Music]
I see that all the fish fans have perked
up from making bongs out of their new
cameras
the only fans where textfields opens too
fast all right so okay so if you sample
your application you're gonna find that
a lot of time and your application is
spent dealing with text right it's spent
laying out the text measuring the text
drawing it to the screen redrawing it
when there's a window resize and that
makes sense because a lot of what your
application does is draw text right so
this is how we've optimized it
all text is wrong translucent and
Panther yeah so so we looked at that and
we actually said well here's a great
opportunity because anything we can do
to improve the performance of text is
going to improve the performance of
every one of your applications and of
the system as a whole and so we looked
at all this text we draw and we spent a
lot of time optimizing all of this for
Panther and I think you're going to be
really pleased with what we have let's
look at the stages where we went through
an optimize we looked at the font system
so 80s and all the different pieces
involved there we looked at core
graphics and how we get everything to
the screen atsui does a lot of the
layout and the carbon and cocoa api's we
had a concerted effort this year where
we went through and we optimized every
single layer of the text system then we
stood back and we optimized holistically
we looked across different layers and
said are there places where
atsui needs to leverage the font system
directly is there an impedance mismatch
and can we plug that up with some new
api's to make it faster are there places
where carbon should talk directly to
core graphics and so we optimized across
layers as well well I'm pleased to say
is the outcome of this is if you look at
any of the text API is pretty much from
the lowest level to the highest level
they're all more than twice as fast and
Panther so this is a great achievement
there's some places where it's even much
faster than that so it's you know five
or ten times faster again I absolutely
encourage you please install the new
seed and see what performance
improvements you get out of the text and
Panther we're continuing to optimize
text and we'll do so until the final
version of Panther is in the box so you
still have time to let us know
are there any bottlenecks remaining if
so we'll try to improve them before we
go 100 or before we go ten three with
Panther that's text so we've improved
that Japanese input we've added great
support for font maintenance and
management and most importantly a lot of
performance work so carbon we believe is
a gem and we're treating it that way and
continue to evolve it a lot of what I've
already talked about for things like the
switcher thing and many controls are
features that we've added to carbon this
year so I'm just going to talk about a
few specifics for carbon in this section
this is the age of a chive you last year
we introduced HIV you to you we spent a
lot of our time this year improving HIV
you and sort of making it permeate
throughout carbon HIV is the future of
the h-i toolbox so if you have a carbon
application adopt a chive you most of
you who have already adopted carbon
events which is great HIV you is the
next step in this progress we've added a
chai textview so we took em LTE and it's
now in a chive you we have a chive you
based menus so it's much easier for you
to extend menus for you to add your own
functionality if you saw this morning we
have this action menu in the finder and
allows you to set different colors for
labels that's all done through the use
of the new HIV you based menus and we've
had a great layout support so we have
springs and rods but we also have a very
complex relationship so you can look at
different views can sort of pay
attention to each other and when the
window resizes they can resize and very
complex relationships whatever you need
for your application
and it's much faster which is another
theme of the H I toolbox this year
performance optimizations we have a
complete set of quartz themed api's so
we used to use quartz in our lair then
we go through quick drill and we go back
to quartz and it was a little slow we
now have top to bottom a complete path
which is all quartz we encourage you to
take advantage of it it's much much
faster data browser data browser we
heard from you wasn't fast enough
we made a 25% faster to add new items
80% faster to remove items and if you
have very large data sets it is much
much much faster much and it now
supports compositing mode as well we've
also added really improved window
resizing so it's at least 30% faster in
most cases
if you have a fully composited window
it's even faster so we encourage you to
have your app be fully composited it's
carbon all right so we think you'd be
Loco not to use Coco for a new
application all right again just like
carbon we've added a lot of things to
cocoa this year but I'm going to talk
about just one so stepping back there's
a standard development developer
paradigm called Model View controller
right and so most of you probably know
what this is but you take your
application you separate out separate
out the UI piece which is your view from
the model piece your data and there's
this controller layer in between which
pretty much is the glue that moves
things back and forth so cocoa has had a
model and NS document and it also had a
view and ennis view but it hasn't had a
controller layer what this means is
you've had to write a lot of glue in
your applications to do that controller
layer well how did you say that for
Panther we're adding a controller layer
and as controller
so why should we do a controller layer
okay this is up to ten thousand feet now
our goal as a platform vendor is to make
you the most efficient develop you
possibly can be right we want you when
you have a new idea to implement that
idea on Mac os10 first and get it done
the fastest possible so that's our goal
we believe that cocoa that the shortest
distance between a brand new idea and an
app implementing that idea is cocoa on
Mac OS 10 so what do we do to that end
number one we provide all the standard
functionality right so we provide views
and controls and and text views and
collection classes not and on and on
right cocoa is our advanced
object-oriented framework and it
provides all that standard functionality
the next thing we do is we continue to
try to eliminate redundant code so if we
see that several applications are trying
to do a certain thing with text we add
new api's to the text system to help you
out but this year we sat back and said
can we do more and inspired by a couple
technologies apples had EOF and web
objects we've added a whole new layer
which eliminates an entire class of glue
code so we're getting rid of the glue
code so what is this glue code you know
when you're writing an application and a
user updates a value in a text field and
then you need to write this glue code
which goes and updates your model based
on it you don't have to write that code
anymore it's gone the controller layer
we provide does that automatically for
you when your model changes you have to
have glue code which then reflects that
new value in the UI you no longer have
to write that code in Panther the
controller layer take care of that for
you you might have a couple UI elements
or multiple UI elements all reflecting
the same data value the same model and
you have to write all this code where if
it changes one place
synchronize all the other ones so they
don't get out of sync so you see the
same value everywhere you no longer have
to write any code for that it's all done
automatically in the controller layer
and sometimes the user will click to
change something for instance you have a
table view a big list of values with
multiple columns and depending on which
column the user clicks on you sort by
that column you've had to write all this
glue code to do sorting for your table
views no longer the controller layer now
supports sorting out of the box for free
and of course we didn't forget that if
we're doing it we better integrate it
into IB so interface builder in the past
has supported hooking up targets and
actions meaning you could tie your UI
directly to the controller layer you
were writing and Panther you tie your UI
directly to your data directly to your
model you don't have to write any of
that controller glue in between it's all
provided by this new controller layer in
cocoa that's the controller layer all
right let's talk about the internet
let's start off with Sherlock so what is
Sherlock Sherlock is a web services host
application so you can write quickly
write a web service a client side of a
web service as a Sherlock Channel it'll
run inside of Sherlock and and you'll
get this great client side experience
for that web service O&H an XML feed or
an HTML feed you can get that right
inside here so here's an example of one
of the ones we've written for our movie
channel it seems that we're required by
our CEO to have everything be Nemo this
year so you know this is a nice standard
channel what we found this year is that
more of you have been writing channels
and so we needed a way to organize these
channels so we used the same library
organization mechanism that we have in
Safari and have brought it into sure
lock so we now have that the most
important one of those collections on
the left though is this one this is a
dynamic collection it's a dynamic
collection of every channel which
appears either on dmoz and dmoz is an
open directory sort of the Yahoo open
directories they collect things they
collect Sherlock channels so if your
channel appears on dmoz or you submit it
directly to us it'll appear in
everyone's copy of Sherlock dynamically
every time they launch it so this is the
way for you to get your channels out to
everyone else
that's Sherlock
all right Safari when we built Safari we
had five main goals the first two were
performance related it had to be fast it
had to be fast and it had to be small so
we've succeeded on these two goals and
Safari is the fastest browser on the Mac
as you know most of you probably use it
and I get asked a lot well how did we
succeed on it how did we make it small
and fast what did we do so let me take
you through that just a little bit
because it wasn't magic and I think this
might help you understand what we did so
we'll help you make your applications
fast as well most importantly we made
performance the most important feature
of the application right and this is one
of those things where for engineers to
actually work on things you have to make
it a feature that they're going to
measure it against or else they're going
to sort of ignore it till the end so we
made it the most important feature for
everyone on the team we start it with a
small code base if you have a small code
base you're running less code it also
means you can get your head around all
that code so you can optimize the entire
thing and this is probably the one which
is the most controversial and it's the
first project I've seen actually that
does this we allowed no performance
regressions from build to build period
so even when an engineer implemented
some new feature and they check that new
feature into the codebase and we built
that and we measured it if our page load
times got any slower at all we checked
that back out of the main trunk of the
code the engineer had to find a way to
make it to implement it again without
any performance regressions or they
could be tricky and go optimize a
different part of the system of
different part of the application and
check it back in so it still didn't
regress that was the rule
now you can't tell people that upfront
because they put really slow stuff all
over the place and the sleeps come out
as they add features so we measured
constantly to know where we were also
this was really important we hand time
things we sampled running processes we
built automated tests and we created
charts charts all over the place so we
saw what was happening with our
performance so we were never surprised
you know a chart would come out every
day or every other day whenever there
was a build and if we saw there was a
blip going the wrong direction we
checked that code back out there's a lot
of great tools in the system and we use
them so sampler is a really good tool to
find out where you're using CPU time
malloc debug and heap are great for
memory usage quartz debug if you haven't
run it is fantastic for finding your
drawing problems if you're drawing a
control two times three times four times
you were drawing it multiple times
quartz debug will flash it right in your
face and let you know that you're
drawing something multiple times FS
usage tells you how often you're
touching the file system and the more
you touch the file system the more your
application runs at the speed of the
disk instead of the speed of you know
the g5 and trust me the g5 s faster than
your disk so run FS usage and cut down
the number of times you're touching the
disk and there's a lot of other tools we
ran all the tools this one I think is
one of the most important we built
performance tests directly into the
application that means that anyone
internally running Safari throughout the
entire development cycle could run the
performance tests that means I could run
them and I did each time I got a new
version of Safari I would run the PLT I
would run the tests they were built
right in I would see what the speed was
on my machine I knew what it was
supposed to be I would know if it got
any slower and if it did I'd call
someone so building tests directly into
your application is I mean I can't
overstate this if you look at
applications where people have done this
those are generally fast applications so
what are the lessons we learned
make performance a priority if you do
your app will be fast
use the right API for the job this is
one of those things where it should be
obvious but we have lots of api's on our
system and some of them are generic and
do a good job of a large amount of
functionality for instance we have api's
that are meant for a large editable text
view and it's meant to handle
bi-directional Unicode text right so
this is great but it's not great if
you're drawing a label so we've added
optimized api's for certain smaller
pieces of functionality so when you're
going through and you find an API that
solves the need you want keep reading
through that header file to see if
there's anything else we've added just
for your usage use the write API for the
job and you'll get better performance
measure measure measure measure to find
where your bottlenecks are measure to
find if the new API you're using is
better for the job and measure to prove
to yourself after you've made the
optimization that it actually made your
application faster and never regress
again this was controversial but it
really helped us nail it instead of
trying to optimize at the end we were
optimizing the entire time so we made
architectural changes that would make
the app fast all right let's get back to
the goals the next goal we want it to be
native so we want it to be a great Mac
OS 10 citizen leverage all the features
we have on the system like CF Network we
wanted it to be real world standards
compliant so of course we wanted to
support all the standard buzzwords all
the standard you know the standard
standards but if you go to eBay and yeah
I don't know if I was here from eBay if
you go to eBay and it doesn't render for
you even if it's not following a
standard it you want it to render you
don't care and so we made sure that all
the sites out there would render we
wanted real world standards compliance
but most important for you one of our
main goals from the moment we started
this project was that it be embeddable
our goal was to be able to open this up
and have you and bed everything about
the guts of safari into your
applications
so let's look at that here is Safari
here's the way we built it
Safari itself is just a thin layer on
the top of this stack everything else
our public API s so we start with the
standard BSD sockets see if network is
where we implement most of our protocols
and port Ron talked about that earlier
Foundation URL api's so Foundation has
been greatly enhanced and panther it has
fantastic URL loading it's much enhanced
from Jaguar it has automatic content
caching it supports standard
authentication schemes as extensible
streams who we now have a stream object
you can subclass it you can extend it we
provide all the standard protocols but
you can extend that with custom
protocols and we support cookies I've
got a four year old
alright WebKit let's look inside WebKit
this is Safari
this is WebKit WebKit is that content
region of Safari you can build it into
your applications we built it directly
into mail so mail now has much better
HTML rendering but this is WebKit most
important for you you can build it into
your application so WebKit is that
content region and more of Safari we
support standards so here's all the
buzzwords at HTML 4 XML I'm not going to
read to you but we support all the
standards and we are a member of the w3c
and are actively working on new
standards which will support as the w3c
decides on them that's WebKit let's look
inside it for a moment there's two main
pieces inside of WebKit it's webcore and
javascriptcore so web core is the open
source HTML library we encourage you to
become members of the open source
community contribute to this the same
way we're contributing to it and it'll
benefit all of us
javascriptcore is kgs again the
open-source version of the library we
encourage you to support it now one
thing we've been telling you for the
last few years is if you're building a
brand-new application you should go find
some open source code that's great and
then if the brand new application build
a beautiful cocoa UI on top of it it's
the fastest way for you to get your
application out the door it's exactly
what we did here KJ s is C++ web core is
C++ both open source we used objective
C++ and WebKit to marry the whole thing
together and build this beautiful UI
called Safari but the important thing
for you is webcore and javascriptcore
are pieces and implementation details of
WebKit but for you the API to use on Mac
OS 10 is WebKit itself so this is WebKit
and that is where it falls in the stack
we've taken and built Safari in such a
way that you can take advantage of
almost all of the api's directly in your
application and to show that I'd like to
bring Richard Williamson engineer
extraordinaire up on stage to blow you
away with how easy it is to use WebKit
hi so I'm gonna give you a demo of
WebKit and what better way to do that
than to build a web browser so let's get
started I'm going to launch interface
builder and start a new application and
you'll notice that interface builder has
a new palette the WebKit palette this
palette has a single class on it it's
called the webview let's add a webview
our window resize it let's set some
resize flags on the webview itself now
how do I load a URL into this webview
I'll use a text field so I got a text
field place it in the window and using
the normal target action mechanism
connect to the webview now I'd like to
add a few this is good but I'd like to
add a few more features maybe a back in
a forward button so let's drag out a
back button place it in the window and a
forward button give these buttons labels
back forward and again using target
action connect them to the webview
and finally I'm going to set the resize
flags on these widgets
that's it I mean any code nothing's
compiled let's go ahead and test this
how about checking out Apple site
the Scots can assign for one of these eg
fives I hope so back and forward these
buns work you know you'll notice though
a few things aren't quite right
the URL in the text field doesn't update
as I navigate and the back forward
buttons don't disable and enable as I'd
expect now we all know at this point to
really make an application work you
write lots of glucose glucose be gone so
I'm gonna add these features enable and
disable the back forward button update
the URL in the text field and also show
a progress indicator without writing any
code and I'm going to do this using the
new controller technology so the first
thing we'll do is create a controller
now going back to the text field what
I'd like to do is share the same
underlying URL for the web view and for
the text field as I navigate I'd like to
update that in the text field so we're
going to bind the URL to both the
webview and the text field but first let
me disconnect the target action then I'm
going to go to the new bindings
inspector and this lets me bind cloth
ities to the various elements that are
selected in this case i'm going to bind
the value of the text field to the main
frame URL now for the back and forward
buttons I'm going to associate their
enabled state with cloth occurs on the
web view that tell me whether or not I
can go back or forward
and then finally I'd like to add a
progress indicator so I know when the
page is loading it will make this clovis
indicator determinate its value will go
from 0 to 1 and let's find it
its value again will come from the web
view controller estimated progress we
set the resize flags now we have another
browser again no globe no glue code
nothing compiled let's test it it's time
I'm going to go to the mandatory Pixar
site
let me emphasize the content you see
here is exactly the same content you
would see in Safari let's check out of a
trailer
I note the back and forward buttons
enable and disable as we expect and as I
navigate the uol is correctly reflected
in the text field
that's the WebKit and the connection and
the controller technology thank you
there are more in-depth sessions on both
of these areas so I encourage you
strongly to go out and check out the
more in-depth sessions thanks Scott
thank you all right so that's the
architecture the web kit is available to
both carbon and cocoa it's available on
both Jaguar and Panther and it's
available today you can download the SDK
the 100 SDK for Jaguar today and ship
your apps on it so what we've done is
we've taken Safari and we've opened up
the engine and giving it to you to embed
in your applications with that well I
can turn it back to Burt Ron thanks
so we are running a little late and just
so machine punch faster I said I'll take
a few things and put them together in
the Panther parade so ladies and
gentlemen Japan for parade okay enough
of that so so the first technology I
chose is colorsync color think is about
color correct images and it's really a
shame if you go to real-life safari in
Africa
take this picture of this lion and you
open it with several layers and it
doesn't look the same in the different
apps so it's really a shame because we
have this great technology color sync
and we've made it really fast over the
last few years so that there's no excuse
for not using color sync now I know that
many of you have not used color sync
because it was a little too hard because
by default color sync was earth which
change the default now coalescing is on
and so you automatically get the
benefits of coalescing and you can if
you have a color specific application
turn it off with a little more code now
and QuickTime graphics importer supports
that philosophy as well another longtime
technology we've had is AppleScript
AppleScript is a blessed technology for
an end users who want to automate
certain workflows we also use that in a
lot of the publishing space so there's
two sides to Apple scripts as a supplier
side providing script ability and as the
consumer side using script ability so
for the supplier side obviously you need
to make your application Apple
scriptable and that's not too much work
but you have to do go do that now for
the consumer side was really beautifully
that you can use and leverage the other
applications that are poor scriptable
and we've made more and more
applications upon scriptable with
enhance the terminology in all those
applications we also added a facility to
do UI scripting so that even if you
haven't made your application scriptable
it
we'll work with Apple script of a
technology vac Lib vac Lib is fast math
it's really really super fast math it's
used in all kinds of context it's used
for linear algebra so of course
something like Mathematica uses that but
something that's not obvious is that
even our little drunk male filter in
male uses linear algebra it's used for
signal processing all those FFT is for
audio big names for crypto and what
we've done in Panther we've optimized V
clip for the g5 now we added another
technology that we called V image which
is now fast math but for 2d Ras this is
for graphics of course it's for doing
convolution operations morphology
operations all those things that I don't
know what they really really mean or I
don't understand the math underneath
them but what I can show you is some
pictures which is an example of blur
hopefully you can see it's blurred an
example of embossing another technology
that we have is DVD we have had the DVD
player for a while we've made that DVD
player functionality available to your
application so if you want to embed
early usage of a DVD in your application
for example for training or whatever now
you can do it by using those api's
another technology is of course quick
time we've seen mandatory shot and
QuickTime and is embedded in my Creston
we embed the latest QuickTime we have
focused for this release a lot on
infrastructure a lot of you have asked
to have fred safe quicktime and now in
punt for quicktime will be fred safe for
static images and for playing movies we
have full support for Unicode and we've
gutted the audio infrastructure
underneath QuickTime to replace that
we've called you now that brings me to
code York or Joe has been a wonderful
technology on my quest and one reason is
that it has been conceived from the
ground up to be a great 10th citizen now
we're adding features to code you were
adding surround support and we're
enhancing the real-time effects
want to encourage all of you to bring
new audio units which is real-time
effects to the platform we are
supporting new formats and we make it
really really really fast it has a very
small latency and it also consumes very
little CPU to play and for example on
gigahertz PowerBook you can play AAC
which is what we use for the Apple music
store of course with less than 2% of the
CPU so that means you have 99% of the
CPU for the rest of your application
another technology that we has is a
window manager quartz extreme the vision
behind quartz and quartz extreme is to
have Hollywood effects right on
everyone's desktop and we're really
moving in that direction and some of the
features that you saw the movies this
morning like expose totally leverage
this kind of facility now what we've
done we call graphics is the API to
cross and we have rendered it a little
more we've added a lot of the functions
that you've been requesting and so
little function here and there to do
shadowing to to screen scrape you know
all those things
now we also added some brand new areas
of API notably superscript to PDF
Converter and so maybe ice to deal with
PDF both PDF in terms of document
structure we've also snowed the document
3 and with PDF in terms of what gets
drawn into pages so you can access the
pages that are getting drawn another
technology in the graphics land is
OpenGL now OpenGL is of course how to
accelerated its Freedy imaging and it's
used for games I mean most of the common
games use OpenGL but one thing that I'd
like you to think about is that OpenGL
is not just for games you can use OpenGL
to your advantage for your application
to get to the next level of great user
interface and my favorite application of
course is keynote that totally leverages
OpenGL now the last technology that I
have is world readiness now we've had an
effort since the inception of Mike
Western to be a
great global citizen we have devised
this technology that we call at
packaging which is really fundamentally
an object-oriented concept all the
application all the languages supported
by your application go along the
application we use that for all kinds of
plugins our frameworks are packaged that
way and I am very pleased that all of
you have adopted that packaging in your
applications so our users out there in
the world really enjoy that we are doing
just more of it with more support for
Locard's languages and font it's easy to
internationalize on 10 so this is a very
very quick quick and prepare a ladies
and gentlemen thank you for going along
that front for a parade and now I'm
going to conclude so we've gone through
a tour of a lot of the developer
features of pant fur and the transition
from 9 is over for all you know for all
of us for development purposes thank you
thank you for bringing thousands of
application onto the planet I hunt to
the planet and onto the platform now we
have some next challenges what are the
next challenges for all of us it's to
strive for excellence what do I mean
striving for excellence the number one
things that I mean is performance we
should all make all our applications
more performing there's always some
extra speed to gain there and the key to
do that is to think 10 not 9 a lot of
the code that we have originated on 9
and was moved from 9 we need to think
and get rid of all the dependencies on 9
all the conceptual dependencies on line
and think 10 10 10
we have great performance tools that
should be used and that can be used to
address the performance issues and
performance does make a difference
suffer he has a great streamlined UI it
has nabek and all those things but
fundamentally it's fast fast fast
that's what users love now fast is not
everything of course this functionality
and one of the key is to add value of
course to differentiate your application
from your competitors and one way to do
that is
were dubbed and integrates the basic
system services the basic system
frameworks they give you an extra bit of
lift or give to your application and you
can focus on the higher level of your
application the higher level
functionality rather than having to
reinvent the wheel it's more value with
less code I hope you will enjoy our
pre-release of Panther we work hard for
it thank you
[Applause]