Software 94
Volume Number: 10
Issue Number: 5
Column Tag: The Editor's Page
Software Frameworks ‘94
By Scott T Boyd, Editor
Software Frameworks ‘94
A quick trip to Atlanta to check out the Software Frameworks Conference the first
week in March yielded a handful of surprises. The group, which got its start many
years ago with Larry Tesler handing out fuschia polo shirts to a modest group of
MacApp afficionados, has grown, as have the number of frameworks and tools. The
conference drew a strong contingent of industry leaders, including Ike Nassi, VP of
Apple’s Development Products Group; Larry Tesler, Apple’s Chief Scientist and VP;
Greg Galanos, Metrowerks man-about-town; Mike Potel, Taligent VP of Technology;
Symantec’s Director of Language Products, David Neal; Novell’s VP of Appware System
Group Joe Firmage. Lots of great tools and technologies had top talent there showing
their wares, and we had a great time getting up close and personal guided tours from
the people who build the tools. We spent time getting to know Smalltalk Agents (a
truly great session, guys! I’ve never seen so much rapt attention), Jasik’s latest
PowerPC debugging tools, Metrowerks’ CodeWarrior, Prograph CPX, the Newton Tool
Kit/NewtonScript, and AppMaker. Technology teasers abounded. We got teased by
Taligent about their framework, by Apple about Dylan and OpenDoc, by
Microsoft/Symantec and others about the Microsoft Foundation Classes framework, and
by Larry Tesler and his vision of the future. The rich selection of topics and products
made up for the quick cross-country trip and utter loss of sleep and resulting loss of
orientation.
We arrived just in time for the OLE/OpenDoc face-off. Apple brought Kurt
Piersol, OpenDoc chief architect and suspender-wearing, beard-toting
man-with-the-answers. Microsoft had hoped to bring their OLE heavyweight, Mark
Ryland, but had to make a last minute replacement for unavoidable reasons.
We had hoped for a real world-class bout, but weren’t going to get one. We were
treated to a fine presentation on OpenDoc, but the OLEpresentation really needed better
technical representation than MSwas able to muster. We learned that OpenDoc offers
multiple active parts, irregular and overlapping parts, support for high-end
graphics, edit-in-place, distributed editors, linking, scripting, and even
multiple-drafts (a revision management system). The object model uses a carefully
restricted subset of C++ which offers multiple inheritance. It uses a
CORBA-compliant SOM (IBM-developed) object model. Although OpenDoc is currently
using Apple’s Shared Library Manager (ASLM), Kurt spoke highly of the work IBM has
done with SOM, and is looking forward to the developer seed of PoenDoc, which will use
SOM.
He was careful to point out that OpenDoc isn’t a framework, but, rather, an
object oriented programming interface. It offers you the opportunity to build parts
which will link dynamically into a document-oriented environment. This changes a lot
about the model, both in the user’s mind and in how you can do business. Rather than
build a whole application, you can concentrate on the data, both in how to display it and
how to interact with it. If users like your parts, they’ll use yours. Although the motto
“Parts is parts” sounds simple, it looks like a potential brave new world if OpenDoc
really catches on.
As for OLE, all that I can say is that it’s shipping.
CodeWarrior experiences
I’ve been doing some work with a project which has 50 .c files, 55 .h files,
totalling out to about 39,000 lines of code. I was wanting to play around with
CodeWarrior, was at the conference, happened to be talking to Greg Dow (who just
happens to work for Metrowerks), and there we were with nothing better to do at one
in the morning. Five hours later, this application was building and running with
CodeWarrior. Five hours - not bad.
Now, sure, it’s true that the code was buildable under both ThinkC 5.x and MPW
3.2, so the code was already in pretty good shape from a portability standpoint. That
certainly helped make the task easier. Although Convert•Projects by Rich Siegel
could have saved us some work, I wanted to get a feel for how someone like Greg works
in the environment. So what did we do during those five early-morning hours?
First, we launched CodeWarrior by dropping one of my source files on the
application. Unlike the Think product, CodeWarrior is happy to open a text file
without requiring that you have a project open. What a relief! It’s such a small point,
but it makes me wonder why Symantec hasn’t done this by now. Anyway, we created a
project file and added all of the source files in the directory. If you haven’t seen what
it’s like to be in the CodeWarrior environment, it looks a lot like Think Project
Manager.
Next we went to the Preferences dialog, and selected a few things, like how strict
we wanted the compiler to be about types, prototypes, language extensions, and such.
We chose mostly plain vanilla options. We also told it that we were building an
application, and set things like the creator, size flags, and the default heap size.
A few things caught my attention. First, CodeWarrior can generate .SYM files.
This opens it up for your favorite debugging tools, like Jasik’s The Debugger, as well
as Metrowerks’ own debugger. This stands in stark contrast to Symantec’s decision to
not generate .SYM files, although the Power Mac cross compiler shipping this month
does generate .SYM files.
Second, they have a popup menu with a healthy selection of standard code models.
This makes it easy to specify something like Apple’s MPW C conventions without
needing to remember all of the details which make it unique. We started out with very
relaxed constraints, then tightened them up later in the effort.
“Third, although the similarities between Think and Metrowerks help a newbie
navigate, I had to wonder whether a series of dialogs (looking like a modal throwback to
the old Control Panel) is the best way to deal with preferences.”
Once we had all of that set up, we tried compiling the first file. Right away we
discovered that we needed to think a little bit. Since the sources were set up to compile
under either MPW or Think (an historical artifact which reminded us that people like
Symantec’s quick turnaround tools and MPW’s code generation), each source file used
an #ifdef to decide whether to use precompiled headers for THINKC, or to #include an
all-inclusive .h file. At first we tried not defining the THINKC symbol, but the
includes were so extensive that build time, even as fast as CodeWarrior is, was too
long. So we went and built a precompiled header file (a simple, one step menu
command), and added a #define for THINKC.
This is where we spent too much time. It was early in the morning, we were
tired, and we got confused. At first, we built the precompiled headers without THINKC
defined. Then we figured that out, and built them correctly. Then we forgot that we
still had to have the symbol defined when we built the rest of the files. I don’t know
how much time we wasted on that one, but the bottom line was, because of the way the
files had originally been set up for building in either environment, we had to define the
symbol both when building the headers and when compiling the sources.
Universal Procedure Pointers (UPPs) - It’s only fitting that I had to deal with
UPPs and the universal headers, given that I spent so much time at Apple working on
them. What goes around does seem to come around. Fortunately, we somehow managed
to keep the impact to a minimum, and I only had to make a handful of changes, and it
was no big deal to guess the UPP name for a specific procPtr (although I did have to
open a couple of header files for names I guessed wrong).
All in all, we had a lot of fun, and it only took a little while to get up and going,
and most of that was simply updating my code for the universal headers, a job I had to
do anyway. I’m now enjoying fast build times and a smooth debugging environment, and
am looking forward the forthcoming CodeWarrior improvements.
Software Developers conference
The third week in March found us in San Jose for the Software Developers
Conference. Strangely enough, it started on the day of the Power Macintosh rollout.
That wouldn’t really be noteworthy, but one particular sponsor of the conference saw
fit to hang banners in the entryway, proudly sporting the following text: “The Power
of Pentium, Available Today”. You don’t say?
That should have been enough of a tip-off, but we checked out the rest of the
conference anyway. Evidently, software developer generally means “person who
programs a box running a Microsoft operating system”. Sure, there were exceptions.
Apple, Metrowerks, Symantec, and others did their part, but it was still clearly a
conference mostly for little-endians. It was also clear that they have a rich selection
of tools, many of which offer much more advanced visual features.
Symantec likes the number 7.0
Speaking of visual tools, Symantec announced their new C++, which includes a
graphical interface builder. I saw a version of this a few months back, and complained
about too much modality, and I was pleasantly surprised to see that they put some
effort into making it dynamic and modeless. They’ve made a lot of improvements, and
it’s worth checking out. We’ll try to bring you a review soon.
I suppose I’ve seen cornier things, but the Symantec gala party/product
announcement at the conference made me wonder. At least it had Windows developers
asking, “Is that for Macintosh?” and looking a bit downcast when I said “Yes”.
For more info:
OpenDoc and Component Integration Laboratories (CIL), send a note to info@cil.org.
Microsoft, MFC (Microsoft Foundation Classes), and the Developer Services Team (not
a technical support group), call 1-800-227-4679x11771
Smalltalk Agents and their smalltalk discussion group, drop a note to buell@qks.com
and ask to be added to the reflector.
CodeWarrior by Metrowerks, see the Mail Order Store at the back of the magazine, or
call us at 310/575-4343. Metrowerks people have an active presence on the
Internet, CompuServe, and other online services.
Food for thought
Seen in the San Jose Mercury News: “Pentium PCI System, Ultra High
Performance System $2699. Intel 60MHz Pentium, PCI IDE HD, Intel PCI Mercury
Chip Set, 512K cache, 16MB, MAXTOR 540MB 8.5ms IDE” Right next to it, on the
same page, “Apple Power Macintosh 6100/60 8MB/160HD $1595, 7100/66
8MB/250HD $2699”.