TweetFollow Us on Twitter

November 92 - Pointer-Counterpointer

Pointer-Counterpointer

Eric Berdhal and Jeff Alger

Eric,

    For eight years now, MacApp has been the only game in town. Sure, there's been Smalltalk V/Mac and the Think Class Library, but neither is a serious product for large-scale applications. Suddenly, we're going to have new, high-quality offerings from companies like Symantec, Taligent, Component Software, Visix, Electron Mining (see elsewhere in this issue), and not least Apple. There will be lots of cross-pollenation from technologies like X, Windows, Common Lisp and its bouncing new baby, Dylan, and other AI-derivatives. Where before we had strict parochialism, we will now have routine cross-platform development.

    What we're seeing is the emergence at long last of a competitive market economy in class libraries for the Macintosh. Ironically, it will come about roughly three years after the fall of central planning in eastern Europe, but hey, better late than never. Those of us who have lived with MacApp over the years (and no mistress could have been more loyal or more fickle!) are the keepers of the lore and should pass that lore along to the new generation. So, here goes.

    Apple has invested too little to do the job right but just enough to screw up the third-party market. One has to wonder whether a Taligent-sized effort within Apple years ago wouldn't have obviated the need for Taligent as a separate company. By changing compilers to suit MacApp Apple kept others constantly off-balance in language tools. By providing simplistic tools like ViewEdit, SourceBug, MPW, and MacBrowse free on ETO, but never really finishing them, Apple has hampered third-party vendors and products - Jasik's Debugger, AppMaker, Ad Lib, Object Master, to name just a few - that have consistently been better products, but lacked one critical attribute in the market: the Apple logo. Lurches in direction from version to version and even beta to beta have made it impossible for independent companies to recapture engineering costs. It has also discouraged people from writing books, developing training courses, or providing complementary class libraries. On reflection, I think Apple's resources would have been better used to set standards, enable technologies through technical assistance and seed funding, and provide a marketing umbrella for third-party products.

    As far as technology is concerned, I agree with you that versions 1.x and 2.x were quite well done, but that 3.x is basically a collection of features masquerading as an application framework.

    There were the expected number of misguesses for anything this complex. Compatibility with Object Pascal, in hindsight, was more harmful than helpful and looks a little silly now. Not using C++ version 3.x, pointer-based objects or multiple inheritance also looks increasingly like a big mistake. Backward compatibility with 2.x resulted in lots of redundancy but little benefit.

    There were good concepts backed by poor implementations. Behaviors, adorners, and certain aspects of event dispatch missed the more general (and simpler) principles of delegation and aggregation; they are also unevenly applied. Dependency management never quite settled into a coherent architecture and has been used in some positively bizarre ways. The 2.x view architecture was due for an overhaul and didn't get it. I can't agree with your praise of the dialog architecture, Eric. I'd like to see these areas rethought in future frameworks.

    There are glaring omissions: memory management, including garbage collection; data structures; object persistence and distribution; automated segmentation; data communications; and database support.

    MacApp 3.x suffers from a lack of architectural coherence. Learning MacApp is like walking into a house of mirrors. Eventually you learn your way around, but it's disorienting and you can't trust your senses. Even within MacApp there isn't a great deal of consistency, especially in the use of new features like behaviors, adorners and dependency management. One gets the impression that there just wasn't time to think things through.

    On the other hand, there are some things done very well in 3.x: exception handling, the overall approach to commands and events (though the implementation is not well-factored), instantiate-by-name and other uses of metainformation, support of System 7 features, printing (my favorite!), streams, the menu architecture, and the mechanics of windoids and tear-off menus. These should be studied seriously by any newcomer to the field.

    Despite the problems, I don't blame the MacApp team itself, for they accomplished a remarkable amount with limited resources. On balance, I'd grant an A+ for effort but only C++ for the outcome and a generous D for Apple management. The new kids on the block would be well-advised to study the reasons.

Jeff

