Firefox 3 is still in its development BETA edition. One of the stumbling blocks its programmers wrestled against was slow page rendering times that seemed to plateau no matter how much they optimized the code. One developer discovered undocumented function calls within Apple’s WebKit library for Cocoa that essentially throttled Firefox’s screen rendering capability.
For an operating system to be of any use to software, it must provide an API (application programming interface) through which programs can call system functions. Such functions range from interfacing with the file system and input devices to graphics rendering. DOS was accessed through system interrupt 21, Linux is accessed through system interrupt 80, Windows relies on the Win32 library and associated DLLs to mask protected mode call gates and Apple uses Cocoa and Carbon libraries. In the past, programmers relied upon books that detailed all of the associated parameters to interrupt interfaces. Now, programmers are forced to trust the published interfaces in the API libraries comprise the entire API.
It is not without precedent that manufacturers utilize their own undocumented APIs at the expense of third party developers. Microsoft’s Office suite, for example, was notoriously difficult for the WINE project to port as it relied heavily on operating system functions that were unknown and unavailable to non-Microsoft programmers. The standard party line to third parties is that using undocumented features may render applications incompatible with future operating system releases. When their own flagship products utilize them, though, the requirement to port such interfaces is imperative and what real reason now exists to not publish their standard?
Similarly tagged OmniNerd content:
- Cloud Databases to Replace Traditional Databases, by VnutZ almost 5 years ago
- 2006 Operating System Vulnerability Summary, by VnutZ almost 7 years ago
- Serving a Website from a Home Network on Mac OS X, by markmcb almost 7 years ago
- Processing Credit Cards with Ruby on Rails, by markmcb about 7 years ago