Pedestal Overview
What is it?
So what is Pedestal, anyway?
Pedestal is a C++ application framework for developing Mac OS applications. Pedestal's purpose is to make it easy to write a Mac application that conforms to Mac human interface standards and provides commonly expected and desired features.
Another framework?! What does Pedestal do that the others don't?
Pedestal is free software; most Mac frameworks aren't. Not only are you spared an upgrade fee to keep Pedestal up to date, you are free to modify Pedestal as you desire and redistribute modified versions. This can be essential if you share your code with other developers.
Pedestal is being designed with the following goals in mind:
- fidelity/accuracy -- Pedestal applications are faithful to the Mac way of doing things, unless you circumvent this. Mac OS conventions are implemented correctly. (Readers of Guy Kawasaki's The Macintosh Way will recognize these as Doing the Right Thing and Doing Things Right, respectively.)
- modularity -- Pedestal is anti-monolithic. Non-core functionality such as HTTP transfers and PNG display are distributed separately as add-on packages. Classes that Pedestal depends on but are useful without it are also separately packaged. The core Pedestal package is itself subdivided into discrete units that don't all need to be compiled if they're not used in a particular application. (For example, the visual containment subsystem fully supports scrolling content, but only if you need it. Even the nesting of views itself is optional -- it's either seamlessly integrated or inconspicously absent.
- elegance -- I have spared no expense of creative energy (or personal modesty) in designing Pedestal to be the pinnacle of elegance. (At least, given the constraints of C++ and the Mac Toolbox.) :-) You can either take my word for it or browse the source.
Is Pedestal really any different, architecturally speaking?
Yes! I'm doing my best to make the explicit design of Pedestal (its classes) match the implicit design of a Mac application (its organizing concepts) as closely as possible. For example, see my treatise on views and panes.