Once upon a time, Mail.app was the email application for an operating system known as NeXTSTEP. (For more on this, see the earlier Hawk Wings post, “Apple Mail: The Early Years“).
Then NeXTSTEP became OpenStep/OPENSTEP and Mail.app went with it. And OPENSTEP begat Rhapsody. And Rhadsody begat OS X. (Full genealogy on Wikipedia).
Don Yacktman
, then a OpenStep developer, wrote an article
in 1997 which outlines how bundles or plugins worked in Mail.app and what they did.
He describes plugins like Cryptor (PGP encryption) and URLifier which placed a clickable icon in front of URLs:
Colorizer scanned headers for keywords and patterns and enabled you to modify the summary of messages (what we call the List View) according to the matches.
For example, you could place a big red arrow next to emails from your boss or colour the background of emails from your spouse pink.
Other plugins opened HTML email in the browser of your choice.
But the greatest of them all was EnhanceMail:
It collects a number of cool hacks into a single bundle. In displayed messages, it can turn smilies such as “:-)” into graphic smiley-faces. (There are over a dozen smiley graphics it uses to display the various types of smilies.) It has a wide variety of options for appending signatures (including “rich” signatures with graphics and various fonts) and options for quoting text from the original message. A user can even highlight a passage in a message, hit “Reply”, and only that passage will appear quoted in the response, making it easier to trim down quoted text. It also adds support for X-face graphics and adds an X-Image-Url: header which can be used to supply a better looking mail face picture. (It automatically looks up the images and displays them instead of the xfaces. And it caches them on your hard drive, too.) It adds several other highly useful features as well.
It’s amazing, he says, that in 1997 there were so many great plugins for Mail.app:
That’s a lot of modification for an application that doesn’t have a published API.
Despite this, he regards the design decision by NeXT which allowed Mail.app to load bundles on start-up as a crucial one in the app’s development:
A bundle developer can walk outside of the published API and make changes to applications that the application’s authors never even considered in their wildest dreams. In other words, by loading bundles, applications are throwing the door to future customizations wide open.
Amen to that!
Fulfill your wildest dreams on the Hawk Wings Plugin and Addon List.
Tags: API, Apple Mail, Bundles, history, mail.app, NeXTSTEP, OPENSTEP, plugins


You can peruse the bundles and their read-mes at
ftp://ftp.peak.org/pub/next-ftp/next/apps/mail/bundles/
You can even download the bundles but they won’t work with Mail –
Pity there is no source code available…
Some of the bundles do include source code. Read the ReadMes.
You didn’t take note of which ones did you?
When I was rooting around in the bundles for screenshots for this post, I think I noticed the Colorizer and EnhanceMail did. Perhaps in bundles marked with an “.s.”?
It’s amazing how similar the structure of the bundles if after almost ten years. Same internal structure, same elements, nib files, the lot.
It’s not that remarkable — the internal structure of resource forks hasn’t changed since 1984. :) But there were always new and/or different resources all along the way, and it’s the same case here. The file formats have changed; for example: modern nib files have a different format several times removed. You could not use a NextStep 1.0 nib with current IB, but you might be able to use an OpenStep 4.0 nib. Maybe.
[...] After watching how far ahead of the pack NeXTMail was, you can read more about Mail in NeXTSTEP (Apple Mail: The Early Years) and about the origin of bundles, which live on in today’s Mail.app as plugins. [...]