For years, our goal in expanding the application programmabilty of AutoCAD was to reach the point where the facilities available to a third-party developer to extend the functionality of AutoCAD equaled those of an Autodesk programmer with access to the source code of AutoCAD. For my ``Holiday Hack'' of 1989-1990, I decided to build upon the success of the Eagle Project and actually remove a current feature from the source code of AutoCAD and transform it into an ADS application, creating, in the process, a library that mapped internal AutoCAD subroutines into their ADS equivalents and thereby encouraging the emigration of other components of AutoCAD.
This project was ultimately stillborn, but it paved the way for the future evolution of AutoCAD. Most major feature enhancements introduced by Autodesk since 1990 (Advanced Modeling Extension, Advanced Visualisation Extension, Advanced Data Extension, AutoSurf, etc.) have been implemented as ADS applications built atop the AutoCAD database and user interface. In this sense, The Eagle Project and Caustic Moment were the pathfinders for the evolution of AutoCAD for years to come.
Emulating the database and geometry facilities of AutoCAD allows removing the IGES translator to an ADS application without extensive modifications. This development may herald the end of the growth of the AutoCAD core.
Ten years ago today, I was celebrating not just the dawn of the 1980's, which I hoped would be an improvement over the Souring Seventies, but also the first successful multi-user test, achieved minutes before midnight, of NOS/MT, the Unix-like operating system that seemed to be the future of Marinchip, my company at the time. What was to eventually become AutoCAD was, on that night, less than 2000 lines of undocumented code in an obscure language for an unpopular computer.
Eight years ago, I was beginning to sketch out the plans for starting a software company from the bones of Marinchip, wondering what products might carry it to success in the marketplace. Developing the CAD product, which was at that time Marinchip's flagship, was high on the list. By the summer of 1982, development of AutoCAD was underway in earnest. The very rudimentary facilities of the original system were being extended in all directions, leading to the introduction of AutoCAD in November of 1982. At that time, the program had grown to about 12,000 lines of C.
In the ensuing years, as AutoCAD has continued to evolve to meet the needs of its community of users, the AutoCAD core has grown, seemingly without bound. As of development release Z.0.64, the core source plus include files totals 239,153 lines. AutoLisp adds 22,354 lines to the pile, and ADS contributes another 17,338. MS-DOS drivers account for 107,588 lines, and non-DOS drivers 18,048 lines. AutoCAD's special C library is 13,128 lines. So, the total source code contributing to a present-day release of AutoCAD is on the order of 417,609 lines--and that doesn't count tools, regression tests, the Macintosh tugboat code, the ADI kit, the OS/2 Presentation Manager interface and DDE library, and all the other stuff I undoubtedly forgot to count.
However you add it up, this is one big, hulkin' program. Further, all our efforts in removing drivers, then devolving them upon vendors through the ADI program, and providing user-customisability through menus, scripts, and AutoLisp have merely reduced the rate of growth of the AutoCAD core, which still accounts for roughly half the source lines in the program and continues to grow with every passing day. The core is a treacherous place, ruled by strange customs and conventions, including wild constraints on memory usage, files that aren't files (unless they be ASCII), C library routines that behave in unusual ways, and the ever-nagging question ``what if this causes my overlay to be reloaded?''. The lore of AutoCAD core code craftsman is unwritten, continually evolving, and very hard for an apprentice to master. All of this makes the process of extending AutoCAD to maintain and expand its market leadership increasingly difficult, painful, expensive, and time-consuming. What can be done about this?
Sharp the strife, violent the collision,
Difficult 'twill be to reach a decision.
With the advent of ADS in 1989, it at last became practical to implement extensions to AutoCAD outside the core code without incurring unacceptable penalties in efficiency, user interface, and portability. The Eagle Project, launched in July of 1989 and scheduled to ship in mid-1990, demonstrated the feasibility of this approach and moved it into the mainstream of Autodesk's plans for AutoCAD. Additional projects such as the Applied Geometry NURBS interface and the Xanadu/AutoCAD front-end are also taking this approach. None of these efforts have been easy; each one has encountered shortcomings in the ADS interface that must be remedied by core code modifications before the project can succeed. Nonetheless, it is unarguable that each of these projects will be accomplished in less time, with less effort, suffering, and destabilisation of AutoCAD than had they been integrated into the AutoCAD core in the conventional manner.
The one will press with energy immense, the
Other dodge with footwork fancy.
Now that ADS has matured, tempered by the demands of these projects, it's time to consider the next logical step: not just freezing the AutoCAD core as-is and concentrating development resources outside it, but actually beginning to shrink the core by removing features from it which, had ADS existed when they were originally implemented, would scarcely have been considered as candidates for core code. This hopeful season is one of dismantling empires, of devolving structures that have proven inefficient and unworkable. What better time to put ADS to its most demanding test to date: the migration of IGES from AutoCAD into an ADS application.
Editor: John Walker