A brief history of rearchitecting AutoCAD (or the importance of R13)

Over the weekend I received an email from Jürgen Becker. It came with this image, which certainly brought back memories.

AutoCAD Release 13

The email referred to our recent trip down memory lane

I read your last post and remembered a poster. Do you remember that release, it was terrible?

This is one of my favourite "chat over a beer" topics, and one that seems relevant to where we are today with Fabric, so I wrote Jürgen a quick note to say that I'd reply via my blog. Here is that reply.

R13 was bad, but it had to happen

I joined Autodesk in August 1995, which was about when the R13 release had stabilised (I have some recollection of c4 or c4a being released soon after I joined, but I can't track down the exact timing of the R13 point releases). So I didn't experience the full pain caused by the quality of that particular release… while I can empathise with it, I didn't exactly live it myself on a daily basis (like many of our customers did). If people would like to share their own experiences with R13 – whether positive or negative – then please feel free to post a comment. This post is absolutely not about me trying to rewrite history.

What I do see – and often talk to people about when they raise it with me – is the importance of the R13 release to AutoCAD as a product and to Autodesk as a company. I have absolutely no hesitation in saying that if the R13 release hadn't happened, Autodesk would not be here today. (I suppose that's an obvious assertion, in the sense that there's no way our user base could still be using AutoCAD R12 for DOS today, but to understand exactly what I mean, please read on. 🙂

The initial R13 release was basically unusable. I was busy finishing my studies, at the time, and so can't comment firsthand, but it's something everyone says. I can't give any insights into the management pressures and engineering issues that led to such a release going out the door, but as an organisation the AutoCAD team certainly learned a lot from this misstep. By the time I started working with them (initially to advocate for external software developers and later on as a member of the team) the organisation had become extremely quality-focused, which I suppose was the first positive impact of the R13 debacle.

Enabler for The Great AutoCAD Diaspora

Beyond the lessons learned by the AutoCAD engineering organisation, R13 was an important milestone for the AutoCAD product. Software development with the AutoCAD platform prior to R13 – both internal and external to Autodesk – was possible using either AutoLISP or ADS, the AutoCAD Development System. ADS allowed executables written in C to interface with AutoCAD via a set of messages… both AutoLISP code and ADS executables ran in a separate process,  talking to AutoCAD via an inter-process communication (IPC) buffer which meant said communication was inevitably slow. ADS was important because it allowed people to write compiled applications that could interface with AutoCAD, but the integration was very limited. It was great as a mechanism for professional software developers to integrate data from other systems – perhaps performing serious number-crunching or interfacing with external databases via ASI – but it wasn't an architecture that lent itself to high performance.

Not having been involved in it, I can't talk about the goals for the R13 release, but I can talk about its impact in later years. R13 saw major parts of its codebase move to the object-oriented paradigm – via C++ – and saw the birth of the AutoCAD Runtime eXtension (ARX) API layer. Developers could now write DLLs – whether via C++ using the new ARX mechanism, or by porting legacy ADS code to ADSRX modules – that could be loaded by AutoCAD into its own process. Performance became lightning-fast: you were essentially creating modules that were executed just as if they were a core part of the product and had been written by Autodesk.

In fact, ARX (which was later renamed to ObjectARX during the R14 timeframe) enabled teams within Autodesk – some of which were even outside of San Rafael! – to start to build code that worked with the AutoCAD product – as if it was part of AutoCAD – without having to build the into the codebase. This may sound like something that's obvious in hindsight as being important to do, but nevertheless its impact should not be underestimated: the rearchitecture of the AutoCAD core – and exposure of ARX – was a change that led directly to the verticalization of Autodesk, whether via internal projects or the acquisition of external products that could now be developed by Autodesk Developer Network partners. The Great AutoCAD Diaspora (and yes, that's a term I've just coined, so blame me for it) would not have happened had it not been for R13.

Rearchitecting AutoCAD over the years

I tend to think of R13 as the first major rearchitecture of AutoCAD's codebase, although this point is probably ready (and about) to be argued: there were certainly efforts such as the Tugboat and the Titanic – which led to Autodesk releasing AutoCAD R10 for Macintosh – but I suspect even John Walker wouldn't classify this as a rearchitecture. There were almost certainly others that I know nothing about – whether related to supporting new platforms, back in the day, or perhaps to enable 3D – so you can safely take this numbering scheme to indicate the major ones that I'm aware of. Something that's important to note is that the R13 rearchitecture was in many ways the last major "logical" rearchitecture: where AutoCAD's object model was established, something that's reflected heavily in its APIs and the structure of data it serialises to and from files.

The second major rearchitecture came in the AutoCAD 2000 timeframe, when the product was reworked to support multiple drawings via Windows' MDI (Multiple Document Interface) mechanism. This was the first release that integrated fibers. If my recollection serves me correctly, this was also the first release to use ObjectDBX (which had been born during the R14 timeframe as DWG Unplugged, but that version was built from AutoCAD core code – it wasn't then separated out as a component used by AutoCAD) to manage DWG files. (ObjectDBX was an overloaded term, in the sense it was used for both the runtime mechanism and the external SDK… it was later renamed RealDWG for the SDK side of things.)

