Its been a while since I wrote about what I’ve been working on and the status of Mozilla Mac OS X development. I am going to make an effort to do this more often, hopefully at least once a week.
There are basically three major tasks to complete in the Gecko 1.9 timeframe.
The first task is to stabilize Cocoa widgets. We need to make them as good or better than Carbon widgets were. We’re about 80% of the way there, the biggest remaining issues being speed, painting, event handling (focus), and printing. That stuff is just going to require us to sit down and fix bug after bug. Colin Barrett is working on Cocoa printing right now, which is awesome because that is the most broken part of Cocoa widgets by far at this point. It sounds like he is making good progress, I’m excited to get that in shape.
The second item on the list is native form widgets. Right now, Camino uses its own code for native form widgets. That code has served Camino well for a while but really it isn’t written correctly and has a lot of bugs. We want to fix all of that so we can have native form widgets in Firefox 3, and that is what I have been working on for the past two weeks. It is going somewhat slowly because it requires unwinding a lot of CSS hacks that Camino used, uncovering and dealing with layout and nsITheme bugs (David Baron has helped quite a bit here), figuring out how to tame the Mac OS X HITheme API, and dealing with Cairo graphics problems. I’m hoping to have a good patch up within the next couple of weeks. Firefox 3 is going to be purdy on Mac OS X.
The last major work item on our list is to allow NPAPI plugins to render using Quartz instead of Quicktime. Right now we only allow plugins to draw with Quicktime, which is bad for plugin vendors and Mozilla performance (once a window starts using Quickdraw, it is kicked off the Quartz Extreme pipeline). I talked with Apple about a spec for this a while ago, and the result is here. I have a patch for part of that, but I’m not going to be able to sit down and finish it until I’m done with the native form widgets.
That’s pretty much where we’re at. In the future I’ll probably write about more specific issues that I’m working on, feel free to ask questions in the comments.