Macintosh Programmer's Workshop
   HOME

TheInfoList



OR:

Macintosh Programmer's Workshop (MPW) is a
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists ...
development environment 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 ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
, written by
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 ...
. For
Macintosh The Mac (known as Macintosh until 1999) is a family of personal computers designed and marketed by Apple Inc., Apple Inc. Macs are known for their ease of use and minimalist designs, and are popular among students, creative professionals, and ...
developers, it was one of the primary tools for building applications for System 7.x and Mac OS 8.x and 9.x. Initially MPW was available for purchase as part of Apple's professional developers program, but Apple made it a free download after it was superseded by
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, Free ...
. On
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
it was replaced by the Project Builder IDE, which eventually became
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, ...
.


Design

MPW provided a
command line A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
environment and tools, including 68k and PowerPC
assembler Assembler may refer to: Arts and media * Nobukazu Takemura, avant-garde electronic musician, stage name Assembler * Assemblers, a fictional race in the ''Star Wars'' universe * Assemblers, an alternative name of the superhero group Champions of A ...
s as well as
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 ...
, C and
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 ...
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
s. The shell environment is somewhat similar to
Unix shell A Unix shell is a command-line Interpreter (computing), interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting langua ...
s in design, but is designed around the Macintosh's character set and
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 ...
, replacing the usual terminal environment with a "worksheet" interface, allowing the user to select and run arbitrary sections of a shell script or to redo commands with no retyping. In addition, command line tools were commonly provided with a somewhat standardized graphical interface named Commando that provided limited access to the command line capabilities of the program. The
debugger A debugger or debugging tool is a computer program used to software testing, test and debugging, debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the pr ...
s were not integrated into MPW like most
IDEs Ides or IDES may refer to: Calendar dates * Ides (calendar), a day in the Roman calendar that fell roughly in the middle of the month. In March, May, July, and October it was the 15th day of the month; in other months it was the 13th. **Ides of Mar ...
of today but the language compilers supported the symbolic debugging information file format used by the debugger. MPW supported a source-level debugger called SADE (Symbolic Application Debugging Environment). SADE was not an MPW Tool, but ran as a separate application with a user interface similar to MPW. Apple's compilers had some features that were not common on other platforms—for example, the Pascal compiler was object-oriented, while the C and C++ compilers included support for length-prefixed strings (needed for Pascal-oriented APIs). Pascal was Apple's original preferred language for Macintosh software development, and MPW was initially released with only Pascal support. A C compiler was released with MPW 2.0. The MPW C compiler was written under contract for Apple by Greenhills, a Macintosh-variant of the Green Hills C compiler designed specially for Apple and which was similar to the version that was available for the Lisa Workshop. In addition, the original MPW C compiler was known for its casual and frequently humorous error messages ("we already did this function"), as well as occasionally addressing users by name. These quirks were not carried on after the PowerPC transition, when Apple replaced the originals with compilers written by Symantec. Pascal support was no longer provided by the mid-90s due to declining popularity of the language. MPW was always targeted to a professional audience and was seldom used by hobbyist developers due to the considerable price for the package; by the time it was made freeware it had long since been superseded by offerings from Symantec and
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 ...
, as well as Apple's own development tools inherited from NeXT and distributed for free with OS X. It was also occasionally available as a wrapper environment for third-party compilers, a practice used by both Metrowerks and Absoft among others. Apple has officially discontinued further development of MPW and the last version of OS X to run it is 10.4 'Tiger', the last one to support the Classic environment. Apple maintained a web site and
mailing lists A mailing list is a collection of names and addresses used by an individual or an organization to send material to multiple recipients. The term is often extended to include the people subscribed to such a list, so the group of subscribers is re ...
that supported the software long after its discontinuation, but that site now redirects to the Xcode page.


MPW Shell

