WWDC2000 Session 191
Transcript
Kind: captions
Language: en
hi my name is Dane I spent my privilege
over the past couple of years to have
the opportunity to build and lead the
developer applications engineering team
for Mac OS 10 I stood on this stage a
year ago and described how Apple was
committed to the creation of great
development tools for Mac with 10 I'm
very proud to be back this year to show
how we're delivering on that commitment
so what we're going to cover in this
introductory session this morning is an
overview of Apple's development tools
strategy a look at all of the apples
development tools for Mac OS 10 a quick
run through with that and then start
focusing in on the new project builder
you've probably heard references to that
in a few sessions by now I'll be showing
you what we have in Developer Preview
for what's coming soon and what's on the
drawing board some things that we're
working on it a little further out and
we'll also be touching on some of the
new features of interface builder in VP
4 then I'll get to some of the specifics
of delivery and deployments of the new
project builder and because this is an
introductory session we have a lot to
cover and I have pointers to numerous
other sessions where you can find more
details about what I'll be talking about
here so to give the senior management
perspective on Apple's overall
development tools strategy I'd like to
bring on stage my manager look Steve
they're off the senior director of Java
and core tools Steve
hi there this is an outline of the
strategy basically we we feel strongly
that Apple has to own its own destiny
and develop great tools for a platform
aside from developing great IDE we need
to support the platform initiatives for
instance when we got a new hardware the
compilers need to support that hardware
in a first-class way when we develop new
frameworks like cocoa the ID has to
support them in a first-class way so we
have a strong background that just as
Microsoft uses their tools to to push
their platform initiatives at next we
have the same background and at Apple we
want to carry through that legacy to
make sure when we do do new things the
IDE is presenting them in the
first-class way another part of our
strategy is to make sure everyone at
Apple is living on on these tools I've
seen a lot of apple development in
efforts over the past decade mainly from
the outside and at least the last one
which was centered around Dylan one of
its major flaws was no one in Apple was
actually using Dylan Dylan with some
really great work that unfortunately on
died on the vine because no one in Apple
actually cared enough to use this stuff
and in fact if if years ago more folks
at Apple were using this stuff on Dylan
could have been what Java is today but
unfortunately that didn't happen so what
we're hoping is the next time there's an
opportunity like that we will make sure
we're on top of it because Apple
engineers will in fact use the stuff
we're developing and we have support
from the very highest part of the
company Steve who feels strongly that we
need to do this on 10 years ago actually
I'll show my age here more than 10 years
ago back in 88 I was one of the early
adopters at next of the new compiler
project and it was in its infancy at the
time but as you know today
a it's the underpinnings of the Linux
movement and in fact open software is
now socially acceptable worse
it wasn't 12 years ago and we feel
strongly that we need to drive this we
need to be a major player in the
open-source community
next was a fairly small company apples a
much larger company with more resources
we're putting our resources behind the
open source initiative with Darwin and
I'm putting them my resources in the
tools area behind the open-source
movement as well we've benefited in many
ways already much of the Alta Veck
support we have an organ you compile er
was actually originally done at Motorola
because Motorola invest in the new tools
IBM invest in the new tools their
countless number of companies that
invest in the new tools and we want to
benefit from that research and
development another thing to mention
about the canoe tools is I think they
compile that the compiler in particular
compiles more lines of code I think than
any other compiler into the on the
planet it compiles all of Mac OS 10 it
compiles all of Linux its compiled all
of Maya it's it's compiled a lot of
stuff and as a result it's extremely
robust it's not a toy so there are other
there are other open-source projects you
could read that we we leverage in the
Java space we're also shipping the jikes
compiler which is an open source java
compiler by IBM and even though we want
to have a great fit finish to our tools
as you'll see project builders totally
built with with cocoa and aqua we we
want to work with third parties by no
means do we want to close anyone out of
the tools market we want to work
actively and we are working actively
with with metro works / Motorola in
prize Pacific Sierra AB soft and lots of
others we again want to collaborate with
with these vendors sometimes that may
mean the tools are available or
integrate with project builder sometimes
that may mean we may take our tools and
integrate with them so it's a it's
sometimes unclear what collaboration
means
but nevertheless it is a design point we
do not have any motivation and owning or
being the exclusive tool on the planet
at least on them on the Mac platform so
I guess I guess the take-home point
there is competition is good and we want
to compete and we think what we've done
that we're going to show you today is
competitive a couple notes before I turn
it back to Dave one is even though Mac
os10 is in DP for this is the first
release of project builder so it's our I
won't say DP one because we've released
it internally four months and have been
using it but it's our DP Jewish release
so bear that in mind when you use the
tools are still we still the ways to go
before we finish this thing there going
to be some bug's are going to be some
missing features so I wanted to set that
expectation appropriately and well I
guess the last thing is what's thrilled
me is we've built a great team over the
past year to deliver this product and
even though it's not everything we want
it to be at this moment in time I'm
absolutely confident 100% that this
product will be everything we want it to
be and you want it to be because we have
a great team in place and you'll meet
many members of the team over the course
of the talk so with that in mind I'll
hand it back to Dave thank you
thanks David
alright so diving right in let's start
looking at the new project folder in tp4
so first off what is it project builder
is the new integrated development
environment for Mac OS 10 been a long
time since Apple's had an integrated
development environment perhaps remember
now so project builder is the
centerpiece of what we're trying to do
with development tools at Apple we want
to tie many things that we're doing in
to the side to e
there's a number of other components we
work with the interface builder user
interface layouts tool we work with the
web objects tools so web objects builder
neo modeler we work with a number of
different compilers so GCC as Steve
talked about Reds for your Mac Resource
Manager resources Java compilers like
jikes and Java C we worked with a
variety of debuggers like the GDB GDB
debugger for all our c based languages
and Java debugger is tying in to the
virtual machine there and we're working
with the Apple Script team on some of
these things too so what all do we need
project builder to do for us again as
Steve mentioned we want to be able to
live on this tool internally at Apple
that gives us lots of great feedback
from customers who are it's wonderful
they're in my face every day and so and
we also want it to be a great tool for
you so among the requirements we need to
be able to build the core OS itself with
it and how that translates to you if
you're developing device drivers or
kernel extensions iokit modules you'll
be doing using the new project folder to
do so once we've got that KDK all put
together there and we build our
frameworks with them so the carbon
framework the cocoa frameworks java
variety of frameworks there and of a
special importance to you there's a
variety of different types of
applications as well as plug-in modules
frameworks shared libraries that you can
build with the
your project builder for carbon for
cocoa for Java and for web objects so we
did actually have a previous product
that we called project filter some of
you may have used it this was derived
from next but when we looked at all the
different requirements that we needed it
to solve we need project builder in
general to deal with we realized that
the existing project builder was not
really going to be able to handle it so
we have completely rewritten it from
scratch for dp4 but we do need to be
able to import projects from it we also
would like to be able to import project
some code warrior and in fact in the
next session immediately after this
we'll be showing that and then finally
in order to be a full carbon development
environment the definition of a carbon
application is it should be packaged in
an application package that's double
clickable on both Mac OS 9 and Mac OS 10
currently project builders building ma
Co binaries that are double clickable on
Mac OS 10 we are starting to work on
generation of path binaries so we can
get double clickable carbon applications
for nine as well so being a full carbon
development environment so in order to
meet all these requirements again we
decided we need to start over so we did
that January of 1999
so not a tremendously long time ago
about a year and a half I started
building the team at that point and had
approval from senior management to add
more folks some of you may have
remembered the last year WWDC when we
showed a demo of a prototype called PDX
so if you hear of anybody else on stage
referring to PBX that's because I
referred to it internally as PBX the
project was called that up until about a
month ago but the official name of the
product is now project builder and every
time they say PBX charge them a dollar
and I'll split it with you
so but that was a little scary because
by that point I'd only had
two guys writing code for three months
and so I beefed up the team considerably
more after that and we got to an Apple
internal rollout in February of this
year now my team had been developing
project builder with project builder for
a long time before that and this was
about the time of dp3 we did not go out
on DP 3 because we hadn't had enough
internal feedback yet to tell us all the
ways in which we were brain dead so
we've let the internal developers tell
us that it's been used widely across Mac
OS 10 and now it's your turn to tell us
how we're brain good so we have our
first external release on the Developer
Preview for CD and from here it's onward
and upward for us and the OS onto GM so
what do we need to do with the new
project builder as Steve mentioned we
need to fully support the Mac OS 10
platform initiatives and we need to be
much more flexible with our project
layouts and editing than our previous
project folder was when we tried to
bring the code in from the finder for
example into the old project builder it
was a very difficult experience because
they've been developing with code
warrior and the old project builder was
very restrictive on how it expected your
project to be laid out now we've broken
all those restrictions we want efficient
project navigation amongst your source
code a powerful build system if I can't
build your project and it doesn't matter
how good the rest of the system is it's
not of any good to you we need much
better graphical debugging in a variety
of aspects there and overall user
interface polish and then one final
thing and project builder does have a
very powerful build system that you can
leverage but for many pieces of code now
they're coming off the next with their
own make build systems or other build
systems that perhaps if we're sending
code back to the organization that we're
getting it from we don't want to replace
those build systems so we do feel that
is very important to be able to hit the
build button and build one of these what
we call legacy projects hit the debug
button and debug ads and work within the
nice IDE context good good project
navigation but not necessarily
completely replace the existing build
systems so Mac OS 10 platform initiative
support it is very
important that you read the system
overview manual understand it Mac os10
is not the same as Mac OS 9 there are
many fundamentally different concepts I
have to take a little bit of pride in
this manual because I told the pub's
team that look you know I don't care if
you just document how my app works and
how the api's work people need to have a
fundamental understanding of the system
in order to be able to deal with this so
again I mentioned it ma Co the format
the project builder generates this is
what the GCC compiler is emitting for us
it's been used since the dawn of time it
next and that's what is the fundamental
primary binary format with Mac OS 10 we
do support path modules loaded by the
code fragment manager as a transitional
mechanism four-carbon binaries but we'd
really like you to move to mock o to
take full advantage of the OS features
and performance wise and tools wise all
our tools are going to be aimed
primarily at not go the concepts of
frameworks is very important with Mac OS
10 framework is our shared library
packaging mechanism and it includes all
the for example headers public headers
documentation resources project builder
directly supports making use of
frameworks now we also let you create
bundles so very importantly understand
the concept of bundles of Mac OS 10 an
application package is a bundle plug-ins
or bundles frameworks themselves or
bundles bundles have information
property lists that we know how to edit
and this is how you do your localization
through editing of bundles as well so
with project layout and editing there's
a variety of types of ways to create
project templates we have a whole bunch
of standard project templates and you
can define your own again we can import
existing projects from the old project
builder and from code warrior we now
have user definable groupings of files
so this is independent of physical
layout on disk which was not the case
with the old project builder and it's
also independent of how the build system
works and so we now also support a
target model
you can have multiple build targets for
per project and select which one you
want when and projects can reference
other projects so you can have
dependencies on that that feature I
guess I'm done that is a little bit yet
to come but we're working on that one on
the build system last year when I talked
about the build system I described the
build tool jam and that we leveraged
jams just another make freely available
piece of software that we get off the
net but what we've done in the meantime
is abstracted things away so you don't
need to have nearly as good an
understanding of the jam tool itself so
that's what we use to call down to all
our compilers so GCC res Java C etc but
we in the IDE we may can take advantage
of what we call build phases so there's
a variety of standard build phases for
copying your framework headers copying
your resource files compiling your
source code linking etc and the
jam-filled tool we are leveraging at
this point to get automated dependency
analysis of course that's obvious right
but well actually our old product didn't
do that right and and but there is no
need to go in and edit make files so
we're handling all this within the
context of the IDE and you can customize
your build by adding additional scripts
custom build phases as necessary so as
Steve mentioned we are taking advantage
of the GCC compiler for those of you who
knew the term eg CS or eggs this is that
version of the compiler GCC tu-95 it's
the latest this and is a significant
change in the compiler from what we had
before this provides full C++ support
now including an up-to-date standard
template library support and we are one
thing to note about this is that it is
stricter with an C C++ compliance so
some of the users have told us that wow
I found bugs in my code that I didn't
know existed with the previous compiler
and with this compiler we have support
for the velocity engine and Steve
mentioned the company
cific Sierra research that company is
working to do an automatic vectorization
support for Mac OS 9 and for Mac OS 10
because unless you're familiar with it
vectorization is a little bit difficult
so we're working with that company to
try to take full advantage of that and
again it's very important to note that
GCC does build all of Mac OS 10 all the
core OS code sea based code four-carbon
frameworks and core foundation C++
applications like finder or Sherlock and
yes we do use PowerPoint to send things
internally and so we build that at our
own version of that Mac app is now
building in power in project builder and
with GCC and we also support objective-c
still as a primary development language
from a closed ten so the cocoa framework
is written with Objective C the mail
application project builder itself is a
cocoa and objective-c application and
just to note you can still write your
cocoa applications with Java as well so
cocoa Java apps one final thing is that
we actually do feel that it's very
important to be able to build from the
command line there's a lot of things you
can leverage in that way Apple at Apple
our built-in integration mechanism
builds all of Mac OS 10 from the command
line as opposed to firing up the IDE in
any way but what we're doing here rather
than calling jam directly we've put a
new command in place called PBX build
which of course is PBX is a denigrated
term this stands for project builder
external build commands
so with this command what we actually do
is a very small application that
actually links with the same framework
as the project builder application
itself and actually opens up your
project model and invokes jam once per
target of the project you're trying to
build so you can automate builds with a
shell script a nightly build process for
example or login over telnet and run
build i aughtta mated my performance
testing and quality testing of the build
system through this mechanism so now
what I'd like to do is bring one of the
engineers up on stage Manuel de Silva to
help me go through a demo of project
builder first patient queue so what
we're going to do here is take a look at
an example project from the system so
the glut examples is a project that you
would find out in system developer
examples what examples this is the
OpenGL user you can see OpenGL utility
toolkit examples project it's got some
graphically cool stuff in it we've
stripped down this project a bit so that
only got a few targets in it but let's
take a look at what happens when you
first launch the project and we've tried
to as we're doing with the finder and
with mail we're optimizing for use with
the single window here and we showing we
have a variety of new projects that you
can create you can create carbon
applications or cocoa applications CF
plugin bundles frameworks but we're not
going to do that we're going to work
with this OpenGL example on what Manuel
has open here is the groups and files
outline on the left on the left we have
tabs that show structure of your project
across the top we have tabs that are for
tool operations to find build debug so
with the structure here now we have
three of the examples here geo phase
roller-coaster and uses sphere map we
can open one of those groups take a look
at the files in that we see a little lot
circles in the left-hand column that
shows that these files are built for the
particular target that's our active
target we can see that up above geo face
is the currently selected active target
and down below we also see that we're
linking with the glut framework and you
can navigate down into the headers of
that so we do very directly times with
framework mechanisms of macros ten this
is what you do with the carbon
frameworks or cocoa or whatever and so
let's take a look at how we can do
grouping for example so we can select
let's say that we wanted to have the
source files in a group and just I call
them the sources group so we can select
them and create a new group call that
look looks like we know we can move code
in there I'll show you moving okay so
that's all on under sources now so again
note no physical type in layout on disk
now let's take a look at how you would
look at some of these files in the
editor you know we'll click around on a
couple of files main dot M display dot C
so these all show them at the same
window there's a pop-up here if you want
to go back and forth between files that
you've recently been to and you can also
use a browser like back and forth
navigation buttons but let's say that
you did want to have a file of source
code off in a separate window just go
over to the files line and double-click
to bring it up in a separate window
that's got all the features you can
split the window and split the panes in
the window and actually bring up even
other files in it etc so a lot of
flexibility there you can have as many
separate windows as you want now let's
take a look the file inspector so up
under the project menu show the
inspector this is where you would set
things like what's the reference style
to how to get to the source code here so
group relative project relative
absolutes
this is also where you would do for
example localization so if you had an
interface builder nib file and you want
it to localize that you would do that
from here ok so let's take a look at
building so we'll go ahead and just
build the entire geo face projects here
and a Geo phase target since this is our
active target so now this is one of
those areas where we know we need to
make some additional user interface
improvements here what's popped down is
the expert mode build panel and what I
was trying to do at Apple was get this
product out useable as quickly as I
could so that I could stop maintaining
the old project filter that many people
were using so there are areas of the
products where you'll find sort of
expert modes built in because we haven't
quite had the opportunity to build in
all the nice user interface that would
show you know which files need to be
rebuilt in which files building now but
this has built and so now let's say that
we had a syntax error in a file how
would we deal with that so let's go
ahead and introduce a syntax file in the
head dot H file and save that and then
rebuild again in this case we see up in
the build summary that the number of
error messages pop up we can select on
one of those that takes us to the line
of code fix the syntax that are there by
doing undo so we can undo past the last
save it's a multi-level undo multi-level
redo and now from here we can rebuild
and it just goes out and builds exactly
those files that were dependent on the
head dot H header file and we're
successfully built and we can go ahead
and launch at this point
ok so we've launched the target
executable we can make it do a little
dance here and also one thing to note
manual is pressing the a key that's
saying uh making smart there you noticed
as a lip went up a little bit and you're
seeing build log or log messages from
the application in the standard
input/output window behind there so if
you have log messages you wanted to
print out for example okay so let's quit
out of that now let's take a look at
target editing so if we select the
targets tab over here on the left you
can see that we've got a number of
different targets will select the Geo
phase target and that brings up a
different type of editor into the main
window so this editor now shows us the
files and build phases this is basically
how your build is going to work for this
project what het earnest will deal with
what bundle resources will copy what
source tiles will build how will link
and build settings this is where you
would set the you can go to the build
settings tab this is where you set the
product name that's going to be built
and if you were doing an install where
it would install - and down below you
see the expert mode build settings so
this again is another case of where we
need to provide better user interface
but with this expert mode at least we
can get a way of supplying all the
options we need to today into the build
system so application settings this is
where you set the information property
lists for your bundles is a very
important thing to know about and
actually the if we can go back to the
simple screen there this interface is
actually has been cleaned up but my team
move moves very quickly this is post DP
for feature here you don't have it quite
yet so what you do have is the expert
mode build settings which is a property
list editor with cocoa we can just
leverage an object that we already had
to do property list editing and then the
final tab for executables if for example
if you were building a bundle that
needed to be debugged within the context
of a given application you could say
this is the application that you would
launch to run that bundle and the
arguments that you would pass to it so
we can select a different target up here
let's say we go to the install target
and with the install target we see some
different tabs this actually is a legacy
target here it's an example of how to
have a target that builds something
different than what we have in our build
system so this is just running a shell
script here to copy the example source
code where we need to done on the system
and then one final targets let's take a
look at the all examples this is an
example of an aggregate targets that
itself has no build mechanism but it
does ask other targets to be rebuilt so
we have full dependencies between
targets and if we build all examples
then at this point then it shouldn't
need to rebuild geo phase because that's
already been built goes off and builds
the
two targets as well so roller clothes
rollercoaster and uses sphere now we see
down the lower left don't succeeded but
you see up the top and the toolbar that
the run and debug buttons are not
enabled that's because with an aggregate
target there is no single executable to
run here at this point but by selecting
one of the sub targets so for example
making roller coaster the active target
now we can watch it and watch the roller
coaster come up and spin so these OpenGL
examples are kind of fun to play with
alright very good so now let's talk
about debugging with our debugging
system we have an extensible
architecture that can accept various
plugins we do communicate with gdb for
debugging of all C based languages gdb
is a very well-known UNIX usually
command line debugger we also are
working heavily on Java debugging it's
not fully functional yet but if you've
been in some of the Java sessions you've
seen some that we're working with the
Apple script team for debugging of Apple
script we've gone to a much more
graphical debugging model than we had
before so we show thread stack traces
variables within a particular stack
frame with breakpoints now one thing to
know about project builders that we are
designing it to deal with the multiple
person projects so each person gets
their own preferences saved off per
project settings saved off with the
project itself it's actually inside the
project document wrapper so you could
actually check those into a source code
control system for example and
breakpoints is an example of some of the
settings that we store in there so you
can have them persistent not just
between runs of the debugger but between
runs of the IDE as well and I can have
my breakpoints Manuel can have his and
you can have yours all within the same
project one person told me that whenever
they write code they put a breakpoint on
it and I thought that was a great idea
you know later on two weeks later you go
to execute the code and hit the
breakpoint and step through it the first
time you've run it and now we can
support that
now we can invoke functions to get the
values of opaque data types which is
very important for carbon developments
today and also for our core foundation
with functions like CF show from the
debugger we control the dynamic motor
what's called dy LD on our system so we
can control where frameworks are being
loaded in from if you're doing framework
debugging so also cross project
debugging part of the reason we've got
the one window there is we expect that
you'll be working with frameworks and
perhaps having frameworks and different
projects so multiple windows open on its
own project window and from an
application you can step right down into
the code of a framework and to cross
project debugging so we are taking
advantage of gdb and I've gone through
many of the features here we do have
additional things that gdb provides like
the ability to set conditions and
commands on breakpoints we don't yet
have user interface for that but we will
have the opportunity to do so in the
future to put that in but we do have
access to the gdb command line for any
superpower features that those of you
real gdb addicts want to get to there's
a number of powerful macro capabilities
that the carbon team and the core OS
team they're taking advantage of in a
variety of ways and we have done some
things so the stats are startup and more
robustness in our DP for version of gdb
so now let's take a look at an example
of debugging if I could go back to demo
demo one on both screens please so what
we're going to do with debugging here is
give an example of debugging the Geo
phase targets again so what we want to
do is set a breakpoint on a particular
function that we have and remember the
name of so make menus so let's bring
down a fine panel panel and show make
menus and you'll find for that so we'll
find good text we'll find right now
there we go
and we select on that and that takes us
to the line of source code there we can
put a breakpoint on that now if we want
to see what breakpoints we'd have in our
project again this is project
data projects structure we have another
tab to show that so we have just put a
breakpoint in main em which is dot M is
the suffix for Objective C but it's
showing that we already have a
breakpoint on make faith dot C so this
is actually an example of a persistent
breakpoint that was already out there so
by double-clicking on that we can show
the specific lines that the breakpoints
are on again this is an example of an
area where the user interface has been
cleaned up slightly since dp4 actually
so let's go ahead and launch the
application under the debugger we hit
the debug button and the debug tab pops
down and it starts loading the
application into gdb and we're off and
running so now we've hit our first
breakpoint let's take a look at some of
the user interface here so we have a pop
up menu that shows the different threads
within our application now we'll leave
it on to make face thread for now we can
walk up and down the stack trees so we
see the variables changing for each of
the stack frames within the variables of
the make face function we can expand on
for example the face argument and see
that that's actually a fairly complex
structure in there we're getting all
this information back from gdb now we
can close that back up and do a little
bit of single stepping through here we
see actually that there's two loop
variables here the I and III variables
and yeah I didn't write this code but
every time we change the value it's
showing the preview the change variable
in red so kind of what you would expect
and so if we continue from there then we
actually march along hit the other
breakpoint that we just put in
let's single step a little bit there and
then continue again and we see the
application fire up under the debugger
here so debugging fairly nicely tied in
and again we're going to do the same
thing with Java debugging
and I think that's it on that all right
so we can go back to slides thank you so
continuing our discussion of what's in
Developer Preview for let's switch the
interface builder for a moment so what
is the interface builder for those of
you who aren't familiar with it
this is Apple's user interface layout
tool the big deal at this point is that
you can create aqua compliant user
interfaces for both carbon and cocoa
applications with this get all the
metrics correct etc standard menus you
want and for those who've done cocoa
development in the past you're familiar
with the interface builder in this it's
a big part of the cocoa development
cycle lets you put in actions and
outlets that tie back into the source
code but you can also at this point use
it for your carbon development so when
you run you interface builder it
generates what's called a nib file which
is the description of your user
interface again we can do that for cocoa
applications carbon and also for Java
clients for web objects the interface
builder team has done a great job of
adding and support for additional
platforms so if they're down the road
become more that become important we'll
be able to add that into interface
builder so how would you take advantage
of this in a carbon context well within
the carbon run sign on Mac OS 10 and in
carbon Live 1.1 soon you have what's
called the interface builder carbon
runtime that takes the nib file under
direction from your code and loads it in
and then you can not it builds your user
interface from that so this is sort of
an alternative to using the dibbles
d-logs
and window definitions and other things
it may be familiar with in the past so
why might you want to do that one
advantage is that again it does let you
create a aqua compliant user interface
this does support all the carbon user
interface elements and for those of you
who have been learning about the new
carbon event model where it makes it
easier
I command back into your code this is a
great way actually the best way of
taking advantage of the new kerbin event
model this is lets you create Unicode
compliance user interfaces and it is
tied in with the new project builder and
will continue to tie it in more tightly
as we go so I'm not going to demo
interface builder in this session this
morning but 9:00 a.m. tomorrow I believe
in this room you can come learn much
more about interface builder for both
cocoa and four-carbon development okay
again further elaborating on how we're
delivering our on our commitment let's
show you some of the things that aren't
in this release but will be coming soon
I've talked quite a bit about both Java
and Apple script we're trying to broaden
the scope of project builder to handle
development of everything that you'd
need to do with Mac OS 10 so I've got an
engineer on my team at this point who's
working heavily with the Java teams to
make sure that we can build all Java
projects and that we can debug them some
that's been shown in the Java sessions
we're working with the Mac runtime for
Java team to bring some of the features
of their SDK from Mac OS 9 into the IDE
for Mac OS 10 with the Apple script team
we're working with Chris Espinosa team
there to provide an environment for
developing Apple script and then within
the IDE itself we're working heavily on
better source code navigation a number
of graphical user interface improvements
so some of these you've already seen
like this information property list
editing sorry couldn't help it I already
gave a sneak preview of that build tool
option settings it's very important to
us that we'd be able to have a much
better graphical user interface for
setting of do I want optimized code or
what level of optimization etc we'd like
to continue refining our user interface
for debugging and source code management
is a feature that ever since I first
took the management job here the web
objects team for example has been
demanding source code management
features so let's talk about the
efficient project navigation
we know that we need to provide a number
of shortcuts and the user interface to
be able to quickly get to the
definitions of functions references to
the specific functions would be nice and
when you're looking at source code it'd
be nice to be able to quickly get to the
include files or vice-versa
we need this for all languages so in the
previous project builder we didn't
actually handle this for C++ now we are
going to do that actually by going
through the compiler to gather the
information so for C C++ objective-c and
for Java will provide class browsing
features and access for the frameworks
that you're using so definitions of
things in the header files of frameworks
or for example for cocoa doing class
browsing of the cocoa frameworks with
the source code management UI anti to
make a decision here how do we approach
this do we make a nice plug-in
architecture that could handle things in
a general way that would be nice but the
first thing my top priority across the
board with this product was to make sure
that I had the features working and that
the right feature is there and that the
robust so I wanted a way to do things
and then we can think about how to
expand from there so this what we've
decided to concentrate on for now is CVS
that's what we use for everything
internally an apple now that's what the
darwin sources are accessible through so
we're providing CVS access directly
through project filters so we can get
status we can commit your files we can
do file updates to the changes that
others have made and we can show you
comparisons of your files so let's take
a look at the demo of this okay so back
into our favorite geo face example
project let's now select the muscle dot
C file again and you know part of the
reason the 7th shift is because the user
interface isn't quite right and some
things like that you see now in our
navigation file above the project editor
that we've got two new pop-up menus
so the pop-up menu on the the middle one
is the very symbols within this
particular file and on the right we have
the header files that are imported by
muscles see so let's go ahead and select
the last one of those head dot H so you
can see we went to that and let's go to
the function pop up or the simple pop-up
and for example let's choose muscle and
that takes us to the structured
definition for the muscle type def and
so now the this menu it's a little hard
to read but it says imported by or
imports this and so there's a number of
source code files to import this header
let's take a look at one of those so for
example me m and another thing that we
have built in you can see also we have
full syntax coloring here and you can
set the options on how you'd like that
to be set
so one other thing is see if we go to
the find panel we can also do a find
definition and we'll be working to
optimize user interface on this to make
it more accessible from the code so
let's say type in ko saing which we
happen to know is there and that shows
fine definition we can click to go to
that we see a book marker there so that
if it's framework we could go off to the
documentation for that ok so now let's
take a look at some of the SCM features
if we take a look at the groups and a
filed view again we see that there's a
new column over here the SCM column and
what this shows this is the SCM status
of the files in your project we see a
number of M's here which indicates that
some of the files have already been
modified so let's take a look at one of
those like head dot H for example and
actually man well I don't remember what
we changed in head HDO well let's find
out so so let's go over and take a look
at the SCM menu now we could update to
the latest revision we could compare we
could commit but before we commit let's
do a compare and see what's
changed so we send a message off to the
file merge graphical dipping tool and in
that up we come and we can see
graphically what things have been
changed in this file it's very cool okay
and so if we quit out of that then we
can now go ahead and commit these
changes we like them so we can type in a
commit log message here so we fixed a
bunch of warning messages that if you do
take the glut examples and bring them
over you will get a number of compiler
warnings so we fix those for purposes of
the demo now we've committed them but I
wonder what are all the difference
met the different revisions of this file
so let's take a look at the file log if
we go back to the file inspector we now
see that there's another tab that's been
added down here which is the SCM tab and
that shows us all the different
revisions of this file you can select
any two particular revisions there and
do another compare of those and they
actually don't have to be right next to
each other but again we can bring up
file merge to show you the differences
between any two revisions so that's
what's coming soon things I'm confident
we'll have into the next release that we
get out to you what are some things that
are a little bit further out on the
drawing board so we know that we want to
make project builder more extensible
I'll talk about that a little bit more
in the moment full integration with web
objects tools we have not completed this
yet but we're working heavily with the
web objects team to make sure that web
objects builder and Ile modeler works
very well with the new project builder
if you've got any of the web objects
sessions they're actually still
describing the old project builder and
I'll talk a little bit more about that
in a moment
generation of carbon binaries and faster
C++ compilation is a big issue for us
for extending project builder and we'd
like to have the ability to easily plug
in new build tools so if you have this
special purpose compilers for example or
whatever then you should be able to just
drop those in and maybe write a little
bit of jam syntax if you're going to
extend the build system you at that
point may need to know some level of jam
but hopefully it'll be nice and stylized
and will have a mechanism for providing
user interface for setting the options
for your build tools but we're in
progress in some that but don't have
anything to show today plug-in editors
we haven't shown it we have shown how
you can have different editors in the
editing portion we have a tiff editor we
have a release TIFF viewer we have an
HTML editor that we can plug in but we'd
like to make that a bit more extensible
as well we'll be adding scripting in
sometime down the road and with that we
could provide npw like addition of new
menu commands that could help you tailor
the IDE to what you'd like so let's talk
about carbon miners here for a moment
again this is for generation of carbon
applications the Quran on Mac OS 9 and
it's very important that we be able to
have a full carbon development
environment for you our strategy here
again is to leverage the GCC compiler
and use it as a cross compiler to
generate X cough output files we go
through then the PPC Azzam assembler and
PPC link and we are far enough along
with this that we will show you a quick
demo of that ok so on the left here my
left your right we have a Mac OS 9
machine on the other system we have our
Mac OS 10 machine so we're going to open
up a different projects here but first
let's make a network connection what
I've got here is a shared folder this is
my Mac OS 9 system so let's go ahead and
I can Apple share connection to this now
on the finder does not yet in dp4 you
can see in the go menu a connect to
server' menu item well they didn't quite
have time that's not enabled but there
is what's called a test
AFP clients and system demos and so
we're launching that now with
in the IP address of our mac os9 system
connect as guests choose the volume and
so now we're mounted and we can quit the
test AFP clients so now we see it in our
Finder window mac os9 shared folder and
we see this is my mac os9 system ok so
let's go ahead and launch project
builder on a different project this is
what we call the handy sample I don't
know if our DTS engineer is out here but
this was a sample is provided to me by
DTS it's an example of scrolling in a
carbon application if you want
proportional scroll bars and taking the
hand and scrolling so we're going to go
ahead and build this project so again
you see the same kind of build output
the same output mines see see there is a
way in the Preferences of project
builder to get the full build command of
exactly what it's running what we've
done here if we go into the build
settings we've kind of modified this
project a little bit in ways that you
won't have to you can see some of the
flexibility so what the - B argument we
can tell GCC that we actually want to
use a somewhat different version of GCC
that generates a different output and we
want to use a different linker here as
well and so we've also changed the X in
the executables tab we've changed now
we're going to use the once CFM binary
as what we launch for this application
but we are passing in an argument which
is the full path to this particular
application so let's go ahead it's been
successfully built let's hide project
builder and we should see the binary
here in our macula densa so let's go
ahead and copy that across to the mac
os9 system ok so i sit here on my mac
os9 system let's go back into project
builder and we can hit the launch button
from here and actually see the half
binary launched under project filter and
by double clicking here on mac os9 I see
the same binary launch done nine
so again this is showing demo of carbon
scrolling here so when we do this for
real
what you'll get by default for macula
ten miners is a knocko binary that will
let you take advantage of the full macro
sense system but for demo purposes today
we're showing pepper on both sides
alright so that's it for our demos
thanks very much Manuel and if we can go
back to now let's talk about delivery
and deployment now I've mentioned that
we have had a previous version of
project builder those of you who have
been doing web development or cocoa
developments are familiar with that now
we're playing a little shell game here
in zp4 and when you look in system
developer example in system developer
applications project filter is the new
one and we have the project folder lo
which stands for project builder web
objects and that is the old one that
today would still be used for web
objects development but that would be
changing soon and so if you are coming
new into this I would not recommend that
you run the old project folder lo at all
so for those of you who are using the
old project folder we will not be
shipping that again unless somebody
gives me a very good reason why I need
to I have no intense put any effort into
maintaining that product although we
will make sure that the web objects
customers and developers are fully taken
care of but again we're working with
that team to make sure that the right
things happen to integrate with the new
project builder and you all want to
shift over if you are using the old one
and in the next session we'll show how
easy that is to do so for delivery and
the decision at this point is that this
is one of Apple's core development tools
it will be shipped on the quarterly tool
CDs to Apple Developer connection
program members so you get this for free
as part of your monthly mailings and we
haven't done this yet so I'm sure there
will be some logistics to work through
on the
but that is the plan and we'll also have
web updates available again we haven't
put one of those out yet so I'm sure
we'll have a few logistics to work
through there for support resources
we've put a public email list in place
project builder - users at public lists
accom this is one of the fairly standard
places where these go we do have a email
list in place at this point that we've
been getting feedback on we have
delivered this to a few and a very small
number of third parties at this point
who came down for one of our kitchens we
sent them back with it in the kitchen
they shifted their development over to
the new project builder and they're
elated with it so far thanks you guys
there they go
and then the DTS support mailing list
so in summary and you can see that we
are delivering on our commitment to
great development tools I'm very proud
of the team it would accomplish what I
consider to be a heck of a lot in the
last year and a half and in fact if I
could ask team members to just stand up
and take some acknowledgments here
you