While not really about rearchitecture, it's worth giving honorable mentions to Visual LISP, VBA, COM and .NET. All of these programming environments were made possible by the work done in R13. Both Visual LISP – post the acquisition of Vital LISP – and VBA were integrated in R14, COM was probably there in some manner in R14 to support VBA and VLISP, but was reworked significantly for AutoCAD 2000 (at least that's my recollection) and .NET was previewed in AutoCAD 2004 and properly released in 2005. None of these would have happened without having ObjectARX as a
foundation.

Two more efforts that were both significant and yet somewhat independent of ObjectARX were to make AutoCAD Unicode-aware and 64-bit. I want to say these happened around AutoCAD 2008, but I could be out by as much as a few years on each. In both cases they involved touching a whole lot of code – in both AutoCAD itself and external products built on ObjectARX – but I hesitate to classify them as rearchitectures of the codebase. By saying this I know I'm risking an argument about semantics, but hey.

The third major rearchitecture project was The Big Split, which happened for AutoCAD 2010: the effort to allow AutoCAD to be built for OS X, with the secondary (but arguably more important) goal of creating a headless core of AutoCAD that could be run in the cloud. While the second (ObjectDBX) rearchitecture essentially componentised file-level access for both DWG and DXF, this third rearchitecture created the AcCore.dll module that hosted a significant amount of AutoCAD's command- and canvas-related capabilities: essentially everything that wasn't about the application UI layer (i.e. the application window with its toolbars or ribbons). It was a first attempt at creating a cross-platform codebase although – as mentioned recently – it wasn't as clean a split as we'd have liked (there were lots of #ifdefs to conditionally compile code for different platforms).

The fourth major rearchitecture is Fabric. It raises the bar on The Big Split by adding 2D graphics into the one-codebase-to-rule-all-platforms – along with RealDWG and AcCore – as well as enforcing discipline around the use of platform-specific UI (above Fabric, architecturally) and the Platform Abstract Layer (below Fabric, architecturally, but above the OSes themselves). As well as extending support beyond Windows and Mac desktops to mobile and web. All from the same codebase. But we'll dig more into this in a future post: this one has already gone on long enough. 🙂

Summary

Wrapping up… AutoCAD's codebase has benefited from a number of significant architectural projects, over the years. That said, the core logical architecture was established in the R13 timeframe, while the projects since have largely focused on physical architecture (componentisation and modularisation). Which isn't to say they weren't extremely important in their own way – Forge's Design Automation API would not exist if we hadn't done The Big Split, and I'm expecting Fabric to have even wider-reaching impact, over time – it's just that they're standing on the shoulders of giants.

So, to answer Jürgen's question, R13 was indeed a terrible release but probably the most important one in the company's history.

I hope people feel free to comment on this post, adding commentary and pointing out any inaccuracies (most of the above was dug up from long-term memory, so I'm very likely to have inadvertently made mistakes). Or maybe you just see things differently – if so, let me know!

31 responses to “A brief history of rearchitecting AutoCAD (or the importance of R13)”

  1. Un petit complément par Serge Camiré: blog-cao.com/art...

    1. Merci!

  2. R13c4a was being discussed on Aug 03, 1996

    groups.google.com/f...

    1. Kean Walmsley Avatar

      Thanks!

  3. I remember! Thank you for the post, Kean. Moving from R12 to R13 was pivotal. Traveling with you Bob and many others to ADN events to evangelize these changes around the globe is full of fond memories.

    I compare R12 to R13 to any disruptive innovation for mainstream and satisfied adopters that don't easily or immediately realize the future platform for innovation is brighter and renews more, better, faster, and accelerating innovation - once through the disruption.

    As I think of this, I compare this contemporary project of building the new Denver Airport opened in 1995. For that project, there was intense focus on operations, and specifically the transition to the new luggage handling system developed to increase efficiency. Luggage handling for the airline industry had challenges, and at airports all over the world engineers were thinking about operational innovation. Denver took the bullet in terms of cost overruns, delays, and traveler frustration when their luggage was chewed up, or didn't arrive. However, in the end, airport luggage handling systems improved (just like all the "c" releases in R13). The promise of efficiency and effectiveness was delivered. All airports to come thereafter benefitted and many existing large airports engaged in retrofit taking advantage of what was engineered and learned at Denver's airport..

    Painful innovation to break free of legacy in many industries often has to happen - benefits are indisputable when looked at in the rear view mirror.

    1. Kean Walmsley Avatar

      So nice to hear from you, Andrew. Yes, the early ARX evangelism tours were a blast. 🙂

      Thanks for the airport analogy. It's interesting to think of R13 in the broader context of technological innovation.

      Kean

  4. Billy Hinners Avatar

    Good article, Kean. FYI, AutoCAD became Unicode-aware as part of the R13 release. The Neuchâtel development team had their own goals for R13 which included one DWG worldwide, i.e. a DWG written by any language version should be editable in any other language version. As I (vaguely) recall, this primarily affected SHP/SHX files and the "symbol table", or named objects within AutoCAD (e.g. layer names). We also began shipping both the imperial and metric support files worldwide. And, R13 was the first release to have one EXE worldwide, i.e. the same binary was used for all localized versions of AutoCAD.

    R13 was a major milestone for Autodesk in terms of software engineering process as well. While our initial rollout of detailed and formalized phases of development could have been handled better, it laid an important foundation for the continued streamlining and fine-tuning of engineering process we instituted in R14.

    1. Thanks, Billy – nice to hear from you.

      Yes, AutoCAD was Unicode-aware for drawing content (and the DWG format) for much longer… the more recent effort was around strings displayed in the UI (and passed via ObjectARX). I should have been more clear on that point.

      It’s great having people involved in the release chiming in – thanks again. 🙂

      Kean

    2. Franklin Vaugn Avatar

      one dwig to rule them all
      one dwig to find them
      one dwig to bring them all
      and in the darkness bind them

  5. Claudio Ombrella Avatar
    Claudio Ombrella

    Hi Kean:
    I remember very well AutoCAD R13. It was released on Nov 30th 1994 with some incredible bugs, example typing the line command and pressing ESC key gave a segmentation fault error. R13c1 was released on January 8th 1995, I remember very well as it is my birthdate. The devs team had a very busy "week of rest" to achieve this release in less than 40 days.

    In March 1995 I was presenter at Camp ADGE, AutoCAD developer group Europe, in Copenhagen and it was very difficult to master the audience that was complaining about the stability of the release. The impact of R13 was so wide that Autodesk UK had to negotiate with the channel when R14 was going to be released, sort of sign off.

    But this company has talented people and R14 was the great release we all know thanks to two notable people: Amar Hanspal and Tony Peach among many other.

    1. Thanks, Cro.

      It’s helpful to get a real sense for the pain people went through, back then. Ultimately R14 was only a great release thanks to the groundwork done in R13, of course. 🙂

      Kean

      1. Windows Vista>7 and 8>10 come to mind as similar pain gain models

  6. Jürgen A. Becker Avatar
    Jürgen A. Becker

    Hi Kean,
    thanks for mentioning me and posting my image.
    Yes, it was a terrible thing.
    But, Autodesk has done a good job creating basics that will benefit us today.

    Cheers Jürgen

  7. I joined Autodesk on 1-Apr-1994 to work on R13. Those numbers didn't really catch my attention until my team released R13c4a (I believe that was the 10th release of R13).
    R13 didn't just change the internal architecture, it also marked the first major change in the way AutoCAD was built, from both technical and organizational aspects. R13 was the first release that supported distributed development and used Extreme Programming techniques like continuous integration even before these ideas had been given names.
    R13 opened up AutoCAD to contributions from more people, which continues to have a long term positive impact.

    1. stevejohnsonCAD Avatar
      stevejohnsonCAD

      Hey Frank, I remember you! You did a lot of good work with text, if I remember correctly.

      1. Frank and Randy Kintzley were the driving force behind the awesome Express Tools, from what I recall. Which contained lots of text-related goodness, of course.

        Kean

  8. stevejohnsonCAD Avatar

    From my records:
    28 November 1994Autodesk ships AutoCAD Release 13
    16 December 1994Autodesk releases patch 13a
    14 January 1995Autodesk releases update 13c1
    28 March 1995Autodesk releases update 13c2
    2 April 1995Autodesk releases patch 13c2a
    14 April 1995Autodesk releases patch 13c2b
    5 July 1995Autodesk releases update 13c3
    29 August 1995Autodesk releases patch 13c3b (yes, really)
    7 September 1995Autodesk withdraws patch 13c3b
    13 September 1995Autodesk releases patch 13c3a (yes, really)
    22 January 1996Autodesk begins limited release of update 13c4
    12 February 1996Autodesk officially ships update 13c4
    3 August 1996Autodesk releases R13c4a

    1. This is very helpful - thanks, Steve!

      Kean

  9. stevejohnsonCAD Avatar

    R13 was initially undoubtedly an unfinished bug-ridden mess, but it was already way overdue so Carol ordered it shipped anyway. Given what's just happened on the Autodesk forums (and a whole bunch of other unfinished things being released), I'm not convinced the lessons learned are still etched into the corporate memory.

    Much of the R13 instability was due to it being bloated and full of memory leaks, and therefore running out of virtual memory on the PCs and Windows versions typically in use at that time. Changing some Windows virtual memory settings helped somewhat. Running it under NT on a PC with masses of memory helped a lot. R13c4 or c4a was actually quite usable under Windows 95; NT 4.0 was better.

    1. 1. Carol did not order us to do it. Sometimes you have to ship something in order to really ship it. *We* decided to ship it, with a schedule for fast follow-ups to handle known weaknesses. The business could not wait for this. This is what people that have to ship do.

      2. The memory work involved went way beyond settings. The entire architecture had to allow for every database entity - and a complex drawing had millions - to manage its own memory/VM. Before there was zero code for this. Some VM management, which very few developers knew how to do with Win32 being brand new to the world, coupled with deep product knowledge about the database was required. We hired a guy out of NuMega who had SDKs to help with this (MSFT had nothing, then) and Greg Lutz spent the next few months doing it.

      3. This was all done after we shipped mostly because after the first release was the moment when our non-Windows ports and Sun machines went away, and we became Windows-centric, so we could work directly with one OS's memory management idioms, and not 12 of them.

  10. Franklin Vaugn Avatar

    Hi Kean. Fellow alumnus. I think we've met. I joined in 1996.

    Oh man. R13. That brings me back to 1994. I was modeling (or should I say trying to model) the entire San Mateo County Health Center Facility in R13 for Dillingham Construction. God was that ever painful. I still have scars. But I guess I shouldn't complain. Going to Windows damn near killed the entire company. People don't realize it (even people at the desk) but I mean Autodesk came so close to death. I mean fingernails on the edge of the rim, hanging on by one hand close to death.

    Four "extensions" to R13(!) which as we all know were really just patches. I mean people were PISSED OFF. I don't mean little mom and pop operations. I mean big dogs like GM and Ford. It was that crossing the chasm to Windows that changed the culture at Autodesk. Carol said we're not doing this cowboy shit anymore (and she was a cowgirl herself). We're going to have a PMO and we're going act all grown up. John Draper, aka Captain Crunch, was out, and the bureaucrats were in.

    My goodness. Well, it was fun while it lasted. Now it's just a big, giant corporation, like everywhere else.

    1. Nice to hear from you, Franklin!

      Kean

    2. LOL. There has never been anything bureaucratic about Autodesk. Not under my CEOs while there - John, Al, Carol, or Carl, and I know Andrew well - it will never happen.

      BTW, if you care about Captain Crunch, as I do, please contribute to his GoFundMe. He really needs help.

      gofundme.com/f/...

  11. The great unicode split happened with r2007 already.

  12. Visual Lisp was integrated into
    r15/r2000, not r14. This was also a huge step. Also the new display engine, which was really fast.

    The parametric modeling engine didn't make it into r2000 then, though it was ready. This came later.

  13. Berndt Nording Avatar

    I do indeed remember R13. It lasted about 3 days where I was working, and then it was uninstalled and R12 was re-installed, the productivity losses due to constant crashes were intolerable. In fact, all of the odd numbered releases of even earlier AutoCAD were more bug-ridden than the even numbered ones. The exception was R12 for Windows - almost unworkable, though that may also have had something to do with Windows 3.1 not being very stable either.

  14. I just ran across this. You really nailed it, Kean. And missed something as important as the ARX change.

    R13 was the last DOS release, but until R13, AutoCAD for Windows was just another port - literally written as an ADI device driver. Moreover, all input on all platforms was assumed to come from a keyboard polling loop, with mouse events, etc. converted to command line input, etc. As such, basic behaviors using modeless affordances like modeless dialogs, toolbars, etc. could not work with AutoCAD - at all. Moreover, prior to R13 development was done on Sun machines, with small teams or even just individuals getting it to run using the chokepoint of the ADI interface on the many platforms we supported.

    During R13 development, it was clear that almost all of those platforms (Unix flavors, DOS, and pre-Jobs 2.0 Mac) would dwindle or disappear by the time we shipped, and Windows would be ascendant. My argument, which required a lot of cultural change to add to the architectural change, was that the world was moving to Windows, and we would never build or design a great Windows application sitting in front of our Sun machines.

    MFC came out in the middle of the first year of R13. We agreed to move to that as *the* application framework for AutoCAD, and support DOS for one more release, after which AutoCAD would finally be a real Windows application from the ground up, not a simple "port". This was done by my team. This was in 1993.

    I would say the cultural challenges were greater than the architectural ones for that. So R13 was largely driven by ARX and AutoCAD becoming native to Windows.

    An externality here was that we couldn't require our customers to buy Win95, and certainly not NT, so acad had to run on Windows 3.1, which required us to build the largest application ever released on the interim Win32s SDK, a hack from MSFT that allowed Win32 apps to be backwards compatible with Windows before Win95 and NT. When I went to MSFT years later, the guy who owned Win32s told me that he was shocked we were able to release something on it. It wasn't 100% there, and maybe ISVs, us being the biggest one, actually shipped on it.

    Now, fast forward - it's the mid-00s AutoCAD and cloud are under me, and after a demo in Redmond of what was a shockingly useless early Azure, we flew back to California saying that "if Microsoft won't rent Windows instances, and if Amazon doesn't do it (neither did, yet), then for our search engine in the cloud, we need to use AWS and to do that, we need to revert the Windows-centric changes to core for the database that we had made in 1993. So, we did. Most of the people that were involved in that Bill, Ashok, Hans, myself, etc., were still there. So, we did it.

    One day Abhijit comes in my office and asks me, "you did a NeXT port once for fun. Now that we have backported the database to run on Linux again, and now that Apple has moved to Intel, how hard would it be to get a Mac OS port (which was now NeXTSTEP rebadged as MacOS a decade later) running? My answer was, "much easier". He asked for a couple dozen people in China to do the split as a prototype and in a couple of years, while I was at MSFT (I left ADSK in 2008) I got a copy of AutoCAD/Mac in the mail as a surprise from Carl who "thought (I) should have this!", which I appreciated. It looked great, and I was glad to see Eric Stover's persistence on having a Mac AutoCAD payoff. His customer obsession for this was off the charts. He had tons of data that justified the port for business purposes.

    As head of Visual Studio, I worked with the Azure team at that time, and advocated for renting Windows instances instead of the absurd .NET-only PaaS that we had, arguing that there'd be no AutoCAD/Mac if we (MSFT) had rented Autodesk Windows instances in 2007, and that between that and threatening Mono developers with licensing lawsuits that we were moving 48% of the market (Linux) off of our platforms in general by these choices.

    Once Satya took over our division, these changes suddenly became easy for us to make. AutoCAD and Autodesk's importance to Microsoft informed a lot of these decisions.

    I'm glad to read what you said. Some loved to dis the release, but it was a necessary one. No R13, possibly no Autodesk as we know it, which is what you're saying here. In fact, I've never heard anyone else say it but me after I came back, until I saw you saying it now.

    And no one seems to factor in the then-potent Moore's Law which meant PCs were 1000 times faster and more capable when R14 shipped. I used to tease people that they didn't get any credit for the entire world buying into real Win32 platforms like Win95 and NT, and Intel's chips being 1000 times faster, and standard memory installations growing from 4MB (!) to 16MB by the time R14 came out. But the R14 team definitely juggled cleaning up R13 and providing great features beyond mere bug fixes which customers expect anyway. That kind of juggling is very difficult, but the R14 team pulled it off. And they also rallied the entire company around AutoCAD in a way that was crucial. In terms of leadership, I give a lot of credit to Carl, Amar, and team for this. They deserved the promotions in the years to come, if just for this crucial.

    Many of our contemporaries back then became roadkill during this transition. Where are they today? Borland, Lotus, WordPerfect, etc. All gone. The transitions are always painful for a company and for its customers (see Windows Vista, Mac OS 7, etc.) But if you make the right decisions and apply yourself "year after year with Zen-like attention", as Greg Lutz used to describe the AutoCAD teams) it can be done.

    We did it.

    Autodesk in 2022 is bigger and better than ever. I and the team appreciate your setting the record straight with data and facts. Good stuff, Kean.
    uploads.disquscdn.c...

    This is a poor scan of the leadership team at the moment of the launch decision at 3AM, 1994-11-23.

    1. Kean Walmsley Avatar

      Thanks for sharing your firsthand (and hard-won) insights, Gary. Fascinating stuff.

      Kean

  15. Well, years later, we can reveal the whole truth! So let's go. My memory of the first R13 version is like almost everyone else I guess a very bad memory. It is certainly the only professional software installed on my computer that had managed to damage my hard disk in such a way that it was unusable and I had to reformat it... This is my not very glorious memory of the first R13 version!

    1. Ronnie Wilkins, Jr. Avatar
      Ronnie Wilkins, Jr.

      I had Word for Mac (Autosave) corrupt my hard drive back in 2012, had to format/reinstall: answers.microsoft.c...

Leave a Reply to Jürgen A. Becker Cancel reply

Your email address will not be published. Required fields are marked *