May 94 - SFA Atlanta 1994
SFA Atlanta 1994
Adam Wildavsky, John MacVeign, and Mary Elaine Califf
Please note that this report was compiled from the efforts of more than one conference attendee. Opinions expressed herein are held by at least one, but not necessarily all of the authors.
Atlanta was the place to be during the first week in March of this year as the SFA held its fifth annual conference. The weather was not particularly good for most of the week, but, between the early sessions, the afternoon sessions, the get-togethers during meals, and the hack session, I didn't really notice the weather until Friday, when it turned warm and sunny. While much of the software development world wondered just how to start doing the "OOP" thing a group of both experienced practitioners and enthusiastic newcomers gathered to exchange theoretical knowledge and practical experience. The variety of object-related subjects this year shows that the pervasive use of object technologies is gaining momentum. While last year's conference was primarily focused on design and basic tools, this year's conference shifted the emphasis towards the destination of all those tools: frameworks. This was a true cross platform and cross framework conference (not one MacApp session!) but most of the attendees had experience with MacApp and C++. This shared background provided a context for more meaningful discussion and more facile communication than I've seen at other conferences.
The weather was awful; it rained for days on end. It's just as well the hotel was comfortable!
Joe Firmage of Novell gave the opening keynote address. Joe started out by explaining Novell's business strategy past and present. I was surprised when this turned out to be interesting. His point was that Novell has succeeded mainly by "Redirection." Initially this redirection consisted of redirecting DOS File API calls so that they accessed Netware file servers. Now one of Novell's plans is to redirect entire sets of native APIs using something they call the "AppWare Foundation."
Joe is the VP of the AppWare systems group and his talk turned to (surprise) AppWare. AppWare seems to aim to be a cross-platform everything development environment. Its main building block is something called an ALM, an AppWare Loadable Module. Today these are written in C and put together with Novell's "Visual AppBuilder." There are two kinds of ALMs, functions and objects. Why are the functions separate from the objects? Let's just say that AppWare is not as Object Oriented as some might wish.
All ALMS communicate with one another via an "AppWare Bus." Later this year a "Distributed AppWare Bus" is supposed to be available.
Novell sees the computing environment partitioned between GUI, Business Logic, and Data Management. With the network portion of data management firmly in hand they are trying to flesh out the rest of the partition by supporting data base access through SQL and ODBC ALMs. The business logic partition is handled by providing not just ALMs but an environment in which they can be quickly linked together. They have left the GUI partition to the existing players by defining services which map to the native GUI. Given the big push for OpenDoc throughout the rest of the week, it may seem odd that Firmage did not spend any time discussing it. By concentrating their efforts on the sweet spot in the middle of the graph between flexibility and ease of development, Novell is concentrating on the problems their customers are most interested in solving. While a founding member of CILabs, they are probably happy to leave the more complicated "big picture" designs, like OpenDoc, to Apple and application developers like WordPerfect. [Oh no! Five minutes after writing that sentence I heard that Novell went and bought WordPerfect. Talk about dynamic linking!]
One of Joe's slides would later show up repeatedly, in similar guises from other vendors. It showed a row of ALMs on the top, each with a connection to the AppWare Bus in the middle, and the AppWare Bus lying on top of the AppWare Foundation below. Presumably the native OS lies below the AppWare Foundation.
Apple's Tools Strategy
Ike Nassi, Vice President of Development Products at Apple stopped by to give a fairly standard "Here's where Apple is headed this year" presentation. It is important to point out that this was being given at SFACon, and not at Apple's own WWDC. Among the information Ike gave us was that Apple is concentrating on increasing the market for learning, publishing, and collaboration products. He also gave some details on two major kinds of products that his group produces: core tools and frameworks. He wanted to tell us that contrary to rumor Apple continues to invest in developer tools. MPW, ToolServer, and Dylan were listed as core tools. IBM's SOM and DSOM are being invested in as a dynamic linking solution. PowerPC development will, of course, be emphasized and MPW will be available in a native PowerPC version. For the future Apple intends to establish OODLs as a mainstream programming paradigm. In particular, Dylan was described as "in use at Apple today". In the frameworks department, MacApp has been reinstated as an Apple product. A new version of MacApp is planned which will support AppleScript and AOCE. Future versions will support OSA, OpenDoc containers, and will allow the embedding of OpenDoc parts. Meanwhile, Bedrock, now in Apple's hands, has been renamed the "OpenDoc Parts Framework". It retains its cross-platform abilities and will be seeded at the WWDC (yes, 1994). Obviously OpenDoc was the big item being discussed this year. Ignore it at your peril: Apple stated that it will be switching to OpenDoc parts for future delivery of OS services to developers. Ike also told us we could AppleLink OPENDOC for a copy of the OpenDoc Alpha CD.
While Mr. Nassi was a bit defensive he did not get quite the barrage of complaints that many people expected to hear. During the Q&A period several people asked why various new technologies were not part of ETO, but I didn't detect the level of discontent I had expected. (Has it really been three years since any features were added to MacApp?) No doubt this was partly due to the old "we're new here and we're going to fix things right up" line. Perhaps, but after a few years of hearing that, people tend to just walk away. Hopefully all the Apple people realized that their harshest critics are those who most want Apple to succeed; the rest have already taken that walk.
One possible problem with Apple's developer relations is that they seem unsure as to who is driving the Macintosh market. On the one had, Apple may be thinking that if they sell a lot of machines we developers will be willing to pay a lot for their tools, since we'd know there's a market for the resulting software. On the other hand, Apple could decide that cheap tools will encourage the development of software which would then drive the sale of more machines. Exactly which model Apple is following (if any) is still not clear.
Microsoft's Object Strategy
Microsoft's James Plamondon was the third speaker, a last minute replacement for Mark Ryland. As usual of late James tried to persuade us how wonderful our lives would be if we would only develop for Windows. His main point regarding OLE was that "It's shipping now" and that products that take advantage of it "Are shipping now." He said this more than once.
James made some compelling points about Microsoft's developer support. To help illustrate Microsoft's "developer friendliness" he brought CDs for everyone. Each CD contained an OLE developer kit for Windows and an OLE beta for the Mac. Unfortunately for his point James didn't actually bring enough for everyone. He promised more by Thursday, and a newer version besides.
I spoke to several people who thought that it was unfortunate that Ike spoke before James; Ike might have been hard-pressed to show how Apple intends to treat developers as well as Microsoft seems to.
We broke into four separate session in the afternoon. I dropped in on Novell's AppWare overview and picked up a copy of their Visual AppBuilder white paper. I'd like to tell you how to get a copy but for some reason no e-mail contact was listed. Perhaps their Sales headquarters can help; their number is +1 (408) 434-8684.
My strongest impression of Visual AppBuilder was that the user interface needs work. The ALMs are listed as icons in two scrolling windows at the bottom of the screen. Unfortunately only a half dozen are visible out of hundreds. Do they offer an alternative? Well, there's a popup menu which also seems to contain hundreds of items. At any rate there was more than a screen full! No one I spoke with would defend this interface, but I hear that Novell plans to improve it.
Symantec C++ and TCL
David Neal and Bob Foster of Symantec gave an afternoon presentation on Symantec C++ 7.0, TCL version 2, Visual Architect, and future Symantec developments. This was one of the more informative sessions of the week, with lots of basic facts provided by the engineers who worked on the projects. Most of the news about 7.0 will probably by out by the time this report is printed. The key statement made here was that by April all C++ compilers from Symantec can be at the same version level; either through the purchase of 7.0 or a free patch for owners of 6.0. MacApp segmentation remains a problem with C++ 7.0. Think Pascal and Think C have slipped into the "no major changes" phase of their product lives.
Version 2 of TCL was introduced as a C++ rewrite of the original TCL framework. While not as dense as MacApp, TCL 2 provides AppleEvent support, uses template classes, stream classes, mixin classes, exception handling and RTTI (run-time type information) support. Some of the features are descended from Bedrock, including typed exception handling, the RTTI system, and the memory management structure (though we were told this last item may change). The AppleEvent support provides recordability and allows you to write a "fully factored" application (that is, commands can be executed by sending Apple Events to yourself).
Visual Architect is derived from Bob Foster's Classy. It is an application generator that allows you to graphically construct views. It can automatically add generated source to the Project Manager, and provides menu and menubar editing, along with support for balloon help. Also available with TCL is an object browser. Described as an automatic version of MacApp's Inspector, it allows you to inspect existing objects during program execution.
Symantec trails Metrowerks in support for the PowerPC. Symantec's short term solution will be to provide a cross compiler and bundle some of Apple's tools (Linker, Debugger). In the long term they are working with Apple to re-architect TCL to provide features similar to MPW. About the only other statement on this project was that the "largest team ever" was working on this project. I'll take that as a good sign, at least for the moment.
Mike Potel, Taligent's VP of Technology, had the job of speaking to those of us who made it downstairs by 8:30 A.M. Despite rumors to the contrary, Taligent is alive and well and actually starting to ship code to its investors. Mike Potel, Taligent's Chief Technical Officer described their work as consisting of three parts: the Taligent Application Environment (TAE), Taligent Object Services (TOS), and the Taligent Development System (TDS). The TAE is the farthest along. It provides application level frameworks, such as 2D and 3D imaging, multimedia support, and international text services. It can be hosted by any operating system which provides such services as memory protection, threads, and multitasking. Candidate OSs for the TAE include OS/2, HP-UX, and AIX (which Taligent is currently working on). Some parts of the TAE have already shipped to developers. Expect a release of OS/2 later this year which uses Taligent device driver frameworks.
The Taligent Object Services is essentially Taligent's own operating system. It is based on a version of the Mach microkernel. The TOS will probably not appear until sometime in 1995. Lagging a little behind the OS is Taligent's own development system. The development system is browser oriented and supports various kinds of direct manipulation and hyperlinks. It sports incremental compiling and linking. The browsers understand the structure of the code and the system tracks dependencies automatically. This means that there are no make files and doing things like editing comments will not cause recompilation. Mike told us that Larry Rosenstein (he said "The Rosenstein") had worked on the on-line documentation system and that we could therefore assume that it would be wonderful. That was good enough for me!
Given the rather vague pronouncements of the past, Taligent seems to be pretty much on schedule. IBM looks to be the earliest user of their work. It is too early to tell if the newest Taligent investor, HP, will move quickly to adopt the TAE, or if they are just covering themselves with a side bet. In a bit of irony, Apple seems to be the farthest from adopting Taligent's work. This seems primarily due to the delay in switching System 7 to a microkernel which can support the TAE. That switch over may take so long that Apple could actually end up competing against its own creation. Whether Apple competes with, or against, Taligent, the use of some sort of microkernel in System 7 looks to be the next necessary change to the Macintosh architecture.
Mike also discussed Taligent's goal of providing collections of loosely coupled OO frameworks. In particular he mentioned undoing the split between application software and OS software. If frameworks are provided for both kinds of functionality then it should be as easy to extend OS functionality as it is now to extend an OO application. Mike mentioned several Frameworks Taligent is working on including
- User Interface
- Distributed Computing
- Data Access
- Graphics (3D & 2D)
- International Text
Tom Chavez took the floor for the world's first public showing of Taligent technology, in this case their graphics system. He showed us an application running on a Mac IIci with five windows showing off five different graphics threads. Unfortunately one of the windows crashed. This turned out to be fortunate as well since we were able to see that the other windows continued to function. Things were amazingly fast. Tom's theory is that for the past few years our hardware has become very fast and that it's traditional OS's that have been slowing us down.
The specs for the graphics system seemed impressive enough. It uses a 64 bit floating point coordinate space and represents curves as Non-Uniform Rational B-Splines, or NURBS. The basic graphics framework is 3D; 2D graphics are implemented as a specialization of the 3D graphics!
Can you think of a machine that just shipped with screaming fast 64 bit floating point? I hope so! In fact Mike mentioned that Taligent's internal development platform is the IBM RS-6000 model 250, a machine that uses the PowerPC 601 chip.
Questions? Please ask Tom; I haven't gotten past the first hour of the day yet!
Everything in Taligent's presentation sounded wonderful, but naturally I had some reservations.
Mike told us Taligent will not provide source code as a rule, but that some customers might be able to get a hold of it given sufficient economic incentive. He pointed out that we survive without source code to the Mac toolbox. I seem to remember that in the early days of the Mac not having the source to the toolbox was a big impediment. Steve Jasik's MacNosy not only helped diagnose bugs in the ROM, it also gave definitive information about a trap when documentation might be spotty, missing, or just plain wrong.
Mike asserted that the initial target market for Taligent was in-house corporate developers. Do they need 3D graphics? Well, I guess they're not obliged to use them.
My biggest concern about Taligent concerns platform. Initially Taligent will not support the best selling platform, MS-Windows. That's the same problem I have with MacApp! It means I need another solution if I want to develop for clients who have standardized on Windows.
Next up were Greg Galanos and Greg Dow from Metrowerks.
Greg G. told us about the March DR/2 release of Code Warrior . The CD will include the Plum Hall and Plauger C++ libraries, object files for the NeoPersist object persistence library, and a demo version of Object Master. It will also include pre-built Object Master projects for PowerPlant as well as encrypted versions of NeoAccess and NeoShare, the "big brothers" of NeoPersist.
Mr. G described several features which will not be in the March release. Still to come, in approximate order of priority, are:
- Total object code size > 16MB
- Exception handling
- Full C++ precompiled header support
- OpenDoc Parts
- Templates (targeted for WWDC or shortly thereafter)
- Plum Hall Suite++ validation
Next Greg D. described a number of features of PowerPlant and made it sound quite attractive. The classes seem to have low cohesion. In particular Greg said that none of the component classes refer to the application, document, or window classes. PowerPlant provides several application descendants. One supports a traditional 1 file per document model. Another, described by Mr. D. as a dashboard application, supports utilities which have no documents. Another supports database applications.
A visual editor for PowerPlant is still in development; its interface is based on ResEdit's dialog editor. The resource format has been changed so as to support Rez and DeRez. Greg D. professed amazement at just how useful these tools are! Perhaps line oriented environments are not dead after all.
Greg Dow discussed PowerPlant in more depth in the afternoon. PowerPlant is not intended to be cross-platform. In fact, it, like CodeWarrior, is primarily designed with the PowerPC in mind. For example, it will be a shared library on PowerMacs. PowerPlant is designed to be a loosely coupled framework which allows you to use parts of it without committing yourself to the entire framework. It will be interesting to see if Symantec's new announcements slow their loss of developers to Metrowerks. TCL's switch to C++ may actually encourage developers to look at Metrowerks which is shipping now (to coin a phrase). Between Metrowerks, Symantec, and Apple (well, people keep expecting them to do something) we may actually get some constant competition going in the Apple tools market.
A number of small but important remarks were made about Dylan. Ike Nassi used to run Apple's Advanced Technology group in Cambridge, Massachusetts, where Dylan originated. Now vice president of Apple's Development Products group, Nassi has made one of his goals the establishment of OODLs (object oriented dynamic languages) as a mainstream programming paradigm. He also stated that Dylan was "in use at Apple today". Andrew Shalitt stated that Dylan has moved into product development. It was hinted that third parties were at work on development environments; nothing specific was said about what such an environment might look like.
As you may have heard, Dylan has a new infix syntax. Syntax surveys were distributed at the conference to help the language designers finalize their decisions. Andrew's presentation included a number of examples of Dylan code (see the conference CD for copies of the slides).
Tuesday afternoon presented several attractive alternatives; I chose to see Prograph CPX presented by Apple's Kurt Schmucker. I had heard good things about Prograph and I was not disappointed. Kurt described Prograph CPX as his development platform of choice and after his presentation I could see why.
Prograph CPX is buzzword compliant, combining four key trends
- Visual Programming
- Object Orientation
- Data Flow
- OO Frameworks
Because Prograph is based on a Data Flow language it can in theory support parallel processing at a fine grained level. Kurt announced that this potential is about to be demonstrated. Apple provided Prograph International with research funding for this and PI is scheduled to demonstrate it in April. Yes, April 1994! PI apparently does not yet intend to make the parallel version into a product, but I'd be surprised if there is not enough demand to ensure that it becomes one.
One of the first questions was how easy it is to build shrink-wrapped applications. Kurt put on his best Plamondon voice and showed us a painting application which is "Shipping Now!" and a late beta of a CD-ROM application, "Xpand Xpo", billed as a "virtual Macintosh trade show." I'm quite certain of the name because we all received complimentary copies.
Kurt has undertaken to port several of the MacApp examples to Prograph CPX. This led to some interesting comparisons. We timed one of the examples and found that the compiled Prograph code executed about twice as fast as the interpreted Prograph code, and about ten times faster than the MacApp 3.0.1 code! No, no one has investigated just why MacApp fared so poorly in the comparison. One shouldn't expect that this discrepancy will be so extreme in every instance; your mileage may vary!
One of my concerns with visual languages and other non-traditional development environments is their relative lack of maturity. 40 odd years or experience means that we have a large number of tools for text based code, tools that become vital as projects grow. Prograph CPX has added the notion of separate compilation modules to help support large projects, but there is still no equivalent of Projector or diff. So far as I know their editor does not even respect Projector's 'ckid' resource.
I did start to wonder how easy it would be to maintain complex routines in a visual language. Kurt mentioned that PI has added support for an "Evaluate" tile to handle mathematical expressions, but I wondered about algorithms where this wouldn't help. Then I remembered that my personal style guidelines for traditional code call for routines of no more than five or ten lines. I decided that if a visual language in effect forces routines to be short that it might be all to the good.
OpenDoc vs. OLE
Tuesday evening saw the OpenDoc versus OLE face-off. While most developers are still examining tools for moving to PowerPC, or trying to pick a framework that best supports their favorite platform, a whole new paradigm has appeared on the horizon: the compound document. More than a way to give everyone a page layout package in the OS, compound documents are intended to change the way you work with your computer. The present application-oriented approach will be replaced by a document-oriented approach. You build your document out of parts which are edited by parts editors. The concept is that the part editors are smaller and more specialized than current applications. The user can replace one editor with another and, in effect, build a custom application for himself by combining many different editors.
For this to work a number of things must change. The present tyranny of application-specific files must be replaced by a finer grained storage mechanism. The editors must be scriptable in some way. The parts and editors must work over a network as well as they do on a single machine. And new architectural and interface concepts must be created to give the user a way to manage all these little parts in some coherent fashion.
Microsoft is currently leading the industry in the attempt to define how these new concepts are implemented. They are presently shipping "Object Linking and Embedding" (OLE), an API which essentially allows one application to use another's services. A data gathering program, for example, can insert its results into an Excel window which, as far as the user is concerned, exists as a window within the collection program, but retains all of the functionality of Excel when activated. Obviously this does not address all of the concerns listed above, but is, as they say in the south: "shipp'n now". The rest is left as an exercise for the authors of "Cairo", Microsoft's follow-on to Windows, and a subject that was rarely, if ever, discussed at the conference.
Apple, along with IBM, Novell, and, well, everyone who isn't Microsoft, has proposed a second architecture named OpenDoc. The "open" is intended to show that this will be an industry-wide standard which is available to all and is backed up by a certification process run by Component Integration Laboratories (CILabs). CILabs is a consortium of the "Not Microsoft" companies. CILabs intends to provide source code for OpenDoc, and its members plan to implement OpenDoc on multiple platforms. The requirements listed above will be satisfied by combining some existing technologies from CILabs members. The storage and scripting mechanisms are Apple's Bento and Open Scripting Architecture, respectively. The networking and dynamic linking will be courtesy of IBM's System Object Model (which Taligent seems to get some credit for working on). Other companies, such as WordPerfect Novell, will be working on porting OpenDoc to Windows and other platforms.
At the conference the argument between OLE and OpenDoc often boiled down to "It's shipping now" vs. "It's going to be really cool, just you wait". ("Less waiting!", "Links great!") Of course, to an audience filled with engineers, marketing can easily take a back seat to cool and elegant features. OpenDoc's use of SOM promises a single programming model for all objects, large or small, local or networked. OLE's "aggregation" concept of inheritance offends the C++ purists. OpenDoc works with non-rectangular and overlapping parts, while OLE does not. And the use, even if optional, of DOS pathnames to link one object to another tends to raise red flags for non-DOS programmers.
Most attendees are probably still thinking over how compound documents will affect their products and markets. The push by Apple to convince its developers that OpenDoc is better than OLE could go a long way in igniting interest in this new architecture. But if those developers, once convinced, begin to look for a way to implement this new idea they may find Microsoft and OLE the fastest way to do so. Once again, Apple seems in danger of competing with its own ideas.
Tools and Environments
Wednesday morning Dave Simmons of QKS spoke on Tools and Environments. Dave's presentation was heavy on buzzwords but he seemed to use them in appropriate contexts. When he talked about "empowerment for domain-specific authors" and then a "Framework Meta-Architecture" I was sure he was going to bring out the "AppWare" Diagram but if he did I missed it.
Prototyping with AppleScript
Dave Moffat, of Software Designs Unlimited, gave one of the conference's most entertaining demonstrations when he presented Frontmost, an interface processor for AppleScript. Frontmost is an extensive, and extensible, interface creation tool which uses AppleScript events to tie together all of the windows, fields, and controls that you build. According to Dave's outline: "The original purpose of Frontmost was to put user-friendly interfaces on otherwise faceless scripts. Our attempt to be thorough led us to support complete, standard application interfaces, rather than mere customizable dialogs."
From what I saw they succeeded nicely. The ultimate in "factored" applications, Frontmost can build applications that use AppleScript events to communicate both internally and externally. As an example, Dave built an application which used one of Frontmost's interface elements (a color palette). When run, it could communicate back to Frontmost which color to apply to a selected element (since Frontmost is itself scriptable). Think for a second about the work it would take to use MacApp to add a color palette to ViewEdit. Dave's example took about a minute to build and demonstrate. Other examples included a few games; one like Tetris, another a computer version of Whack-A-Mole. Both games are shareware; the Tetris-like Linear-B game was implemented by Dave and designed by his 13 year old daughter. I liked Linear-B enough that I downloaded a copy that day. Both games require AppleScript and are available on AppleLink in
Interface Builder Discussion
AppleEvents may be too slow for a real-time embedded operating system, but you'd have a hard time clicking fast enough to beat those little gophers every time they pop up. And all without templates, exceptions, or overloaded operators. Frontmost is currently provided with the AppleScript Scripter's Toolkit, and good thing too. It takes a technology and turns it into a solution, something Apple needs to start selling more of.
I wish I could do justice to the wit of Dave's presentation. He was dry and upbeat, contained and enthusiastic. He brought up key phrases from previous presentations and used them to advantage. He mentioned that the Linear-B game was based on an ancient script related to Ugaritic, and that this script had been inscribed into blocks the size of Newton Message Pads. He managed to make this seem extraordinarily amusing; I suggest you catch him in person if you have the opportunity.
Apple's Mike Lockwood had a hard act to follow; he showed a Dylan application framework. Mike Lockwood, now at Cambridge himself, discussed an application framework that he is developing in Dylan. While he used many of MacApp's ideas, his framework is not a port of MacApp, but a new work. In particular he has included support for the object model, scripting, and recording. One of Mike's objectives was to support new system software features, and QDGX and Drag Manager support have already been added. He started this work last fall and described it's current state as "pretty far along". At the end of his presentation, to show an example of Dylan in action, Mike revealed that his slide show package was in fact a simple Dylan program. A copy of the source was handed out to attendees. Mike was clearly happy about leaving C++ behind. It would be nice to have a language to compare to C++; after all, how can you have a language war with only one language? Watch for a future FrameWorks article by Mike on his Dylan framework.
Microsoft Foundation Classes
Wednesday afternoon I chose to hear Jeff Alger discuss the Microsoft Foundation Classes. Jeff introduced himself and explained that contrary to the listing in the conference program he does not work for Microsoft. To a standing room only crowd Jeff explained how he had been enticed to "the dark side" (not his term). He allowed that in his opinion Microsoft has taken the lead in desktop OO technology and that he now prefers Windows over the Mac as a development platform.
Realizing that many of us were unfamiliar with the MS-Windows interface Jeff started with a quick summary. I was surprised to learn that the trend in Windows applications is towards applications which open a single document (SDI) rather than those we are used to on the Mac which routinely open multiple documents at once (MDI). Jeff said there are two related reasons for this. The first is that it is easier to open two copies of an application in Windows - double clicking the icon of a running application launches a copy instead of activating it. The second is that OLE makes it easy to transfer data between the documents in the two separate copies of an application.
Jeff then went into detail on the use of MFC and showed what he was allowed to of Wings, Microsoft's cross-platform development system. Look for an article covering his presentation in an upcoming issue of Frameworks.
While we were still reeling we learned how to join Microsoft's developer program. Most support is via Compuserve and is free. The program has three levels the first of which is free. To join call (800) 227-4679 x11771. I don't have an international number but I'm sure James Plamondon will be happy to provide one if you contact him at firstname.lastname@example.org.
Jeff concluded by asserting that while MacApp is not dead it has run its course, and that it's time for other frameworks to borrow from it while using cleaner architectures. This conclusion is becoming difficult to dispute; I don't know that anyone from Apple would disagree
The sun came out! Unfortunately I had by this time developed the habit of staying in the hotel. Perhaps I'll see Atlanta another time.
Even the preponderance those of us who were up until the wee hours at Wednesday's hack session made sure not to miss Larry Tesler's presentation on Thursday morning. As usual he did not disappoint. Larry started by wondering out loud what the next decade will be called. If we're living in the nineties will the next decade be the zeros? Then perhaps it will be the OO decade! Larry also wondered, prophetically but a little unkindly I thought, what the SFA will rename itself in ten years.
This was Larry's lead-in to a discussion of programming at a higher level. He didn't mean 4th or 5th generation languages or OO Frameworks but rather more help from the machine with routine chores. After all, that's what they're supposed to be good at!
After a digression into the principles of Genetic Programming (I'm fascinated but unwilling/unable to describe it!) Larry wondered what the role of the programmer of the future will be. He speculated that as software is written at a higher level and becomes more autonomous our role will become more akin to that of Coach than anything else. That would let SFA become SCA. An audience member pointed out that this acronym has been taken by the Society for Creative Anachronism. Another audience member (surely they weren't plants!) suggested a merger, to much applause.
Next up was Microsoft's Scott Randall who described Microsoft's developer tools and the Microsoft Foundation Classes. This talk would have been more valuable before Jeff Alger's presentation the previous afternoon; I imagine scheduling difficulties resulted in the actual order.
Scott tried to walk us through the array of versions of development products and APIs, including some of the history behind them. He told us that Microsoft has over 100,000 developers; I didn't ask but I presume that's the number who have signed up for "level zero" of their developer plan. He showed a new version of Visual C++ for the first time in public. The AppStudio piece is integrated; for some reason Microsoft didn't use OLE!
Scott told us about some features without seeming to realize which ones might impress us. He mentioned "dead code stripping" as if it were a big deal, but also pointed out that with all the applications around the compiler in effect has over 1 billion lines of test code. Scott also mentioned that the MFC make extensive use of assertions; that's something I'd like to see in every framework.
Taligent's Brett Halle was next, teasing us with glimpses of Taligent's frameworks. I say teasing because it seems as though the only way to use this technology today is to go to work for Taligent. I don't meant to malign Taligent; I'm glad they're letting us know what they can!
Apparently the Taligent Object Services use a Microkernel from IBM optimized for objects. Brett listed some impressive features provided by the Microkernel and told us how Taligent is trying to solve some of the problems involved in porting Operating Systems. He referred to I/O as a "huge problem space" and suggested that it can be combated though the use of OO device drivers.
I'm ready to be a big Taligent fan, but I doubt I'll be enthusiastic until I have something I can use to solve a problem.
The Benefits of Smalltalk
Among the choices Thursday afternoon was a presentation SmalltalkAgents by QKS. I understand that it was fairly similar to the presentations they have given at various local affiliate meetings, but one interesting incident occurred. At the session a number of Apple employees, both former and present, sat in the back of the room, laughing a bit, as David Simmons ran through the extensive feature set of SmalltalkAgents. Some of their questions at the end were rather revealing, such as: "When do you guys sleep?", "Where do you keep the 2000 programmers who must have worked on this?", and "So you started this when MPW 3.2 came out, have rewritten parts of it three times, and now you have this and we have MPW 3.3 !?". I guess the choice of Smalltalk has paid off for at least one developer!
For me one of the highlights of the conference was Thursday's after-dinner speech by Bertrand Meyer. I suggest hearing him in person if possible! His books are supposed to be pretty good too; I've resolved to pick one up real soon now. I wasn't quite persuaded to switch to his language, Eiffel, but I know it has some attractive features.
Dr. Meyer began with a question: What is OO technology? He answered it and then discussed what he sees as the obstacles to successful adoption of OOT and his proposed remedies. Yes, he considers C++ an obstacle! He also sees non-technical managers as an obstacle.
Dr. Meyer moved on to ask for better arguments. He sees some obstacles as being thrown down by some supporters of OOT, who phrase them in the form of prescriptions such as
- Do not use Multiple Inheritance (?)
- Prototype (?)
- Do not use inheritance for implementation (?)
- Underline the nouns (?)
- Teach analysis first (?)
Before attacking these prescriptions Dr. Meyer treated us to a discussion of the scientific method, how it has fallen out of favor, and why that is a bad thing. He showed us a page from Descartes' "Discourse on the Method" and translated it from the French. His point I think was that arbitrary prescriptions are pointless or worse; if a prescription is to influence us its author must provide the reasoning behind it. As an advocate of the importance of philosophy I appreciated all this, though I can't speak for the rest of the audience. I do have evidence that the speech held the audience's interest; I didn't notice anyone leave at 9 to go watch "Seinfeld"!
I don't recall whether he quoted Pogo ("We have met the enemy, and he is us") but Dr. Meyer did manage to quote Pascal ("Worse than ignorance is semi-science") and Stendhal (a passage from The Life of Henri Brulard.)
Dr. Meyer's argument against those who think it wise to concentrate strictly on analysis really hit home; "Bubbles don't crash!" So long as one remains in the analytic realm one has not been tested.
His argument against prototypes (specifically throw-away prototypes) I found less convincing. Dr. Meyer argued that quality decreases when developers know their work will be discarded. I thought that begged the question of the purpose of the prototype, which I view as a device to help discover what a system's users really want. In my (certainly more limited!) experience development is easy in comparison with determining and documenting user requirements.
Meyer's most vociferous argument against prescriptions which violate the scientific method dealt with Multiple Inheritance. He claimed that the most prevalent Software Engineering textbook in use in colleges today dismisses MI by showing and criticizing the following bad example:
Suppose one were building a motor vehicle application and needed to store information about owners of automobiles. A "Car_Owner" class could inherit from, that's right, "Car" and "Person."
We were rolling in the aisles, or would have been had there been any aisles in the ballroom.
Apparently anxious to make journalist's lives easier, Dr. Meyer used a second overhead projector to display a running critique of his own presentation. I reproduce it here in its entirety:
"The banquet speaker couldn't figure out what he was talking about. Next year please invite someone else."
"Whatever happened to good old American quotations? Why can't he quote Walt Whitman, or Thomas Edison, or Wayne Gretsky?"
"The speaker had handwritten slides."
"Why can't he stick to his slides?"
"Next year please invite Ed Yourdon."
Apple Feedback Forum
Late Thursday evening a large crowd gathered to heckle or otherwise communicate with a brave group from Apple led by Pat Harding. I'm afraid I was more of a participant in this session than a journalist. I can say that the crowd was more assertive than on Monday morning! I suspect this is usual for these kinds of "Bash Apple" sessions.
I brought up a technical issue that had been troubling me for a while. According to the MPW release notes:
"The linker prints a warning when the CVTE count rolls over 64K. Although the SYM file is technically incorrect in this situation, some debugging is possible and the executable file is correct."
Why should we have to put up with this? The problem is that the SYM file format is showing its age. It uses 16-bit references which are inadequate for large applications. One symptom of this problem, besides the warning message, is that a source level debugger cannot display all local variables. Apple produced a linker which generates a revised version of the SYM format over a year ago, but has chosen not to make it generally available.
I asked Apple's Manager of Developer Tools, Rick Fleischman, what he could do to help. After some give and take he promised to get back to me. Sure enough a month later Rick came through with an updated version of the Link tool which will create SYM files in this new format. The only debugger which can read the new format is Steve Jasik's "The Debugger." I don't know whether or how Apple will distribute this linker. If you need a copy I suggest writing to email@example.com.
For more information on Apple's debugging strategy and developers' reactions to it please check out the networks, in particular MacApp3Tech$ AKA comp.sys.mac.oop.macapp!
Component Integration Labs
Jed Harris, now an employee of Component Integration Labs, spoke about this new non-profit corporation. CILabs was formed jointly by Apple, IBM, WordPerfect (before they were purchased by Novell) and perhaps other companies to help make OpenDoc a cross platform standard.
Mr. Harris said all the right things about supporting IBM's SOM and being CORBA compliant. He received applause, however, when he mentioned that CILabs will make source code available, and that that source code will support various frameworks such as OPF (no bug surprise), OWL, and PowerPlant.
More information is available from firstname.lastname@example.org.
About 5 to 10% of the attendees were there to find out what frameworks and tools they should be starting with. The Windows programmers were often just re-affirming their choice of MFC. And Mac programmers were most often interested in finding out if their present tools and frameworks were still viable. What's that saying about pioneers and arrows?
I'm told that this year's conference was not as well attended as last year's. Some attributed this to poor advertising and to competition from Objex, a conference running simultaneously on the left coast.
To my mind there is no more useful conference I could have attended than this one. The agenda was heavy with content. The things I saw helped make me more productive with the tools I use today. The conference also gave me glimpses of a wide variety of tools I can use to advantage now and in the near future. Given the choice I would rather attend this than, say, Apple's WWDC.