Today I joined an athletic club – time for me to get back into shape. It has been way too long since I had regular exercise. I used to play varsity tennis in high school, and I loved it, so I’m focusing on getting back into that again.
My plan is to work out for a few weeks to get somewhat back into shape, get a few private tennis lessons to get me swinging again, then join in on weekly tennis matches against other similarly-rated club members. I’m really excited.
“Programming with Quartz,” by David Gelphman and Bunny Laden (both from Apple Computer, Inc.) is now available. If you plan on doing any graphics programming on Mac OS X, you should definitely pick up a copy. It is very well written and full of great information.
A few months ago, the publishers (Elsevier/Morgan Kaufmann) kindly sent me a proof of the book and I read it cover to cover. When I was done I wrote a recommendation, which is now on the first page of the published book. It feels funny to see my name printed in such a nice book, especially alongside recommendations from ILM, Pixar, and Microsoft.
I have been asked quite a few times why we’re going to move all Mozilla Mac OS X projects to Cocoa widgets. I explained why in a talk I gave recently at the Mozilla Summit, but I haven’t really written it down anywhere. So here goes.
We need to settle on a single set of widgets. Right now we maintain both Carbon and Cocoa widget implementations for Mac OS X, which is a serious strain on our resources. Moving towards a single widget implementation on Mac OS X is definitely the right way to go as it means we have less code to maintain and improve. Also, Cocoa widgets are probably a better road to go down for all projects, so we should be using them regardless of efficiency concerns. We intend to move all Mozilla Mac OS X products to Cocoa widgets.
First, Cocoa widgets can use both the Cocoa API and the Carbon API. Carbon widgets cannot easily use the Cocoa API. Since both APIs have their strengths, being able to use either is really helpful. The more tools in our toolbox the better.
Second, Cocoa widgets are going to make our Quartz drawing transition much easier. Drawing into a Cocoa NSView with Quartz is fairly straightforward the way we have things set up.
Third, Camino is highly dependent upon Cocoa widgets, whereas Firefox is not highly dependent upon Carbon widgets. Cocoa widgets have been designed with embedders in mind since the start, and moving Camino away from that to Carbon widgets would be *extremely* painful. Firefox already runs (albeit buggily) under Cocoa widgets.
Fourth, Cocoa is a more popular and accessible API. Since we need to attract developers, this is important. New developers tend to feel more comfortable with and less intimidated by the Cocoa API.
Fifth, Cocoa is simply a better API for object-oriented software development. Carbon is a pretty good API if you have to use C or you can’t use Objective-C in your project, but since Mozilla’s widgets are object-oriented and we can use Objective-C, Cocoa is the better choice.
I’m in California this week for the Mozilla Summit, which is basically all of the Mozilla employees and many (~35) contributors getting together to talk and plan. It’s really great to meet lots of people I’ve communicated with quite a bit over the past 3 years. We have an amazing community, and the people are just as awesome in person as they are over the wire.
Later on this week I plan on updating the Mac OS X Firefox developer pages and putting an update on our progress here. I have lots of good things to say about how things are coming along.