If you will permit speculation as I am not part of the Mozilla development team but I have many years experience as a software design engineer. Safari is a Cocoa (object oriented) application and therefore inherits much of its capabilities including the cut and paste from the cocoa frameworks in OS X. On the other hand, because it is derived from its Windows counterparts, Firefox is a carbon (procedural code) framework application and all of its functionalities, even those from the OS X APIs, have to be specifically written into the code. In fact for the Mozilla team to go to the cocoa frameworks would inevitably result in Firefox for Mac and Firefox for Windows becoming two totally different code bases. Camino gets around some of this because it is a hybrid with the carbon mozilla engine encapsulated in a cocoa shell giving it the OS X look and feel as well as allowing it to inherit much of the cocoa frameworks functionality.

All of this is a long winded way of saying Firefox works that way because that was this simplest way for the Mozilla team to port their code between Windows and OS X. Safari. Camino on the other hand simply inherited the more complex copy from the cocoa framework with no additional effort on the developer's part.

The reason we do not see more cocoa applications from third party developers is migrating to cocoa inevitably results in discarding virtually the entire existing carbon (procedural) code base and starting over with a clean sheet of paper. Its doable for startups focusing on the Macintosh platform but the up front investment is prohibitive for existing apps especially those that run in both the Mac and Windows environment. That is too bad because the long term development and support costs of object oriented code is less expensive in the long run.


If we knew what it was we were doing, it wouldn't be called research, would it?

— Albert Einstein