was the first widely available ObjectOriented
application framework. It was written in ObjectPascal
, a proprietary extension of the PascalLanguage
, and ran on the Macintosh. In addition to being an application framework, it was a largely successful effort to demonstrate how to write an elegant, robust Macintosh application. Apple ported MacApp
for version 3.0.
Brown University (IRIS) ported MacApp
to "Object C", a proprietary extension to CeeLanguage
, where it provided the infrastructure to Intermedia, a multimedia hypertext used by scholars for research and course work. Given that this Object C is not the THINK/Symantec dialect and is not NeXT's ObjectiveCee, what is it? A language? Or well-structured C? Please enlighten.
Early versions of MacApp
encouraged several AntiPattern
s such as inheriting from container classes. (MacApp
often uses is-a where it should use has-a relationships.)
The Lisa Toolkit (AppleLisa
?) included an application framework written in Clascal (Pascal with OO extensions). Clascal evolved into "ObjectPascal
". Mac Pascal and Lightspeed/THINK/Symantec Pascal could compile Object Pascal. Borland implemented and expanded upon this dialect in its TurboPascal
is being kept alive by a dedicated group of developers who have maintained and enhanced the framework since Apple stopped supporting it in 2001. MacApp
has been updated to fully support Carbon Events, Universal Binaries, Unicode Text, MLTE control, DataBrowser?
control, FSRefs, XML parsing, Custom Controls, Composite Window, Drawer Window, HIView Window and Custom Windows. MacApp
also has C++ wrapper classes for HIObject and HIView.
At WWDC 2005, it took a single developer 48 hours to update MacApp
and the MacApp
example apps to support Universal Binaries.
Apple's page bears the bad news that as of October 2, 2001 it will do no further development or maintenance of the code base.
A volunteer community headed by the former Apple tech lead continues to maintain MacApp
I "accidentally" made a link to this WikiName
. I would not have created this page but given that it's here, can the WikiSharedMemory?
help with the following questions:
- When did Larry Tesler's Clascal become ObjectPascal?
- This happened after a visit of NiklausWirth to Apple, right?
- How much did MacApp for the Macintosh derive from the earlier Clascal framework for the Lisa or was it a totally separate set of class libraries? (I only remember that Atkinson's QuickDraw was called by both)
- Was the CommandPattern in the original Lisa Clascal object framework?
- Was MacApp the first known occurrence of CommandPattern?
- Who claims responsibility for originating this pattern? (Maybe we should start IhadThisPatternFirst?)
Many design patterns documented in the DesignPatterns
book were used in MacApp
A concise statement of the truth.
Same goes for Metrowerks PowerPlant
An interesting bit of trivia is that Adobe PhotoShop
was originally written in MacApp
. Here is an article about its development: http://www.byte.com/art/9402/sec7/art7.htm
and details how AdobeSystemsInc
ported it to MicrosoftWindows
Whether this is another case of trivia, or interesting historic information, I don't know. But back in 1991 or 1992 a friend handed me a photocopy of an article, which I believe was authored by a group of MacApp
developers, possibly including Larry Tesler and Larry Rosenstein, discussing the extension of ObjectPascal
to include many C++ features in a more "Pascal-like" manner, as a language called Pascal '9x. I have only been able to find two slight references to this proposal, both in issue 5, volume 2 (april 1991) of FrameWork
Magazine, now archived at MacTech?
Magazine (www.mactech.com). One of the links talks about Derick White's several examples from his presentation "Report on Pascal '9x."
, the other is a parenthetical remark (Compare this to Object Pascal; it has no such data hiding syntax, at least not until '9x comes around, so everyone has access to everything about the class.)
I still have the photocopy somewhere, but I wonder if it may be available anywhere on the web? -- LasseHp