March 93 - MADACON '93 Report
MADACON '93 Report
Mary Elaine Califf
The primary theme of this year's conference was the future. Although there were exceptions, much of what we saw were forthcoming technologies or newly available technologies that haven't proven themselves yet. In fact, one of the two major running jokes of the week was "This is not a product announcement." A number of people came to the conference looking for a new framework and/or development system. Most left not fully satisfied, though many are planning to try Component Workshop™.
The conference opened with Kurt Schmucker's on OODALs-Object-Oriented Dynamic Authoring Languages. He argued that some the content-based applications desired today require authoring tools with the power and sopistication of OODLs. Then the ATG group demonstrated SK8, one of their current projects (this was not a product announcement). It uses SK8Script which is "simpler than HyperTalk" with "All the power of MCL or Dylan in a scripting language." SK8's graphics are also impressive, using some of the techniques used in 3D graphics to improve the performance of its 2D graphics.
The headliner of the day was the Bedrock team who said more than they've ever said before and less than most people would have liked. It was made clear that we haven't seen a complete class hierarchy because the class hierarchy is still changing. As expected, this also was not a product announcement. Lonnie Millett presented Bedrock as three components, the application framework, support classes, and the resources. The application framework will be much like MacApp 3 with a number of familiar kinds of classes. It will have a view hierarchy and a command hierarchy similar to MacApp's. The Bedrock support classes come in 6 types: memory management (its own pointer-based allocation), exception handling, files (similar to TFile), string classes (ANSI, Pascal, and unicode), data structures (lists, etc.), and international facilities (including validators-date, time, numerical-and formatters-date, time, currency).
The team went on to add some detail on four pieces of Bedrock. The first of these was the data structures. Bedrock will use a subset of the Booch Components. These collection classes are template-based, use mixin inheritance, and throw exceptions. The classes with Bedrock will include collections, sorted collections, sets, queues, stacks, maps, and a binary tree. Tools provided will include sequential and binary searching and a quicksort.
The second item to be presented was exception handling, which will be ARM compliant, will handle automatic cleanup of stack objects, and will allow exceptions to be thrown from constructors. The exception types are classes, organized into a type hierarchy. Bedrock will come with 60 defined exception types. The current exception-handling scheme uses macros to duplicate the ARM functionality and once native compiler support for exception handling is available, very few changes will have to be made to take advantage of it.
The third subject was the memory allocation system which is designed to handle the small average block sizes and large request stream of the typical object-oriented program. The implementation approach chosen is a best fit algorithm with the free-list stored in a binary tree and some modification for very small blocks. The team presented a performance analysis which showed the Macintosh memory manager falling flat on its face and their algorithm doing fairly well in both space utilization and speed.
Finally, the team talked about the Bedrock resources. Bedrock resources will be defined in a platform independent resource language similar to Rez which will support inheritance and recursive resource definition. Available resource types will include views, menus, string lists, bitmaps, and icons. User-defined types will be possible. The resource compiler will use a full ANSI C preprocessor and will parse C++ header files. A resource editor is under development.
The Bedrock demo took a while, as Bernadette Jolicoeur attempted to copy source files from a Macintosh onto an MS-DOS floppy. However, once the files were transferred and compiles done on a Macintosh and a machine running Windows, the application did come up with the appropriate "look and feel" for each environment.
Bedrock was followed by an introduction to BETA, an object-oriented language which has recently entered the commercial market. See Steve Mann's article in this issue for more.
The morning ended with Doug Sleeter of Quorum Software Systems. He described Quorum Latitude which provides "virtual porting" of Macintosh applications to Unix systems by recompiling the Macintosh sources on the Unix workstation and linking with the Quorum Compatibility Engine, a portable implementation of the Macintosh API supporting System 6.0.7 and some parts of system 7.
The most heavily attended session of the afternoon was that on support for developers moving from MacApp to Bedrock. Attendees saw prototypes of two conversion tools, one for resources and one for code. The code conversion tool makes no changes, but produces a file of annotations which provide commands to highlight spots where change is needed and explain the needed changes. The primary purpose of the session, however, seems to have been to elicit feedback from the audience, and in that it was certainly successful. One complaint came from those still maintaining MacApp 2-based applications (well over half the audience) because support for that transition is not planned. The most popular statement of the session was the announcement from the back of the room that MacApp 3.0.2 will happen.
Kurt Schmucker's session on Prograph and Serius and Jeff Alger and Neal Goldstein's introduction to SBM suffered during early part of the afternoon from being up against Bedrock, but they gathered a larger audience as the Bedrock session ended.
The afternoon ended with concurrent sessions on Serius, Ad Lib, and ObjectModeler™. Nick Nallick is responding to user requests; the next version of Ad Lib will include a hierarchical view like that in IcePick™.
An Apple reception, complete with Bedrock T-shirts, was followed by a MADA town meeting giving the attending membership an opportunity to express concerns directly to both old and new board members.
Tuesday-The Other Contenders
If Monday focused on Bedrock, Tuesday was devoted to its rivals. After a brief presentation on Newton technology and development tools (this was not a product announcement) including a brief demo, the competitors moved in. The first was Component Workshop which was impressive despite technical problems setting up the demo. The most impressive feature of Component Workshop is clearly its environment, compiler, and linker. Developers drooled over not having to maintain header files and build times of a few seconds for minor changes. Automatic garbage collection was popular, but some expressed concerns about performance. The major concerns were over the Extruder™ which is not yet final and the fact that CW does not use standard C++. Be that as it may, Bob Hablutzel's Component Workshop tutorial that afternoon was popular, and many developers left the conference planning to try out the system.
The other major contender was Gary Odom's OOPC. OOPC is a dynamic object system which can be used with any standard C compiler. Both OOPC and Component Workshop are going cross-platform but aren't there yet.
ParcPlace demonstrated VisualWorks, a Smalltalk-based cross-platform application development environment for GUI-based client-server applications. It looked like a good environment. Unfortunately, the Macintosh version didn't look enough like a Macintosh application to impress the audience.
Another contender suffering from its lack of adherence to the human interface guidelines was Camelot. Camelot was technically impressive, but also suffered from a large memory footprint.
The final contender of the day was QKS's SmalltalkAgents™, a completely new Smalltalk implementation with a true Macintosh interface and toolbox access. The implementation supports System 7 features and WorldScript. For those who can afford its large footprint (1.5 to 2.5 megabytes), SmalltalkAgents looks like a promising development environment.
The evening ended with the first session of Frameworks Facts, an opportunity for the audience to question representatives of various non-C based frameworks.
Wednesday-IcePick, NeoAccess, and Windows
Wednesday morning brought a long-awaited event as Sierra Software announced its developer tools. These included p2c, basically a full Object Pascal compiler that generates C++ code instead of machine code, and a database object toolkit, a domain-specific class library for MacApp 3.0 (and potentially other frameworks) which would provide an interface to relational databases. However, the final product overshadowed the others as IcePick 3.0 was demonstrated. By the way, this was a product announcement. Besides having all of the old IcePick features and working with 3.0 views, IcePick 3.0 has a behavior window for prototyping, handles strings and other empedded resources, and is projector aware. It also, as audience plant Kurt Schmucker demonstrated, has Dinker support for user views.
Bob Krause introduced NeoAccess, a set of C++ classes that provide object persistence, and previewed NeoShare, a forthcoming offering which will support multiple users. An interesting note on NeoAccess: full source code is provided.
At this point, Steve Sinofsky of Microsoft braved the crowd to present Microsoft Foundation Classes 2.0. His reception was fairly favorable, but his response to the cross-platform question-MFC will go wherever the Windows API goes-was unpopular.
The next scheduled presenter was James Plamondon, but his technical difficulties led to a rather appropriate schedule change. Steve Wilson gave the first of his talks scheduled for Thursday and discussed porting a MacApp application to Windows. He showed us how to make Borland's OWL look as much like MacApp as possible.
The afternoon offerings were varied, with tutorials on C++, developing database applications using object-oriented frameworks, Lisp/CLOS, and developing small frameworks including problem-domain frameworks. Dave Wilson demonstrated each of Emergent Behavior's offerings and amused his audience by declaring, "My application framework is smaller than your application framework." Of course, he also demonstrated compile time of under a minute using MPW.
Wednesday evening brought the second round of Frameworks Facts. The frameworks represented were OOPC, Component Workshop, MFC, and MacApp. Unfortunately, MacApp was represented by Bob Hablutzel (later joined by Dan Strnad of DTS) because efforts to get an Apple representative ahead of time had been unsuccessful. The framework most were interested in was, of course, unrepresented.
Thursday morning opened with Adele Goldberg, President of ParcPlace Systems, discussing reuse and visual programming. She discussed some of the difficulties involved in code reuse and the difference between inheritance and delegation. Her post-presentation hallway Q and A was very popular. We almost had to herd the crowd out of the conference center.
She was followed by an introduction to Camelot, which would probably have been more effective before the exposure to it earlier in Frameworks Facts and an afternoon session on Tuesday.
Dirk Bartels of BKS Software introduced their cross-platform OODBMS POET.
The morning ended with James Plamondon's session originally scheduled for the previous day. He introduced Object Linking and Embedding 2.0 and demonstrated a prerelease version running on the Macintosh. OLE allows objects from other applications to be placed in a document using either linking (which means that it will be updated if the original changes) or embedding. The objects can be edited in place (in the case of embedded objects) or by bringing up the original document. The editing is done by either the original application or another application capable of handling that type. The new Windows version will be available soon, but the Macintosh version is still in the future.
There were two more sessions after lunch before everyone headed out to SeaWorld. First, Steve Wilson discussed writing application generators and demonstrated two provided by Emergent Behavior with their frameworks. The concept proved popular, and someone in the audience suggested that an application generator would be an appropriate replacement for Skeleton.
Lee Harris of Pillar corporation then discussed monagement of a large OOP project, using Pillar corporation's 400,000 line financial planning application as an example.
Sea++World was little disappointing since the rain we avoided Monday through Wednesday showed up on Thursday. However, the banquet itself was enjoyable, and the keynote address actually had some substance. Now don't get me wrong, Taligent still isn't talking. However, Mike Potel did give us a few facts that we hadn't heard before. First, he emphasized small frameworks and described the components of system as frameworks. Second, Pink is being developed in C++, and that will be the initial development language though others will become available. Third, Taligent will be providing "good" developer tools. Potel went on to discuss the better features of various development environments, but he made no promises regarding the specific features of the tools Taligent will provide. For now, the advice is to learn C++ and to gain experience using frameworks and then to jump on the Taligent bandwagon when the time seems right for you and your business. One encouraging feature of Mike Potel's talk was its firm grounding in the economics of software development. Following the banquet, Taligent held a reception back at the hotel at which Taligent employees were available for questioning.
Reactions to the evening were mixed. Many people felt that they had heard some new things and obviously felt more confident that Taligent is a real part of their future and is interested in them as developers. On the other hand, some felt that they had heard nothing more than they had heard before.
If the theme of the week was the future, Friday's sessions made an appropriate end. The morning began with Steve Goldband's discussion of Apple's frameworks futures, emphasizing a move away from monolithic applications to smaller applications using objects to interact with each other both within a computer and over a network.
The LISP/CLOS overview that followed was not strictly futuristic, but was encouraging developers to move in new directions.
An introduction to Dylan followed. As many of you know, Dylan is Apple's attempted answer to the drawbacks of OODLs. For an introduction to the language, see Mikel Evins' article in this issue.
G. Gordon Apple continued the morning's focus, presenting a Direct Broadcast Satellite system currently under development which will make extensive use of object-oriented programming. For a description of the system, see his article in this issue.
The final session featured Jeff Alger's thoughts on the current state of OOP and its future. As always, his ideas are thought-provoking. They will be presented in full in the May issue of FrameWorks.
So, what was MADACON '93? It was primarily an opportunity to examine new application frameworks and other developer tools and a chance to glimpse the future. There were no clear winners (other than MacApp 3.0.2), but we saw several promising candidates.