Tony Williams: Co-inventor of COM
- Posted: Aug 11, 2006 at 11:31 AM
- 48,405 Views
- 19 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
Right click “Save as…”
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.
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
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!
Agreed, she was alot better!
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.
C
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.
Nice video, thanks!
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)
The other Behind The Code episodes have been excellent too. Are there any plans to release these more often?
Jonathan
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!
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
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.
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!
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.
Well, thank God then that we got that cool intro right in our faces.
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.
.
Remove this comment
Remove this thread
close