Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Tony Williams: Co-inventor of COM

Download

Right click “Save as…”

This episode features the co-inventor of COM, software architect, Tony Williams. In his eighteen years at Microsoft, Tony has worked on the Windows team, in Microsoft Research, and on Office. His contributions benefit not just Microsoft's applications, but the fundamental way that all Windows applications are written. Tony has been an unwavering champion of componentized application development. Today (8/06) Tony is driving the design of a new component framework which will be used in Office 12.  This interview is hosted by software architect, Keith Kaplan.

Tag:

Follow the Discussion

  • earnshawearnshaw Jack Sleeps
    Code reuse is a compelling idea.  Software componentry would decompose solutions into not only classes and modules, but also into reusable components.  So far, in practice, reusable components have not materialized in a big way.  It would be nice to see those fat books of patterns implemented as components and widely reused, if that's even technically possible.

    As to COM, it solved a bunch of problems and created more.  Like the "Hello, World!" C++ program in Petzold that is some 200 lines long, a COM solution contains many an arcane line that caters to the dainty way COM objects must be approached to get them to do anything.  And using COM objects from across a network is an absolute nightmare. Stubs and proxies indeed.  Worst of all, the Registry is highly involved in GUID-to-<anything> mapping.  Any mishap in there and the application crashes without hope of repair.  Only replace.

    In the end, COM served a very important purpose as a way to deliver versionable software.   Microsoft wrote millions of lines using COM.  COM's most important function was to serve as an example of how to burden programmers with issues they should not be bothered with like reference counting and instantiation.  The bit level constraints on the design of COM rose up and bit everyone who tried to play nice with it.  Out of COM came .NET Framework, which accomplishes most of what COM does without the muss, fuss, or bother.  Hide the wires brother and sister programmers!
  • LostInSpacebarAdityaG OMG VISTA FTW LOLZ!!1one
    Very cool interview. I know this is not totally relevant to content, but I felt the interviewer was very very very uptight and fake sounding. The older lady that usually hosts this show seemed to be a bit more casual.
  • MinhMinh WOOH!  WOOH!
    Co-inventor? Don't you mean CoCreator? Smiley
  • ChadkChadk excuse me - do you has a flavor?
    AdityaG wrote:
    Very cool interview. I know this is not totally relevant to content, but I felt the interviewer was very very very uptight and fake sounding. The older lady that usually hosts this show seemed to be a bit more casual.

    Agreed, she was alot better!
  • Internet is laying to rest and finally will lay to rest COM.

    SOA is the new COM. But this time the environment is better. There is development support in terms of Windows Communication Foundation. And there is better adoption, both camps (Java and .Net) have embraced it.
  • CharlesCharles Welcome Change
    Minh wrote:
    Co-inventor? Don't you mean CoCreator?


    Smiley Nice, Minh
    C
  • samirsshah wrote:
    Internet is laying to rest and finally will lay to rest COM.

    SOA is the new COM. But this time the environment is better. There is development support in terms of Windows Communication Foundation. And there is better adoption, both camps (Java and .Net) have embraced it.


    I've started programming when .net just came out and so I've never really used or understood COM or Ole deeply. But if i haven't misunderstood COM was trying to encourage reuse through componentization and Ole was built to enable applications to reuse components of other applications through either embedded usage or object invocation. So how does Ole relate to COM?

    I also agree that SOA is definitely the new COM, it definitely has more chance to achieve what COM couldn't achieve. But I have this cloud of doubt that software reuse is ever really possible, when i say that i mean efficient and cost-effective software reuse.

    I really enjoyed the video btw.

  • erikerik_ Whooops!
    Why is the autocue standing a few meters next to the camera instead of under or above it. Never mind, it stops when the interview starts. Was still watching =)

    Nice video, thanks!
  • Many thanks, I enjoyed this.

    It's always good to hear some real opinions being expressed.
    One of the highlights here is when Tony called the product name of XCal "disgusting" (48:30) Big Smile


    The other Behind The Code episodes have been excellent too. Are there any plans to release these more often?


    Jonathan
  • figuerresfiguerres ???
    Great segment, good topic.


    Reg:  wow yeas it is kind of like a big mole on the face of windows and I'd love to see it go away.... but OMG the process of doing that today would be ....

    I picture a project that would take a huge number of man hours to design, test and deploy.

    like the thousands of com dll's out in the wild that have to be managed....

    and as tony says in passing: we do need a "Kind of" registry of objects some where in the system....

    just that I think it needs to be fully thought out and designed from the ground up to do the right things.

    and perhaps not 1 db but several:

    1 for object interop / interface stuff

    others for things like service settings, file assoc etc....
    but each as a sperate db and filestore.

    but with perhaps a common api and meta-format
    so that the code for searching them and using them could be common for all the stores.

    and make that code simple -- a few times I have had to write some pinvoke code for .net cf for example and it just seems evil!




  • ok, I am getting less and less out of these interviews. There are the Anders Helsberg interviews which are great and I learn a lot. From that highpoint, 80% of the interviews dont put the subject matter in context with the wider software field and they quickly lose me.  Shouldnt the central question in the interview always be "what does this software creation of yours do that others dont"?

    I think the people doing these interviews should have a lot of knowledge and experience with software. An aging programmer would work, there must be a lot of them around now a days. Smiley 

    Here are the questions I would have liked to have asked:

    Who was the other co inventor of COM and how did Tony work with him/her?

    I always found COM books very difficult to understand.  Was that just me being dumb or thick? What were Tony's impression of the COM books and other education sources available to programmers.

    Tony said .NET is not a replacement for COM. But COM is gone, no? Kind of confusing. I guess I would have liked Tony to elaborate on the subject of present day and future COM.

    I understand the "draw your favorite data structure" is a standard of the show. I remember Anders Helsberg drawing an interesting one. But Tony did not appear into it at all. You should expand that to "draw your favorite flowchart or data struct". Then Tony could have drawn his favorite flow of events within the COM process.

    I only watched 10-15 minutes of the Craig Mundie interview and saw no spark of intelligence or creativity in him.  I watched the entire Tony Williams interview and while he does not score low like Mundie, I did not see the brilliance he must exhibit for Bill Gates to put him in charge of such an important project.  The fair viewer must fault the inverviewer for this. 

    Thank you for channel 9. honestly.

    -Steve

  • COM had the goal to fit legacy and new applications on a local computer for reuse. It achieved that. But DCOM did not succeed in the Internet age. Hence Internet is laying to rest COM.

     

    SOA has the goal to fit legacy and new applications for reuse over Internet. It is achieving that. It has enough momentum to succeed. I do think that SOA is enabling efficient and cost effective reuse.

     

    An Indian online bookstore I visit is using a US bookstore’s Web Services (May I call it SOA?) to give me seamless Indian experience. It has achieved efficient and cost effective reuse. SOA is another way Internet is laying to rest COM.

  • We produce about 4 shows per calendar year.

  • figuerresfiguerres ???
    DenvilleSteve wrote:
    ok, I am getting less and less out of these interviews. There are the Anders Helsberg interviews which are great and I learn a lot. From that highpoint, 80% of the interviews dont put the subject matter in context with the wider software field and they quickly lose me.  Shouldnt the central question in the interview always be "what does this software creation of yours do that others dont"?

    I think the people doing these interviews should have a lot of knowledge and experience with software. An aging programmer would work, there must be a lot of them around now a days.  

    Here are the questions I would have liked to have asked:

    Who was the other co inventor of COM and how did Tony work with him/her?

    I always found COM books very difficult to understand.  Was that just me being dumb or thick? What were Tony's impression of the COM books and other education sources available to programmers.

    Tony said .NET is not a replacement for COM. But COM is gone, no? Kind of confusing. I guess I would have liked Tony to elaborate on the subject of present day and future COM.

    I understand the "draw your favorite data structure" is a standard of the show. I remember Anders Helsberg drawing an interesting one. But Tony did not appear into it at all. You should expand that to "draw your favorite flowchart or data struct". Then Tony could have drawn his favorite flow of events within the COM process.

    I only watched 10-15 minutes of the Craig Mundie interview and saw no spark of intelligence or creativity in him.  I watched the entire Tony Williams interview and while he does not score low like Mundie, I did not see the brilliance he must exhibit for Bill Gates to put him in charge of such an important project.  The fair viewer must fault the inverviewer for this. 

    Thank you for channel 9. honestly.

    -Steve




    Well My take on the whole COM/OLE/DCOM thing is this:

    at the time it was created and with the tools they had they did the best they could.

    I think if Tony was given the same task today with C++ and no .Net
    what he would create would be very different.

    and COM Vs. .Net:

    .Net is *NOT* a "new com" while some of what .net does enters some of the "space" that com was made for .Net
    is a much larger whole then com was.

    I would say that the .net designers took important lessons from how com was built, but in the whole .net is about much more than linking objects.

    as he says (tony) he was told to make a way for different groups to share.  he was not given the option of re-writing the base packages to fit the new requirement.

    so COM is to some extent a design compromise between an ideal and reality. thus comes some of the complexity and ugly corners we find.

    BUT IT WORKED!

  • TaskerrTaskerr This ones a Gem!

    Tony, it’s a shame you’re a physicist. I say this because in your talk you never alluded to biology or such things. There are superb examples of componentisation in nature at the macro/micro level and from an architecture viewpoint something to be admired. This is not to say they don’t exist in quantum physics.

    For instance, some basics building blocks are common to all forms of life on earth such that a butterfly might become an albatross given time. As software’s existence is imperceptible in biological timescales it could just be that one of your legacies, or a colleagues, will have been to help create a software molecule that become fundamental to all future software.

    My favourite from all the years of  Word, Excel etc has got to be drag and drop.

  • LiQLiQ
    Chadk wrote:
    
    AdityaG wrote:Very cool interview. I know this is not totally relevant to content, but I felt the interviewer was very very very uptight and fake sounding. The older lady that usually hosts this show seemed to be a bit more casual.

    Agreed, she was alot better!


    Well, thank God then that we got that cool intro right in our faces.
  • Thanks to Tony and David for an interesting and enlightenting discussion.  As a 29 year old english programmer coding frogger on an 8bit computer since an early age it's really great to get to know a little one of the personalities, muses, thinkers and contributors to some of the definitive ideas underpinning the commercial success of a certain operating system and suite of productivity software applications.  OLE tony! Big round of applause mate!
  • I've recently been working on a project whereby the client (a major Hollywood movie vfx post-production company) wished to reconcile their web based asset management system against temporal gantt chart production plan visualisations generated in Microsoft Project.

    Now MS Project has an XML interface so coding up an IO and mapping component proved trivially easy.  However, when it came to talking and sending messages directly to MS Project in order to have it understand and respect the clients user model and business rules - ie. a head of production can edit a production schedule whereas an artist should receive a locked down interface providing only a read only view of data relating to their role - now this became a major problem. 

    So compound these considerations with the reality of a user base split between Windows, Linux and Apple systems and you begin to understand why I directed our team to port and reverse engineer a subset of MS Project's functionality to the web in order that we could author a solution that would successfully achive the client's desired implementation aims and to realise this in way that would be accessible to all users whilst respecting the clients strict policies of data access, security, disclosure and so on.

    For my part what i would like to see is a realisation of COM for the internet age of distributed de-centralised computing.  Tony talking about this notion at the outset of the interview when he discussed the transition from mainframe to client-server systems architecures. 

    Now a few years on, XML works to a point in terms of data interchange between disparate systems but then hey apache's http.conf file does the same as do any number of other arbitrary plain text data structure formats. 

    As a solutions architect when i cannot dictate the type of platform to be used, for legacy reasons, or whatever, what would be really useful to me is a componentised accesible software model built built around a rich api interface, much as Tony pointed out when he disucssed certain principles that UNIX is based on.  I can pipe the output of FIND into SED and i can customise the behaviour of GREP to further distill a  result set.  Like LEGO - a simple, clearly defined interoperability interface with which i can build rich and complex solutions ot problems based around the combination of existing patterns. 

    So right now, why can't i instantiate and call remotely via a web HTTP api request say, a temporal date / interval based schedule calculation engine component of an MS Project app in order to for example  calculate a projected end date for a task based on a supplied start date and duration interval.  And why can't i make a request to a server based installation of Project to have it render back to me a customisable browser friendly gantt activity timeline?

    I've just wasted weeks porting some of this functionality first to a set of PHP classes for rapid concept prototyping and then subsequently to a compiled set of Sybase Transact SQL stored procedures (like going back 20 years) in order to deliver a solution that works expediantly, in a way that is computationally efficient and sympathetic with a clients existing technology investment.

    Genuinely, I'd like to see the principles of COM and OLE applied in a meaningfull way to a distributed internet based service orrientated software model with a result that actually means more than just a bunch of hyperbole and marketing jargon.  Moreover if these components can be actually assembled and translated into solutions that result in real world commercial applications then the more the better.
    .


  • Tony says in those days you didn't need to be a computer scientist to get into programming. that's still true today, Mark Zuckerberg studied psychology at university. 

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.