Friend Jeff,

    I've been thinking over the conversations we've had about MacApp over the years, and we have had some barn burners, haven't we? Now that Apple is moving beyond MacApp, we have something new to consider: What can we learn from MacApp and take with us to the future?

    One thing I've always admired about MacApp is its vision and philosophy. I think the first thing I liked about MacApp was that is was a decent factoring of a Macintosh application. Even back in the days of MacApp 1.x, there were interesting features aimed at being factors of a Mac App: a rudimentary document structure, an encapsulation of a display, and some basic support for utility objects like lists.

    When MacApp turned 2.x, there was yet another factoring of a Mac App, one that was significantly different and better. The document structure was still not fantastic, but it did exist and allowed basic default functionality to be easily accessed. The hierarchical view system modeled the way developers want to display information fairly well. In many ways, the 2.x cycle brought MacApp close to a quantum leap in technology, where software development could truly leverage object technology.

    Then came 3.x. Unfortunately, I think 3.x consists of a variety of features that were grafted onto 2.x technology. MacApp deserved better and could have easily been the unarguably superior development environment. As it is it's still head and shoulders above the crowd, but the question remains: What can we learn from MacApp? More importantly, what is MacApp? Once we have the answer to that question, I think the rest will come easily.

    I see MacApp as a collection of interesting features, a few frameworks, and a couple architectures all thrown together in a package. In short order, here's the way I view the MacApp world.

    One of the oldest and most interesting architectures I see in MacApp is the View architecture. Although it is essentially unchanged since 2.x, it is still a fine piece of work. Views allow developers to display information to the user in a rather rich format. Look at this, now I'm spewing Apple marketing information at you.

    Built on this architecture is what is possibly one of the best ideas to come around, MacApp dialogs. After doing dialogs with MacApp, I can't see going back to using the toolbox. MacApp actually makes it rather pleasant to deal with this score. Well, I like it anyway.

    Then there are adorners. These objects, really lightweight views, look like an interesting experiment, but I'm not sure it was a success. I've always thought that they were too light to be true lightweight views and too heavy to just adorn a view. I'm also not thrilled that they require so much direct support from the view system, almost like they were shoe horned into place. Behaviors, yet another MacApp feature, have many of the same problems, but I feel less strongly about them.

    The other framework that is really cool is the command structure. How else do you encapsulate the Macintosh undo metaphor? This is a textbook example of how simple, obvious classes can solve what would otherwise be exceedingly difficult problems. What MacApp has done is even more impressive, setting the commands as the basic unit of work in an application.

    Then there are systems and architectures that are expected to be found in a mature object system. MacApp implements very nice access to the metainformation available from Object Pascal. Dependency management and a stream architecture is another one of those features you get used to seeing in object based systems. MacApp's implementation of these isn't entirely world class, but they are very usable even though they're not completely integrated into the underlying MacApp frameworks.

    Finally, MacApp has a lot of debugging and antibugging code. Another thing that MacApp dealt with mostly head on is the admission that exception handling has to be a part of the mainstream code of an application. The consequence is that debugging code and failure handling permeates MacApp and MacApp based applications, something noticeably absent elsewhere.

    So, with all these pieces, we should be able to find something that we can take with us, either in code, analysis, or lessons.

Stirring regards,
Eric

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Fallout Shelter pulls in ten times its u...
When the Fallout TV series was announced I, like I assume many others, assumed it was going to be an utter pile of garbage. Well, as we now know that couldn't be further from the truth. It was a smash hit, and this success has of course given the... | Read more »
Recruit two powerful-sounding students t...
I am a fan of anime, and I hear about a lot that comes through, but one that escaped my attention until now is A Certain Scientific Railgun T, and that name is very enticing. If it's new to you too, then players of Blue Archive can get a hands-on... | Read more »
Top Hat Studios unveils a new gameplay t...
There are a lot of big games coming that you might be excited about, but one of those I am most interested in is Athenian Rhapsody because it looks delightfully silly. The developers behind this project, the rather fancy-sounding Top Hat Studios,... | Read more »
Bound through time on the hunt for sneak...
Have you ever sat down and wondered what would happen if Dr Who and Sherlock Holmes went on an adventure? Well, besides probably being the best mash-up of English fiction, you'd get the Hidden Through Time series, and now Rogueside has announced... | Read more »
The secrets of Penacony might soon come...
Version 2.2 of Honkai: Star Rail is on the horizon and brings the culmination of the Penacony adventure after quite the escalation in the latest story quests. To help you through this new expansion is the introduction of two powerful new... | Read more »
The Legend of Heroes: Trails of Cold Ste...
I adore game series that have connecting lore and stories, which of course means the Legend of Heroes is very dear to me, Trails lore has been building for two decades. Excitedly, the next stage is upon us as Userjoy has announced the upcoming... | Read more »
Go from lowly lizard to wicked Wyvern in...
Do you like questing, and do you like dragons? If not then boy is this not the announcement for you, as Loongcheer Game has unveiled Quest Dragon: Idle Mobile Game. Yes, it is amazing Square Enix hasn’t sued them for copyright infringement, but... | Read more »
Aether Gazer unveils Chapter 16 of its m...
After a bit of maintenance, Aether Gazer has released Chapter 16 of its main storyline, titled Night Parade of the Beasts. This big update brings a new character, a special outfit, some special limited-time events, and, of course, an engaging... | Read more »
Challenge those pesky wyverns to a dance...
After recently having you do battle against your foes by wildly flailing Hello Kitty and friends at them, GungHo Online has whipped out another surprising collaboration for Puzzle & Dragons. It is now time to beat your opponents by cha-cha... | Read more »
Pack a magnifying glass and practice you...
Somehow it has already been a year since Torchlight: Infinite launched, and XD Games is celebrating by blending in what sounds like a truly fantastic new update. Fans of Cthulhu rejoice, as Whispering Mist brings some horror elements, and tests... | Read more »

