High user expectations put a lot of pressure on any new software program--especially one written for the Macintosh. Not only must a new Macintosh program have all the required and anticipated functions, but is must also be better (i.e., more powerful, have more features, and be easier to use) than those that have come before. It must accomplish this with novelty and innovation while meshing seamlessly with the existing body of programs that collectively comprise what is known as "the look and feel of the Mac." This is both a blessing and a curse.
The Macintosh operating system includes a powerful battery of procedures and resources to draw upon for designing the user interface and screen displays. These powerful high-level features were provided by the Macintosh system software designers to make it easier for programmers to meet the Macintosh look and feel criteria. Now for the bad news. . .
Macintosh programs are event-driven; this means that a program must continuously poll for events (such as a mouse event, keyboard input, or an interrupt from an external device) and immediately respond with the appropriate function. Thus, all functions must be available at all times. Instead of having the luxury of dividing an application into modules with specific functions available in certain situations, a programmer must provided the user with most, it not all, of an application's functionality at the drop of an event. That's not an easy chore.
The up side: Apple and others aren't blind to this issue. Because the transition to programming for the Macintosh is likely to include a steep learning curve, Apple and other affiliated groups do offer assistance in the form of technical training, specialized software, and other support. In this article, Tony Meadow, a Macintosh entrepreneur in his own right, shares his knowledge about what's available from and to the Macintosh development community and where you can go to find it.
Then all you have to worry about is the simple stuff like finding a need, and filling it, while one-upping everyone else in the process. Best of luck.--ed.
Last year the world ran low on yet another vital resource--Macintosh programmers. After the Macintosh II arrived, a lot of companies that thought the Macintosh would never be more than a toy decided that just maybe they should reevaluate their position. Then they got scared. Unfortunately, the Macintosh is a different animal, and programming a Macintosh application takes both specialized knowledge and ability to play by Apple's rules. The result: There's a shortage of Macintosh programmers. So, how come I know so much about it?
I serve as the director of MacSEF (the Macintosh Special Interest Group of the Software Entrepreneurs' Forum). This group is made up of both current and aspiring Macintosh developers who are located in the San Francisco Bay Area. About a hundred people come to its monthly meetings. And the question I'm asked most often these days is, "Exactly how do I become a Macintosh developer?" Well folks, this article is my attempt to answer that question. In it, you'll find lists of every resource I could think of to help you become a Macintosh programmer.
The most obvious (well, it should be, anyway) and important place to begin is with Apple Computer. It does more than any other company that I'm aware of to encourage people to write software for its machines. Apple does this through its Certified Developer Program. If you apply (and are subsequently accepted), Apple will provide you with buckets of resources. Among these resources are discounts on machines, the Outside Apple newsletter, special mailings, and access to AppleLink (Apple's internal bulletin-board and e-mail system). You will also receive Technical Notes, which provide details of recent changes to the Macintosh operating system. Apple also holds topical conferences for developers; both technical and marketing people who have attended those held in the past have found the conferences very useful.
It's particularly important that you sign up for the AppleLink electronic-mail network, which makes communicating with almost everyone at Apple very easy. There are quite a few people who, though notorious for playing telephone tag for weeks, will respond promptly if you send them an AppleLink e-mail message. AppleLink costs more than some other networks--there's a minimum fee of $25 per month. On AppleLink, you're billed for connect time with different rates for daytime or off-hour use.
Don't think that acceptance into the program is routine, however. It will take some work on your part to qualify as a certified developer. You'll need to fill out an application (which can be obtained by calling the Developer Program's group at Apple at 408-973-4897). Developers who actually have products shipping (on any development platform) usually have an easier time getting accepted, but start-up companies are frequently accepted as well. Once you are into the program, you'll find that Apple provides support and encouragement like no other computer manufacturer.
After you are certified, you can contact technical support using AppleLink. (There is no technical-support phone number available for those outside Apple.) Even if you're not certified, you can still ask technical-support questions via MCI Mail. MCI Mail costs $18 per year and you will be billed for each message that you send--but not for connect time (not yet, anyway). Send messages to MACDTS and you should get a reply within a day or so.
There's another group within Apple that is very helpful to developers--the Apple Evangelists. Their mission has been to go to companies and encourage the development of software and hardware products for all Apple's computers. Each evangelist has an area of specialization, such as business software or K-12 educational software. The evangelists act as advocates for third parties within Apple. They are also responsible for sending developers early versions of Apple's upcoming products.
Finally, there is the third-party marketing group at Apple. It helps companies by including them in press-release packets, inviting them to demonstrate their products at Apple's booth at various trade shows, and so on. Although it doesn't (and can't) help everyone, small developers as well as large developers are invited to participate.
Apple has helped set up a mail-order house called APDA, the Apple Programmer's and Developer's Association. Apple publishes almost all of its developer tools and technical documentation through APDA. Often they come out in draft form initially, which usually means they don't include the final artwork or indexes, but it does mean you can get tools and documentation a lot earlier than if you had to wait for the final versions, which are often published by Addison-Wesley. Until the final releases are available, APDA is the only source for many tools and most documentation. It costs $20 per year to join APDA ($25 in Canada and Mexico and $35 elsewhere). You'll receive a quarterly bulletin that lists all available products, including many third-party developer tools.
APDA is the only source for the Macintosh Programmer's Workshop (MPW), Apple's development environment for the Macintosh. MPW supports C, Pascal, and assembly language, as well as Object Pascal (an object-oriented language based on a few extensions to the Pascal language) and C++ (available later this year). A Unix-like shell with an integrated editor comes with MPW. The shell provides most of what's great about the various Unix shells (scripts, powerful command language, and so forth) with a very Macintosh-like interface. People who are used to the Unix system or MS-DOS should have very little culture shock with MPW.
There are all sorts of other things available besides MPW, such as technical documentation on AppleTalk, the LaserWriter family, A/UX, and HyperCard. Subscriptions to the Technical Notes for the Macintosh are available, as well as all the previous issues. The Technical Notes provide sample code for some of the trickier aspects of the operating system, programming guidelines, some file formats, and so on. They are essential for anyone developing commercial software for the Mac. APDA also carries many third-party products, including most of those listed in this article.
One of your next stops should be a good computer bookstore. In the Bay Area, there are several good ones--Computer Literacy and Stacey's are two good chains that seem to have most computer books. If you aren't located in an area with a store that carries the latest technical books, you can order them from Computer Literacy and have items shipped to you.
Addison-Wesley publishes a series of books that have been written by various groups at Apple Computer. The most important of these is Inside Macintosh, which consists of five volumes. There is now a sixth book, which is a complete index to all five volumes, called Inside Macintosh X-Ref. The first three volumes describe the original Macintosh operating system, which is commonly referred to as the Macintosh ROM. The fourth volume describes the additions that were made to the operating system when the Macintosh Plus was released. The fifth volume describes the changes made to the operating system when the Macintosh SE and Macintosh II were released. Yes, you'll need all five volumes and the combined index comes in pretty handy as well. Inside Macintosh is not easy reading, but it is mandatory. You'll end up reading the series from cover to cover several times. (There are other books that are, perhaps, better to start with, some of which are listed later.)
Another important book in Addison-Wesley's Apple series is Human Interface Guidelines. In the Macintosh world, users pay more attention to the user interfaces of applications than do users of other machines. In fact, one of the primary reasons why the Macintosh has succeeded is the interface guidelines. In virtually all Macintosh applications, cutting and copying of text and graphics, the behavior of windows and dialog boxes, and quitting the application are all done in the same way. This makes it much easier on the users, and better for programmers too, because users can transfer much of their knowledge from one program to another. The average Macintosh user regularly employs about six applications, whereas the average MS-DOS user employs perhaps three.
Other volumes in Addison-Wesley's Apple series include Technical Introduction to the Macintosh Family, Programmer's Introduction to the Macintosh Family, and Designing Cards and Drivers for Macintosh II and Macintosh SE. There will undoubtedly be other volumes in this series in the future.
For those just beginning, the two-volume set, Macintosh Revealed, by Stephen Chernicoff, is a good place to start. The set provides an easy path to learning the operating system because it starts with the most important managers (parts of the operating system) and continues to examine the system in more and more detail. There are quite a few managers that are not mentioned in this set, but all the important ones are. Volume 1 is called Macintosh Revealed: Unlocking the Toolbox, and volume 2 is called Macintosh Revealed: Programming with the Toolbox.
Other good books are two by Scott Knaster, who used to manage the Technical Support group at Apple. They are called How to Write Macintosh Software and Macintosh Programming Secrets. These books are for programmers who already know the basics of the Macintosh OS and need to understand more about its inner workings. These books should be on your must-read list; even the most experienced Macintosh programmer will get something out of them.
Apple is quite interested in object-oriented programming. Technology explorers at Xerox PARC, such as Larry Tesler and Dan Ingalls, have infected the Apple development crowd with the fundamental ideas of object-oriented programming, and as a result, Apple now supports an object-oriented, language called Object Pascal. Object-oriented approaches are only just beginning to make themselves felt in the Macintosh marketplace.
For example, MacApp is an application toolkit (available from APDA) that was written in Object Pascal by Apple programmers. It can serve as a foundation and framework on which to build your own program. There is also a version of C++ that works with MacApp objects in the works--it should be out sometime this year. Finally, Kurt Schmucker, who's now working for Apple, has written a book called Object-Oriented Programming for the Macintosh, a second edition of which should be available later this year.
There aren't a lot of magazines oriented toward programmers and developers in the Macintosh world. However, there is one magazine, MacTutor, which has been around for almost three years now, that regularly prints articles with a lot of source code. There's also a newsletter called Connections, which covers developments in the AppleTalk arena. Their articles are technical and oriented toward developers and those who use large, complex networks.
Pascal and C are the two languages most often used in the Macintosh world. Pascal is common for historical reasons. Apple used the UCSD Pascal system on the Apple II and then the Apple III. When the Lisa (the predecessor of the Macintosh) was being designed, the UCSD Pascal system was modified and ported over and eventually became the Lisa Workshop. In the early days, the only way to develop Macintosh software was with the Lisa and the Lisa Workshop. Since then, C has become more popular. Today, there's probably a 50-50 split between Pascal and C among developers. Although there is always some work that's done in assembly language, the majority of all Macintosh products are done in either C or Pascal.
There are two basic flavors of development environments in the Macintosh world. In one corner, you have development systems with very Mac-like user interfaces. The best known examples of these are Lightspeed C and Lightspeed Pascal. Both are tightly integrated environments that include an editor, compiler, linker, and make facilities (Lightspeed Pascal also includes a source-level debugger). Both are very fast and easy to learn and use. Their disadvantages are that they aren't extensible and it's a bit of work to develop software in a group.
The other approach is to have a more Unix-like interface. The Macintosh Programmer's Workshop (MPW), mentioned earlier, is the best known example of this approach. MPW still has a Macintosh-style interface even though it has a Unix-like shell, and the environment is easy to extend. It's also easy to port well-written Unix or MS-DOS utilities over to MPW because there are standard input/output libraries for both C and Pascal. The linker allows the use of Pascal, C, and assembly language in a single application.
There are several third parties that offer Modula-2 and Fortran compilers that run under MPW. MPW's disadvantage is speed; it is noticeably slower than the Lightspeed products.
There are several additional vendors of C and Pascal: Manx Software, Borland International, TML Systems, and Consulair number among them. It does seem, however, that MPW and Lightspeed are the most widely used.
As alluded to before, object-oriented programming is becoming increasingly popular in the Macintosh world. It is frequently used within Apple; most of the programs used to demonstrate the Macintosh II when it was first released were written in MacApp. MacApp, the "Expandable Macintosh Application" (written in Object Pascal), is a set of objects that implement all the standard behaviors of a Macintosh application. The programmer writes code for functions that are application-specific and MacApp handles the rest. Like MPW, it is available through APDA.
For Lisp fiends, there are two excellent environments. Coral Software's Allegro Common Lisp is a wonderful implementation with a well-conceived package that includes an Emacs-like editor and a source-level debugger. There is also a foreign-language (C, Pascal, or assembly language) interface. Object Lisp is supported now and CLOS (Common Lisp Object System) is coming soon. Although it can't produce stand-alone (double-clickable) Macintosh applications yet, this feature should be available soon. Only 1 Mbyte of RAM is required, so it's not a memory hog.
MacScheme+ToolSmith from Semantic Microsystems is a nice implementation of Scheme, the C of the Lisp world. It also has a Macintosh user interface and a source-level debugger. There is support for calling assembly-language routines but not C or Pascal. There's also an Application Builder, which produces double-clickable applications.
At this time, there isn't a Smalltalk that has a Macintosh user interface or that can create applications with a Macintosh interface. ParcPlace Systems (a spin-off of most of the Smalltalk wizards from Xerox PARC) does have a well-supported, well-documented Smalltalk for the Macintosh. It has the traditional Smalltalk user interface, though, so it isn't of interest to those who want to develop Macintosh applications. Digitalk is working on versions of its Smalltalk V for both the Macintosh II and SE. And finally, Apple has an unsupported, experimental version of Smalltalk (Version 0.4), which is available through APDA. Apple is also working on a much more elegant version with a Macintosh interface, although it's likely that it won't be available until late this year (if we're lucky).
One nice tool that saves a lot of time is the Programmer's Online Companion, available from Addison-Wesley. It provides the interface definitions to most of the Macintosh OS calls. Experienced programmers spend more time with the five volumes of Inside Macintosh than anything else, so this product pays for itself very quickly.
I'm aware of only four database or file manager toolkits available for the Macintosh. Inside-Out, from Shana Enterprises, is the most advanced. It is a relational database system that you link into your code. Pascal, MacApp (Object Pascal), and C are supported. A multiuser version that works with AppleTalk will be available in the near future. Source code is not available, and there is a licensing fee.
C-Tree, a B-tree package, and R-Tree, a report writer, are available from Faircom Systems. Both have been ported to the Macintosh and run on a wide variety of machines. Source code for both is available and there is no licensing fee.
The TML Database Toolkit, available from TML Systems, is an ISAM package written in TML Pascal. Presumably, it could be easily moved to other Macintosh Pascals. Also available are db'Vista, a network model database, and db'Query, a query package, from Raima Corporation. Source code is available.
MacExpress, from ALSoft, and the Programmer's Extender series, from Invention Software Corp., are toolkits that can give you a running start in developing Macintosh applications. They provide the basic behavior of a standard Macintosh application so that you (hopefully) only have to write the application-specific code. These kits can be used with C or Pascal. Source code is available for the Programmer's Extender series. Both kits attempt to provide the advantages of an object-oriented toolkit (such as MacApp) in traditional procedural languages. They can only be partially successful in this attempt, and it is my impression that MacExpress is somewhat the better of the two.
Prototyper, from SmethersBarnes, as its name suggests, is an interface design tool for creating such objects as menus, windows, dialog boxes, alerts, and icons. It also generates complete Pascal source code and resources for the Lightspeed, MPW, Turbo, or TML compilers. No distribution or licensing fees are charged.
Three debuggers are available for the Macintosh. Not one of them is sufficient for all needs, so you'll probably end up using at least two of them. Unfortunately, there's only one source-level debugger available on the Macintosh now, and that is the integrated debugger in Lightspeed Pascal. I've heard rumors of two or three source-level debuggers under development, but until they're available, you'll have to learn (at least) a little assembly language.
MacsBug is the debugger supported by Apple as part of MPW. Although it is derived from the original version developed by Motorola, it's been rewritten several times.
TMON was the second debugger for the Macintosh. It has a window-based user interface, but it does not use the Macintosh user interface. Because it's window-based, you can look at several different things (registers, code, data areas, and so on) simultaneously. There are some capabilities beyond MacsBug, including the ability to extend it by writing a user area. It also supports trap discipline, which is a series of patches installed in front of system calls to check for common errors, such as invalid handles (pointers to pointers), invalid strings, and so on. The latest version (2.8) runs on a Macintosh II but does not understand the 68020 specific, 68881 FPU, and 68851 PMMU instruction sets.
The Debugger, from Jasik Designs, is the latest debugger for the Macintosh. It has a Macintosh user interface and provides some features that neither MacsBug nor TMON have. Among other features, it knows the symbolic names of standard Macintosh OS globals and data structures. You can also easily teach it about your application-specific data structures.
A useful way to share information about the Macintosh is through developers' groups. I'm only aware of three in the U.S. These are MacSEF (the Macintosh Special Interest Group of the Software Entrepreneurs' Forum) in the San Francisco Bay Area (of which I'm the director), the MacTechGroup (of the Boston Computer Society), and the DC MPW Developer's Group (Washington, D.C.).
These groups are composed mainly of programmers and developers who are writing code for the Macintosh, not end-users. They provide developers with an opportunity to share technical information, meet other people who are also excited about the Macintosh, perhaps make contacts useful in the business side of things, and hear interesting speakers. At MacSEF, for example, speakers have included Scott Knaster, Erich Ringewald, Phil Goldman (who wrote MultiFinder), Larry Rosenstein (who wrote a lot of MacApp), and Bill Campbell (president of Claris Corp.--Apple's application software spin-off).
There are several national organizations of Macintosh programmers and developers that were organized to focus on a specific interest.
The AppleTalk Developers Association (ATDA) was organized a couple of years ago by several companies developing products that work with AppleTalk, Apple's LAN. AppleTalk, which many people outside the Macintosh world don't know a lot about, is a very sophisticated suite of protocols. Apple provides two implementations of it: LocalTalk (built into every Macintosh, runs at 23OK/second, and is quite inexpensive and easy to install) and EtherTalk (based on top of Ethernet, runs at 10 Mbytes/second, and is more expensive to install). The organization promotes cooperation among members, including both the technical and marketing angles.
The Desktop Engineering Developers Association (DEDA) was organized by several companies that have products in the engineering/scientific marketplace. They also promote cooperation among interested parties.
The MacApp Developers Association (MADA) is a users' group for those interested in MacApp, the Expandable Macintosh Application, written in Object Pascal. It has meetings twice a year at the San Francisco Macworld Expo show (each January) and the Boston Macworld show (each August). There are five disks of source code and various tools that the group has put together so far. The MacApp development group at Apple attends each meeting and talks with programmers who use MacApp. The members listen and actually make changes to MacApp based on suggestions that come up at these meetings. MADA is therefore a very worthwhile group. Anyone interested in object-oriented programming on the Macintosh should join.
There's a way to get a head start on learning the Macintosh operating system: Take a class. Classes are offered by three companies: Apple Computer, Personal Concepts, and Bear River Institute (of which I'm president and in which I obviously have a vested interest).
Apple Computer offers four courses: Using Macintosh Programmer's Workshop (1 day), MacApp and Object-Oriented Programming (4 days), Introduction to Macintosh Programming (1 day), and Developing a Macintosh Program (1 day). These courses are available primarily to certified developers, and there is often a waiting list to get into a class.
Personal Concepts and Bear River Institute offer classes primarily on an in-house basis, but classes are sometimes available to the general public. Both companies offer courses designed to complement those offered by Apple.
The classes available through Personal Concepts are Programming the Macintosh II (1- and 4-day versions) and Macintosh Programming--An Introduction (1- and 4-day versions).
Classes available from Bear River Institute are Advanced Macintosh Programming (4 days), Testing Software on the Macintosh (2 days), Designing a Macintosh Application (2 days), A Technical Introduction to AppleTalk (2 days), The A/UX Operating System (1 day), and The Macintosh User Interface for A/UX Programmers (4 days).
I know this resource kit isn't complete and I'm sure that I've left out somebody's favorite goodies, but this should give you some ideas about where to start. Have fun! The Macintosh can be as great a machine to work with as it is to use.
Help Wanted
Apple Computer's Certified Developer Program
APDA--Apple Programmer's and Developer's Association
Good Reading
Programming Languages
Other Development Tools
Debuggers
Other Organizations
Getting a Head Start
Conclusion