MacApp
   HOME

TheInfoList



OR:

MacApp was
Apple Computer Apple Inc. is an American multinational technology company headquartered in Cupertino, California, United States. Apple is the largest technology company by revenue (totaling in 2021) and, as of June 2022, is the world's biggest company b ...
's
object oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
application framework In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of application software. Application frameworks became popular with the rise of graphical user int ...
for the
classic Mac OS Mac OS (originally System Software; retronym: Classic Mac OS) is the series of operating systems developed for the Macintosh family of personal computers by Apple Computer from 1984 to 2001, starting with System 1 and ending with Mac OS 9. The ...
. Released in 1985, it transitioned from
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
to
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
in 1991's version 3.0 release, which offered support for much of
System 7 System 7, codenamed "Big Bang", and also known as Mac OS 7, is a graphical user interface-based operating system for Macintosh computers and is part of the classic Mac OS series of operating systems. It was introduced on May 13, 1991, by Apple Co ...
's new functionality. MacApp was used for a variety of major applications, including
Adobe Photoshop Adobe Photoshop is a raster graphics editor developed and published by Adobe Inc. for Microsoft Windows, Windows and macOS. It was originally created in 1988 by Thomas Knoll, Thomas and John Knoll. Since then, the software has become the indu ...
and SoftPress Freeway.
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
's MFC and
Borland Borland Software Corporation was a computer technology company founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn. Its main business was the development and sale of software development and software deployment product ...
's
OWL Owls are birds from the order Strigiformes (), which includes over 200 species of mostly solitary and nocturnal birds of prey typified by an upright stance, a large, broad head, binocular vision, binaural hearing, sharp talons, and feathers a ...
were both based directly on MacApp concepts. Over a period of ten years, the product had periods where it had little development followed by spurts of activity. Through this period, Symantec's Think Class Library/ Think Pascal had become a serious competitor to MacApp, offering a simpler model in a much higher-performance
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
(IDE). Symantec was slow to respond to the move to the
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
platform in the early 1990s, and when
Metrowerks Metrowerks was a company that developed software development tools for various desktop, handheld, embedded, and gaming platforms. Its flagship product, CodeWarrior, comprised an IDE, compilers, linkers, debuggers, libraries, and related tools. I ...
first introduced their
CodeWarrior CodeWarrior is an integrated development environment (IDE) published by NXP Semiconductors for editing, compiling, and debugging software for several microcontrollers and microprocessors (Freescale ColdFire, ColdFire+, Kinetis, Qorivva, PX, Frees ...
/
PowerPlant Propulsion is the generation of force by any combination of pushing or pulling to modify the translational motion of an object, which is typically a rigid body (or an articulated rigid body) but may also concern a fluid. The term is derived from ...
system in 1994, it rapidly displaced both MacApp and Think as the primary development platforms on the Mac. Even Apple used CodeWarrior as its primary development platform during the Copland era in the mid-1990s. MacApp had a brief reprieve between 2000 and 2001, as a system for transitioning to the
Carbon Carbon () is a chemical element with the symbol C and atomic number 6. It is nonmetallic and tetravalent In chemistry, the valence (US spelling) or valency (British spelling) of an element is the measure of its combining capacity with o ...
system in MacOS X. However, after demonstrating a version at
Worldwide Developers Conference The Worldwide Developers Conference (WWDC) is an information technology conference held annually by Apple Inc. The conference is usually held at Apple Park in California. The event is usually used to showcase new software and technologies in t ...
(WWDC) in June 2001, all development was cancelled that October.


History


Pascal versions

MacApp was a direct descendant of the
Lisa Lisa or LISA may refer to: People People with the mononym * Lisa Lisa (born 1967), American actress and lead singer of the Cult Jam * Lisa (Japanese musician, born 1974), stylized "LISA", Japanese singer and producer * Lisa Komine (born 1978), J ...
''
Toolkit A toolkit is an assembly of tools; set of basic building units for user interfaces. The word toolkit may refer to: * Abstract Window Toolkit * Accessibility Toolkit * Adventure Game Toolkit * B-Toolkit * Battlefield Mod Development Toolkit * Ch ...
'', Apple's first effort in designing an object-oriented application framework, led by
Larry Tesler Lawrence Gordon Tesler (April 24, 1945 – February 16, 2020) was an American computer scientist who worked in the field of human–computer interaction. Tesler worked at Xerox PARC, Apple, Amazon, and Yahoo! While at PARC, Tesler's work include ...
. The engineering team for the Toolkit included Larry Rosenstein, Scott Wallace, and Ken Doyle. Toolkit was written in a custom language known as
Clascal Clascal is an object-oriented programming language (and associated discontinued compiler) developed in 1983 by the ''Personal Office Systems'' (POS) division (later renamed ''The Lisa Division'', then later ''The 32-Bit Systems Division'') of Ap ...
, which added object-oriented techniques to the
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Fren ...
language. Initially, development for the Mac was carried out using a cross-compiler in Lisa Workshop. As Mac sales effectively ended Lisa sales, an effort began to build a new development platform for the Mac. Lisa Programmer's Workshop became in 1985 the
Macintosh Programmer's Workshop Macintosh Programmer's Workshop (MPW) is a software development environment for the Classic Mac OS operating system, written by Apple Computer. For Macintosh developers, it was one of the primary tools for building applications for System 7.x an ...
, or MPW. As part of this process, Clascal was updated to become
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
and Lisa Toolkit offered design notes for what became MacApp. Writing a Mac program without an application framework is not an easy task, but at the time the
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pr ...
field was still relatively new and considered somewhat suspect by many developers. Early frameworks tended to confirm this suspicion, being large, slow, and typically inflexible. MacApp was perhaps the first truly usable framework in all meanings of the term. Compiled applications were quite reasonable in terms of size and memory footprint, and the performance was not bad enough to make developers shy from it. Although "too simple" in its first releases, a number of follow-up versions quickly addressed the main problems. By this point, around 1987, the system had matured into a useful tool, and a number of developers started using it on major projects. MacApp 2.0 was released in 1989. Among the improvements was a simplification of some of the UI element interactions, and support for Multifinder. As Apple announced it was dropping MPW Pascal support in 1992, this version didn't get updated, not even with System 7 support, and Pascal developers were left out on their own to port MacApp 2.0 to the PowerPC.


C++ versions

By this point, in the late 1980s, the market was moving towards
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
, and the beta version of Apple C++ compiler appeared in 1989, around the MacApp 2.0 release. At the same time, Apple was deep in the effort to release
System 7 System 7, codenamed "Big Bang", and also known as Mac OS 7, is a graphical user interface-based operating system for Macintosh computers and is part of the classic Mac OS series of operating systems. It was introduced on May 13, 1991, by Apple Co ...
, which had a number of major new features. The decision was made to transition to an entirely new version of MacApp, 3.0, which would use C++ in place of Object Pascal. This move was subject to a long and heated debate between proponents of Object Pascal and C++ in the
Usenet Usenet () is a worldwide distributed discussion system available on computers. It was developed from the general-purpose Unix-to-Unix Copy (UUCP) dial-up network architecture. Tom Truscott and Jim Ellis conceived the idea in 1979, and it was ...
and other forums. Nevertheless, 3.0 managed to garner a reasonable following after its release in 1991, even though the developer suite, MPW, was growing outdated. Apple then downsized the entire developer tools group, leaving both MacApp and MPW understaffed. One of the reasons for this downsizing was Apple's long saga of attempting to introduce the "next great platform" for development, almost always in the form of a cross-platform system of some sort. Their first attempt was
Bedrock In geology, bedrock is solid Rock (geology), rock that lies under loose material (regolith) within the crust (geology), crust of Earth or another terrestrial planet. Definition Bedrock is the solid rock that underlies looser surface mater ...
, a class library created in partnership with Symantec that ran on the Mac and Windows, which died a lingering death as both parties eventually gave up on working with the other. One of the reasons for their problems was the creation of
OpenDoc OpenDoc is a defunct multi-platform software componentry framework standard created by Apple in the 1990s for compound documents, intended as an alternative to Microsoft's proprietary Object Linking and Embedding (OLE). It is one of Apple's e ...
, which was itself developed into a cross-platform system that competed directly with Bedrock. There were some attempts to position Bedrock as an OpenDoc platform, but nothing ever came of this. While these developments were taking place, MPW and MacApp were largely ignored. It was more important to put those developer resources into these new projects to help them reach the market sooner. But when Bedrock failed and OpenDoc found a lukewarm reception, the Mac was left with tools that were now almost a decade old and could not compete with the newer products from third parties. Through the early 1990s competing frameworks grew into real competitors to MacApp. First Symantec's
TCL TCL or Tcl or TCLs may refer to: Business * TCL Technology, a Chinese consumer electronics and appliance company **TCL Electronics, a subsidiary of TCL Technology * Texas Collegiate League, a collegiate baseball league * Trade Centre Limited ...
garnered a following, but then Metrowerks'
PowerPlant Propulsion is the generation of force by any combination of pushing or pulling to modify the translational motion of an object, which is typically a rigid body (or an articulated rigid body) but may also concern a fluid. The term is derived from ...
generally took over the entire market.


Lingering death

The core developers of MacApp continued to work on the system at a low activity level throughout the 1990s. When all of Apple's "official" cross-platform projects collapsed, in late 1996 the team announced that they would be providing a cross-platform version of MacApp. Soon after, Apple purchased
NeXT Next may refer to: Arts and entertainment Film * ''Next'' (1990 film), an animated short about William Shakespeare * ''Next'' (2007 film), a sci-fi film starring Nicolas Cage * '' Next: A Primer on Urban Painting'', a 2005 documentary film Lit ...
and announced that
OpenStep OpenStep is a defunct object-oriented application programming interface (API) specification for a legacy object-oriented operating system, with the basic goal of offering a NeXTSTEP-like environment on non-NeXTSTEP operating systems. OpenStep was ...
would be Apple's primary development platform moving forward, under the name
Cocoa Cocoa may refer to: Chocolate * Chocolate * ''Theobroma cacao'', the cocoa tree * Cocoa bean, seed of ''Theobroma cacao'' * Chocolate liquor, or cocoa liquor, pure, liquid chocolate extracted from the cocoa bean, including both cocoa butter and ...
. Cocoa was already cross-platform, at that time having already been ported to about six platforms, and was far more advanced than MacApp. This led to strong protests from existing Mac programmers protested that their programs were being sent to the "
penalty box The penalty box or sin bin (sometimes called the bad box, or simply bin or box) is the area in ice hockey, rugby union, rugby league, roller derby and some other sports where a player sits to serve the time of a given penalty, for an offence not ...
", effectively being abandoned. At WWDC'98,
Steve Jobs Steven Paul Jobs (February 24, 1955 – October 5, 2011) was an American entrepreneur, industrial designer, media proprietor, and investor. He was the co-founder, chairman, and CEO of Apple; the chairman and majority shareholder of Pixar; a ...
announced that the negative feedback about the move to Cocoa was being addressed through the introduction of the
Carbon Carbon () is a chemical element with the symbol C and atomic number 6. It is nonmetallic and tetravalent In chemistry, the valence (US spelling) or valency (British spelling) of an element is the measure of its combining capacity with o ...
system. Carbon would allow existing Mac programs to run natively under the new operating system, after some conversion. Metrowerks announced they would be porting their PowerPlant framework to Carbon, but no similar announcement was made by Apple regarding MacApp. Through this period there remained a core of loyal MacApp users who grew increasingly frustrated at Apple's behaviour. By the late 1990s, during the introduction of Cocoa, this had grown to outright dismissal of the product. Things were so bad that a group of MacApp users went so far as to organize their own meeting at WWDC '98 under an assumed name, in order to avoid having Apple staffers refuse them a room to meet in. This ongoing support was noticed within Apple, and in late 1999 a "new" MacApp team, consisting of members who had worked on it all along, was tasked with releasing out a new version. Included was the new Apple Class Suites (ACS), a thinner layer of C++ wrappers for many of the new Mac OS features being introduced from OpenStep, and support for building in Project Builder. MacApp 3.0 Release XV was released Mentions MacApp 15d3 with some of the features. on 28 August 2001 to the delight of many. However, in October the product was killed once again, this time forever, and support for existing versions of MacApp officially ended. The Carbon-compliant PowerPlant X did not ship until 2004, and today Cocoa is almost universal for both MacOS and iOS programming.


MacApp today

MacApp 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. Also the Pascal version, based mainly on MacApp-2, has been ported to Mac OS X and Xcode. It features long Unicode filenames and streamed documents with automatic byte-swapping. MacApp supports the
Xcode Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS. It was initially released in late 2003; the latest stable release is version 14.2, released on December 13, ...
IDE. In fact at WWDC 2005, after Apple announced the transition to Intel CPUs, it took a single developer 48 hours to update MacApp and the MacApp example apps to support Universal Binaries.


Description

: ''This description is based on MacApp 3.0, which had a more advanced underlying model than the earlier 2.0 and differed in many significant ways.'' The Mac OS itself has a very simple event handing system. The event structure passed from the operating system to the application has only an event type like "keypress" or "mouseclick", and details of its location and the modifier keys being held down. It is up to the application to decode this simple information into the action the user carried out, for instance, clicking on a menu command. Decoding this could be difficult, running through lists of on-screen objects and checking if the event took place within their bounds. MacApp provided a solution to this problem using the
command pattern In object-oriented programming, the command pattern is a behavioral design pattern in which an object is used to encapsulate all information needed to perform an action or trigger an event at a later time. This information includes the method name ...
, in which user actions are encapsulated in objects containing event details, and then sent to the proper object to carry them out. The logic of mapping the event to the "proper object" was handled entirely within the framework and its runtime, greatly decreasing the complexity of this task. It is the role of MacApp's internal machinery to take the basic OS events, translate them into semantically higher-level commands, and then route the command to the proper object. Not only did MacApp relieve the author of having to write this code, which every program requires, but also as a side-effect this design cleanly separated code into ''commands'', user-facing actions, and their ''handlers'', the internal code that did the work. For instance, one might have commands for "Turn Green" and "Turn Red", both of which are handled by a single function, ChangeColor(). A program that cleanly separated commands and handlers was known, in Apple parlance, ''factored''. Factoring of a program was particularly important in later versions of the Mac OS, starting with
System 7 System 7, codenamed "Big Bang", and also known as Mac OS 7, is a graphical user interface-based operating system for Macintosh computers and is part of the classic Mac OS series of operating systems. It was introduced on May 13, 1991, by Apple Co ...
. System 7 introduced the
Apple Events Apple events are the message-based interprocess communication mechanism in Mac OS, first making an appearance in System 7 and supported by every version of the classic Mac OS since then and by macOS. Apple events describe "high-level" events suc ...
system, which expanded the original Mac OS's event system with a much richer one that could be sent between applications, not just from the OS to a particular application. This was combined with the
AppleScript AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system automa ...
system which allowed these Events to be generated from scripting code. In MacApp 3.0, Apple Events were decoded into the same commands as if they had been initiated by direct user actions, meaning that the developer didn't have to write much, if any, code to directly handle Apple Events. This was a major problem for developers using earlier systems, including MacApp 2.0, which had no such separation and often led to Apple Event support being left out. In keeping with its role as an application framework, MacApp also included a number of pre-rolled objects covering most of the basic Mac
GUI The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
—windows, menus, dialogs and similar widgets were all represented within the system. Unfortunately, Apple typically supplied lightweight wrappers over existing internal Mac OS code instead of providing systems that were usable in the "real world". For instance, the TTEView class was offered as the standard text editor widget, but the underlying TextEdit implementation was severely limited and Apple itself often stated it should not be used for professional applications. As a result, developers were often forced to buy add-on objects to address these sorts of needs, or roll their own. The lack of a set of professional quality GUI objects can be considered one of MacApp's biggest problems. These problem has been addressed with the release of MacApp R16. MacApp R16 uses standard
Carbon Carbon () is a chemical element with the symbol C and atomic number 6. It is nonmetallic and tetravalent In chemistry, the valence (US spelling) or valency (British spelling) of an element is the measure of its combining capacity with o ...
controls for all MacApp GUI objects. For instance, Carbon introduced the Multilingual Text Engine (MLTE) for full
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
text and long-document support. In R16, the original TTEView class has been superseded by the TMLTEView, which uses the MLTE control.


Notable Users

Adobe Photoshop Adobe Photoshop is a raster graphics editor developed and published by Adobe Inc. for Microsoft Windows, Windows and macOS. It was originally created in 1988 by Thomas Knoll, Thomas and John Knoll. Since then, the software has become the indu ...
was originally written with MacApp 1.1.1, in
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
, and later ported to
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
and MacApp 3.0 for Photoshop 2.5. After MacApp cancellation by Apple, maintenance was taken over internally by the Photoshop development team, ported to
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
, and transformed to be shared with the Windows platform port.


References


External links


Programmer's Guide to MacApp
- full documentation from the
Inside Macintosh Inside Macintosh is the developer documentation published by Apple Computer, documenting the APIs and machine architecture of the Macintosh's classic Mac OS. Early editions The first ''Inside Macintosh'' documentation, for the Mac 128K, was di ...
series {{Widget toolkits Macintosh operating systems APIs Classic Mac OS programming tools