Price Scanner via MacPrices.net

Verizon has Apple AirPods on sale this weeken...
Verizon has Apple AirPods on sale for up to 31% off MSRP on their online store this weekend. Their prices are the lowest price available for AirPods from any Apple retailer. Verizon service is not... Read more
Apple has 15-inch M2 MacBook Airs available s...
Apple has clearance, Certified Refurbished, 15″ M2 MacBook Airs available starting at $1019 and ranging up to $300 off original MSRP. These are the cheapest 15″ MacBook Airs for sale today at Apple.... Read more
May 2024 Apple Education discounts on MacBook...
If you’re a student, teacher, or staff member at any educational institution, you can use your .edu email address when ordering at Apple Education to take up to $300 off the purchase of a new MacBook... Read more
Clearance 16-inch M2 Pro MacBook Pros in stoc...
Apple has clearance 16″ M2 Pro MacBook Pros available in their Certified Refurbished store starting at $2049 and ranging up to $450 off original MSRP. Each model features a new outer case, shipping... Read more
Save $300 at Apple on 14-inch M3 MacBook Pros...
Apple has 14″ M3 MacBook Pros with 16GB of RAM, Certified Refurbished, available for $270-$300 off MSRP. Each model features a new outer case, shipping is free, and an Apple 1-year warranty is... Read more
Apple continues to offer 14-inch M3 MacBook P...
Apple has 14″ M3 MacBook Pros, Certified Refurbished, available starting at only $1359 and ranging up to $270 off MSRP. Each model features a new outer case, shipping is free, and an Apple 1-year... Read more
Apple AirPods Pro with USB-C return to all-ti...
Amazon has Apple’s AirPods Pro with USB-C in stock and on sale for $179.99 including free shipping. Their price is $70 (28%) off MSRP, and it’s currently the lowest price available for new AirPods... Read more
Apple Magic Keyboards for iPads are on sale f...
Amazon has Apple Magic Keyboards for iPads on sale today for up to $70 off MSRP, shipping included: – Magic Keyboard for 10th-generation Apple iPad: $199, save $50 – Magic Keyboard for 11″ iPad Pro/... Read more
Apple’s 13-inch M2 MacBook Airs return to rec...
Apple retailers have 13″ MacBook Airs with M2 CPUs in stock and on sale this weekend starting at only $849 in Space Gray, Silver, Starlight, and Midnight colors. These are the lowest prices currently... Read more
Best Buy is clearing out iPad Airs for up to...
In advance of next week’s probably release of new and updated iPad Airs, Best Buy has 10.9″ M1 WiFi iPad Airs on record-low sale prices for up to $200 off Apple’s MSRP, starting at $399. Sale prices... Read more

Jobs Board

Liquor Stock Clerk - S. *Apple* St. - Idaho...
Liquor Stock Clerk - S. Apple St. Boise Posting Begin Date: 2023/10/10 Posting End Date: 2024/10/14 Category: Retail Sub Category: Customer Service Work Type: Part Read more
*Apple* App Developer - Datrose (United Stat...
…year experiencein programming and have computer knowledge with SWIFT. Job Responsibilites: Apple App Developer is expected to support essential tasks for the RxASL Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Operations Associate - *Apple* Blossom Mall...
Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.