The MPW Shell featured redirection of output to files, as well as to windows. If a file were open, the output would go to the file and to the open window. This redirection of output required significant patching out of the file system calls so that tools need not do anything special to inherit this feature: the MPW Shell did all of the work. The MPW Shell command language was based on the Unix csh language, but was extended to support the main features of the Macintosh GUI. It had simple commands to create menus, dialogs (prompts), and new shell windows. The cursor could be controlled, and MPW scripts or tools could easily be attached to a menu item. Command key shortcuts could be specified. Window size and location could be controlled. These features were popular in commercial production environments, where complicated build and packaging processes were all controlled by elaborate scripts. The shell had some important differences from its Unix counterparts. For instance, the classic Mac OS had nothing comparable to Unix fork(), so MPW tools were effectively called as subroutines of the shell; only one could be running at any one time, and tools could not themselves run other tools. These limitations were the inspiration for the MacRelix project, a "Unix-like system" for classic Mac OS.


Look and feel

Functionally, a ''worksheet'' is a cross between a
text editor A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software (e.g. Windows Notepad). Text editors are provided with operating systems and software development packages, and can be us ...
document and an
xterm In computing, xterm is the standard terminal emulator for the X Window System. It allows users to run programs which require a command-line interface. If no particular program is specified, xterm runs the user's shell. An X display can show ...
window. Each worksheet window is persistently bound to a file. The user may type anything anywhere in the window, including commands, which can be executed via the keyboard's Enter key; command output appears at the insertion point. Unlike an xterm window, an MPW worksheet is always in visual editing mode and can be freely reorganized by its user. Hence a worksheet can be purely a command script or purely a text document or a mixture of the two—an integrated document describing the history, maintenance procedures and test results of a software project. The commercial
BBEdit BBEdit is a proprietary text editor made by Bare Bones Software, originally developed for Macintosh System Software 6, and currently supporting macOS. History The first version of BBEdit was created as a "bare bones" text editor to serve as a "p ...
text editor retains a feature it calls "shell worksheets" on Mac OS X. The
Emacs Emacs , originally named EMACS (an acronym for "Editor MACroS"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
text editor provides shell buffers, a similar feature that works across platforms.


Other tools

MPW included a version of
make Make or MAKE may refer to: * Make (magazine), a tech DIY periodical *Make (software), a software build tool *Make, Botswana, in the Kalahari Desert *Make Architects Make Architects is an international architecture practice headquartered in Londo ...
. Its syntax was conceptually similar to that of Unix make, but used the
MacRoman Mac OS Roman is a character encoding created by Apple Computer, Inc. for use by Macintosh computers. It is suitable for representing text in English and several other Western languages. Mac OS Roman encodes 256 characters, the first 128 of which ...
long f character to indicate dependencies. More significantly, since the limitations of the shell precluded the make program from running tools itself, it had to work by composing a script of compile/link actions to be run, then delivering that to the shell for execution. While this was good enough most of the time, it precluded makefiles that could make on-the-fly decisions based on the results of a previous action. Although not implemented as MPW tools, the package also came with several source-level
debugger A debugger or debugging tool is a computer program used to software testing, test and debugging, debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the pr ...
s through its history; SourceBug and SADE (Symbolic Application Debugging Environment) were used on MC680x0 systems, while the Power Mac Debugger (known during development as R2Db) provided both local and remote debugging services for PowerPC systems, the latter by using a server program known as a "debugger nub" on the computer being debugged.


Writing MPW tools

MPW included a set of standard C libraries sufficient for developers to build their own MPW tools. Many Unix utilities could be ported with little change. One point of difficulty was the Mac OS
newline Newline (frequently called line ending, end of line (EOL), next line (NEL) or line break) is a control character or sequence of control characters in character encoding specifications such as ASCII, EBCDIC, Unicode, etc. This character, or a ...
convention, which was different from Unix. Another was the pathname separator, ":" in Mac OS, but many Unix utilities assumed "/". Many Unix utilities also assumed pathnames would not have embedded spaces, a common practice on Macs. For a number of years, the
GNU toolchain The GNU toolchain is a broad collection of programming tools produced by the GNU Project. These tools form a toolchain (a suite of tools used in a serial manner) used for developing software applications and operating systems. The GNU toolchain pl ...
included portability support for MPW as part of
libiberty GNU libiberty is a software library with a collection of subroutines used by various GNU programs. The library is now a decommissioned GNU package. It was originally intended to be a sort of standard cross-platform library, thus enabling it to be ...
. This was used to support MPW-hosted cross-compilers used by
General Magic General Magic was an American software and electronics company co-founded by Bill Atkinson, Andy Hertzfeld, and Marc Porat. Based in Mountain View, California, the company developed precursors to "USB, software modems, small touchscreens, touch ...
and several other developers.


History

MPW was started in late 1985 by Rick Meyers, Jeff Parrish, and Dan Smith (now Dan Keller). It was going to be called the Macintosh Programmer's System, or MPS. (Notice that coincidentally the three last names start with MPS.) 'MPS ' has always been the creator signature of the MPW Shell as a result of this. Since MPW was to be the successor to the Lisa Workshop, they decided to rename it the Macintosh Programmer's Workshop. Before the arrival of MPW, Mac applications had to be cross-developed on a Lisa. The MPW Pascal compiler is descended from the Lisa Pascal compiler. Apple's
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 ...
worked with
Niklaus Wirth Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist. He has designed several programming languages, including Pascal (programming language), Pascal, and pioneered several classic topics in software engineering. In 1984, he w ...
to come up with
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. ...
extensions which Ken Doyle incorporated in one of the last versions of the Lisa Pascal compiler. This enabled
MacApp MacApp was Apple Computer's object oriented application framework for the classic Mac OS. Released in 1985, it transitioned from Object Pascal to C++ in 1991's version 3.0 release, which offered support for much of System 7's new functionality. M ...
. Early contributors included Rick Meyers (project lead and MPW Shell command interpreter), Jeff Parrish (MPW Shell editor), Dan Smith (MPW Shell commands), Ira Ruben (assembler and many of the tools including Backup, PasMat, and more), Fred Forsman (Make, Print, SADE, and assembler macro processor), Al Hoffman (Pascal compiler) Roger Lawrence (Pascal and C compilers, including the error messages), Ken Friedenbach (linker), Johan Strandberg (Rez, DeRez, RezDet), Steve Hartwell (C libraries), and Dan Allen (MacsBug, editor). The Apple Numerics Group also contributed math libraries. MPW 1.0 was completed on September 24, 1986. A shell
memory leak In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that Computer memory, memory which is no longer needed is not released. A memory leak may also happe ...
was fixed on October 10, 1986, and MPW 1.0.1 was born. MPW 2.0 was completed on July 20, 1987. MPW 3.0 was done November 30, 1988 and included a completely new C compiler. Around the same time, the beta version of the
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 ...
compiler as well as
MacApp MacApp was Apple Computer's object oriented application framework for the classic Mac OS. Released in 1985, it transitioned from Object Pascal to C++ in 1991's version 3.0 release, which offered support for much of System 7's new functionality. M ...
2.0 (for Object Pascal) were made available. MPW 3.1 and 3.2 came in the next few years, with MPW 3.3 released in May 1993, adding distributed tools support and incremental linking. MPW 3.4 was completed July 14, 1995, and MPW 3.5 was done December 17, 1999. MPW 3.6 was under development when work was halted in late 2001. During MPW's twilight years, Greg Branche supported MPW unofficially through the Apple MPW-dev mailing list. The list, and the lists.apple.com server that hosted it, was planned to be shut down January 17, 2014, a decision that was later reversed.


Legacy

MPW can still be used to develop for
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
, but support is limited to
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 ...
applications for
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 ...
-based computers. To develop Mac OS X applications based on other technologies, one must use either
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, ...
or another OS X-compatible development environment. MPW also included a
version control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system called Projector; this has been superseded by modern
version control systems In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
and is no longer supported in Mac OS X.


See also

*
Jasik debugger The Jasik Debugger (or more correctly, The Debugger from Jasik Designs), was a debugger tool for the classic Mac OS. Pitched as a much more powerful alternative to Macsbug, it was a popular choice among professional Mac developers until the advent ...
*
Comparison of computer shells A command shell is a command-line interface to interact with and manipulate a computer's operating system. General characteristics Interactive features Background execution Background execution allows a shell to run a command without us ...


References


Further reading

* * Chapter six is about MPW.


External links

*
MPW-Dev mailing list, apparently still availableMPW 3.0 General InformationMPW 3.5 Download from Apple FTP Mirror

Updates
{{Mac OS Macintosh operating systems development Classic Mac OS-only software made by Apple Inc. C (programming language) compilers Command shells Classic Mac OS text editors Discontinued development tools Classic Mac OS programming tools