I recall in 2002 that I was against the idea of any sort of API (Application Programming Interface) being part of Revit. Why? I was tired of managing a pile of LISP, ARX applications for AutoCAD/ADT etc. I was tired of making and maintaining them too. The "promise" was if the application needed it, it would get put in the application...Revit that is. I was worried about Revit in the future becoming the "present" (the present back then) AutoCAD situation.
As I understand it, initially the rationale for excluding an API was for control and speed-to-market. No API meant that the code was isolated and safe from outside interlopers and no distractions from providing features. This meant that they could focus and do what was needed to be done without worrying about what someone outside might try to do with the code. I'm making some sweeping generalizations here and may be sweeping some facts into corners.
When Autodesk acquired Revit developing the API became a priority and it has been ongoing since. Each release has seen large strides forward in what can be done externally. Ultimately the scope of the API is much larger than the founders had in mind.
Getting back to my bias against doing this and my selfishness. I liked the simplicity of "one" application doing so much. I hated the idea that I'd have to buy this or that from one vendor and hunt for another tool from yet another vendor. I hated the idea that I'd have to beg someone to make me a "free" utility or worse learn how to do it myself.
Yet the development of Revit can't seem to keep up with our needs and dreams. My personal dissatisfaction (yes I am not satisfied) with 2010 has little to do with the new interface than the lack of substantial tools and finishing existing features. No insult intended to the new massing tools because they represent a significant shift.
There are so many other things that are needed NOW, not in another 12 months. They were needed 12 months, 24 months ago. To name just two...Railings and Stairs. They have not been "touched" since release 7.0. Release 7.0 came out in December 2004 and there have been roughly ten releases since then including "point" releases. That's almost FIVE years ago now without so much as a "look" or "tweak" at stairs/railings. That so much effort was applied to the user interface at their expense is extremely frustrating.
Enter the API. For many things we can contact a developer and pay them to make something we need now. We'll get it faster than Autodesk will "give" it to us too. It will (hopefully) work exactly the way we want it to. Except that the "future" I was afraid of is here. My user interface now includes tools from many different vendors. In 2009 it is a real mess of menus and toolbars. In 2010, they are at least clustered under "add-ins" on the Ribbon, so far.
Here we are in that "future" I was dreading where I can get 3rd party applications from more than a dozen places and spend anywhere from $35 to $thousands. Some applications are charging as much as 25% of of the purchase price of Revit for their tools. Considering how much Revit does for its price and how little by comparison some tools do that seems a bit aggressive and it can make it harder for a firm to seriously consider them. Price is a difficult thing to figure out. Price it light and sell a lot. Now you've got a lot of customers and the difficulties that brings. Price it high and you sell less but you have a smaller pool of customers to please.
The future is here. There are quite a lot of cool tools available now and the API has made MORE possible. I just wish that more of it could be part of Revit itself.