Microsoft, eat your own dog food

Microsoft, eat your own dog food

Summary: "Eating your own dog food" is an odd software development-related term that describes the importance of ensuring that your own developers use the technology they are creating. When Microsoft has hewed closed to this principle, their products have achieved dominant market shares. Unfortunately, Microsoft is not applying this principle to .NET 3.0 technologies, and in particular, the Windows Presentation Framework (WPF).


"Eating your own dog food" is a concept that may not be so familiar outside the development community, and is not intended as a reflection of the quality (or lack thereof) of a particular software product. In essence, it means that if you create an API or product within a company, it behooves you to ensure that your own developers also use that product, turning them into in-house field testing personnel with the added advantage that they have access to the code and can find, if not fix themselves, truly annoying deficiencies.

I think it's pretty clear that where Microsoft has truly eaten its own dog food, it has made products that manage to control a large percentage of the market. Consider something simple and fundamental which historically has been as closely associated with the Microsoft platform as WIN32: COM. COM was Microsoft's standard technology for binary interoperability. Built around a simple C-style binary layout that maps directly to the way C++ implements virtual methods (the VTABLE, which is basically a stack of function pointers), it became the de facto interoperability standard atop the Windows platform. A heavy percentage of my C++ development work in the past was devoted to the creation of reusable COM components. COM was an extremely important technology pre-.NET, and for that reason, Microsoft made sure that COM interoperabilty was incredibly simple to achieve from .NET environments. You can generate .NET wrappers around COM objects very easily, allowing you to manage legacy COM objects in your .NET applications as easily as you do local .NET objects.

COM, however, conquered the Windows world because Microsoft was so aggressive about using the technology in its own products. A true competitive differentiator, at least from a "browser as reusable toolkit" standpoint, was the fact that Microsoft built Internet Explorer as a set of reusable COM components. All functionality in Microsoft's Office product suite were exposed via COM Automation, making the functionality accessible to both developers using traditional programming languages and scripting languages alike. Microsoft made Visual Basic an important development technology based in no small part on how the tool made it easy to create and consume COM objects.

Microsoft, in other words, ate its own dog food when it came to COM. This incentivized third parties to use the COM infrastructure in their own products, making COM the standard technology for binary reusability in Windows.

Low-level technologies, however, aren't the only beneficiaries of the "dog food" concept. Higher level products also frequently benefit from extensive internal usage by Microsoft.

I don't find many opponents of Microsoft technology who have bad things to say about Visual Studio. It is generally considered a great product, and the fact that many of its concepts are copied in competing development tools is a testament to its status as a setter of trends in development technology. People may complain about its price, but they don't often claim that it is a bad product.

Visual Studio is also the tool that Microsoft uses to build all of its own products. That's a huge competitive advantage for a company like Microsoft, which is chock full of highly skilled developers and creates software used by billions. Those experiences inform directions in a product they use to build their own software, and since software developers who write to Windows are likely to have many of the same requirements as Microsoft's developers, that improves Visual Studio's suitability to the needs of Windows developers.

Few companies are as driven by email as Microsoft. I received stacks of the stuff while a Microsoft employee, and combined with the integrated calendar in Outlook, it served as the primary means by which Microsoft coordinated things across a large and diverse company. That internal experience has helped to inform the design of both Exchange and Outlook. Microsoft is in a unique position to know what kinds of issues large distributed organizations face from a communications standpoint because it is such an organization itself, and that knowledge has been poured into the design of Exchange and Outlook. That, I think, has played an important role in making the pairing dominant in the enterprise.

The "eat your own dog food" model has its limitations. Everyone at Microsoft uses Microsoft operating systems, too. That has worked well in the server space, where the server operating system division has moved from strength to strength, and has a growing market share to show for it. Having the geeks at Microsoft using a consumer-oriented operating system, however, is less effective at working out issues that affect non-technical users, as geeks are a more knowledgeable user group than the non-geeks that constitute the majority of users of desktop Windows. This has created an opening for consumer-centric Apple, who has created a team of people plugged into the needs of non-technical users. That's an important issue that Microsoft needs to resolve, and a lesson to be drawn from their experience of Vista, as well as their competition with a newly-resurgent Cupertino-based competitor.

Limitations aside, the "dog food" approach to software development is still highly effective for Microsoft, particularly as they are a company who tends to make the tools that others use to build higher-level solutions. More rigorous enforcement of that principle, I think, would help Microsoft considerably, which is the nice way to say that I think Microsoft has failed to "dog food" some critical technologies, which is weakening their attempts to popularize them in the marketplace.

I can think of certain products that aren't used extensively within the company, and should be. But more important to me as a developer who prefers the .NET approach to software development, however, are the technologies released as part of the .NET 3.0 package, and in particular, Windows Presentation Framework (WPF).

WPF was designed as a modern replacement to the legacy WIN32 user interface technologies. Unfortunately, as Peter Bright in a long response to a previous article noted, there is a dearth of WPF-oriented applications made by Microsoft. This leads to justifiable questions as to whether Microsoft truly considers WPF the future of user interface development atop the Windows platform.

Microsoft would go a long way towareds making WPF the de facto standard development technology for Windows if they started churning out large numbers of applications that use the technology. If they aren't willing to do that themselves, why should Microsoft expect the wider world to embrace WPF with any more enthusiasm?

Pushing WPF more strongly among their own products would certainly help to popularize Silverlight, built as it is on a subset of WPF and thus serving as a point of consistency between desktop development and Rich Internet Application (RIA) development. On that note, If Microsoft doesn't aim to make Silverlight spread from desktops to TV Set-Top Boxes and portable devices - all properties in which Microsoft has a strong showing - then Microsoft is fighting RIA-dominant Adobe (with its Flash product) with both hands tied behind its back. "Dogfooding," in other words, should apply to more than just desktop-oriented products.

Microsoft needs to be the canary in the mine for its own technologies, which sounds less dramatic when you consider that that canary owns the mine, is super-smart and has the ability to rapidly put together air filtration systems to clean up any dodgy air it might find. Pressure to achieve this goal can only come down from the center, I believe, which is why I think there needs to be a strong voice at Microsoft that creates a coherent story for the platform as a whole, and guides the technology directions taken by individual divisions.  If there is no strong centrally-managed technology vision, then you can't complain when people fail to adhere to it.

I remember broaching this concept to friends and colleagues at Microsoft before I left, and though the response from most was positive, some stated that they liked the Microsoft hands-off approach to development. I am not, however, so sure that the current hands-off approach is the way Microsoft has always operated. In a response from Bill Gates to a Thinkweek piece I wrote (the nature of which I am not at liberty to share), I came away with the strong impression that there was once a time that there was strong pressure on new divisions to leverage and promote technology created by other divisions, and that this had become a problem over time. This was why XBOX had been freed to chart its own path, in hopes that the demands from other divisions wouldn't strangle Microsoft's attempts to pose a credible competitor in the console gaming space.

It's one thing to prevent MSN content properties from trying to get space on the XBOX blades for their own products. Its another thing, however, for XBOX to be allowed to disconnect in any appreciable way from the wider Microsoft product ecosystem.

Microsoft, again, is a platform company. It works best when everything they build is an extension of that platform, not just because that makes the platform as a whole valuable, but because it leverages the unique investment in software platform expertise that the company has built over the years.

Topics: Software, Enterprise Software, Microsoft, Operating Systems, Software Development, Windows

John Carroll

About John Carroll

John Carroll has delivered his opinion on ZDNet since the last millennium. Since May 2008, he is no longer a Microsoft employee. He is currently working at a unified messaging-related startup.

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • Giving up advantages

    The counter, John, is that MS developers aren't restricted to only using the capabilities provided to their competitors. In-house software can bypass the public APIs, for instance, to use higher-performance methods -- one of the keys to shutting down WordPerfect.

    The same goes for WPF. It adds a lot of overhead to UI processes that MS developers don't need and don't have to put up with. When the day comes that MS closes off access to MSWin32 system calls and requires WPF for third-party developers it's a [b]very[b] safe bet that their own development staff will have backdoor access to low-level functions.

    Again, that's part of the payoff for owning the platform and it's a major competitive advantage. MS is [u]not[/u] a company given to passing up competitive advantages.
    Yagotta B. Kidding
    • Do the Justice Depts of the world know?

      Using hidden aspects of Windows to advantage Microsoft's own applications has been disallowed and behavioral remedies including disclosure demanded.

      Isn't this stratagem as obsolete as charging OEMs for units sold with other operating systems?
      Anton Philidor
      • Really?

        "Using hidden aspects of Windows to advantage Microsoft's
        own applications has been disallowed and behavioral
        remedies including disclosure demanded."

        I can't find these in the DOJ settlement, please help:

        We can of course look to the EU which did demand
        documentation of a small subset of windows interoperability information. We all know how that went;-)
        Richard Flude
        • Are 385 Windows API's and protocols sufficient?

          From a news story in 2002:

          In an effort to comply with its proposed consent decree with the U.S. Department of Justice, Microsoft (NSDQ:MSFT) announced the official enactment of uniform licensing terms for OEMs on Aug. 1, and an expansion of its technical disclosure efforts including plans to reveal 385 additional Windows application programming interfaces and proprietary communications protocols.

          Microsoft plans to publish hundreds of new, previously secret Windows 2000 and Windows XP APIs later this month, royalty free. About 100 proprietary communication protocols will also be disclosed but available to competitors and others for a licensing fee beginning Aug. 6, said Brad Smith, senior vice president and general counsel of Microsoft, during a conference call on Monday. He noted that the price list will not be published but is not intended to be a big revenue generator.

          As I recall, when issued the API's were not very significant to competitors. But the company's generous heart was obviously in the right place.
          Anton Philidor
    • I really think exaggerate the whole "secret API" thing. I've found nothing in Microsoft's products, both before I worked there, while I worked there, and now after, that can't be replicated with some hard work.

      There really isn't any such thing as a secret in software, a fact about which I'm sure you well know. Books are published about "undocumented" APIs, and most of what I've seen is stuff that I wouldn't want to use directly, anyway.
      John Carroll
      • No advantage to have products to market before...

        the competition?

        MS is able to builds products before others have access to
        the API. This was used to great effect during windows 3 development. MS regularly moved developers between OS
        and productivity groups so they were able to release their
        productivity apps simultaneously with windows,
        months/years before other companies were able to.
        Richard Flude
        • Don't see how

          Most beta programs for an OS as big as Windows (server or desktop) last well over a year. With MSDN subscriptions, you even get monthly builds of the latest version of an evolving beta operating system.

          I think your information is 15 years out of date.
          John Carroll
      • Can't use undocumented APIs

        You more than exaggerate the "secret API" thing -- you invent it. Microsoft actually has strict controls that prevent the use of internal Windows APIs by anything that isn't part of Windows.
        • Then we agree...

          ...I'm assuming your comment was meant for Yagotta.
          John Carroll
          • Yes

            Was meant for previous poster. Just adding on to what you said. Sorry for any confusion.
    • Gotta cling to that old saw eh?

      Please, that's so old.
      As far as "When the day comes that MS closes off access to MSWin32 system calls and requires WPF for third-party developers", I'll tell Chicken Little you are stealing his theme.
  • User interfaces are a specialty

    If Microsoft is ignoring the results of the work of all the people (including anthropologists) hired to study and improve the human/computer interaction, then the company deserves a substantial loss of business.

    You wrote:

    Having the geeks at Microsoft using a consumer-oriented operating system, however, is less effective at working out issues that affect non-technical users, as geeks are a more knowledgeable user group than the non-geeks that constitute the majority of users of desktop Windows.

    [End quote]

    The "geeks" may provide information useful for selling other "geeks", but I they're not the whole source of information about response to the interface. Especially because the primary finding is probably that "geeks" want the operating system to do less for them.

    There has been a great deal of discussion about making obsolete the desktop/folder/file model now in use. I don't think decisions about that will be made on the basis of Microsoft employee reactions.
    Anton Philidor
    • Re: User Inferaces...

      [i]There has been a great deal of discussion about making obsolete the desktop/folder/file model now in use. I don't think decisions about that will be made on the basis of Microsoft employee reactions.[/i]

      I don't mean to imply that "dogfooding" is the only recipe for success. It is just one of many items on the list of things to which Microsoft must attend, IMO.

      As you note, geeks are not the source of great user interface ideas, and that's where Microsoft needs to improve the most. Dogfooding doesn't apply so much to that, a point I made in the post.
      John Carroll
  • Skunk works

    Many times experts have been allowed to work outside the usual framework to see what they come up with. Inventing a better wheel included.

    If it worked for Walt Disney, why shouldn't it work for Microsoft?
    Anton Philidor
    • To some extent, yes...

      ...but I think that puts too rational a spin on the state of play at Microsoft. They have a huge R&D group devoted to nothing but dreaming up cool new ideas about UI, frameworks and protocols. I think their product groups, however, should march in a more regimented line.

      Like I said, I do believe that that was the state of affairs at Microsoft in the 1990s. Size seems to have allowed things to wander a bit more.
      John Carroll
  • They are using WCF all over the place tho

    I find it amusing the other day one blogger here thought MSFT has been ignoring SOA.
    • True enough

      ...then again, WCF is a much easier shift than WPF. WPF requires a new way of thinking about UIs, which is hard, but its in Microsoft's interest to encourage it.
      John Carroll
  • WPF!? What about .Net generally?

    There is very little from Microsoft that uses .Net, let alone WPF (which of course implies .Net usage).

    The one shining exception is the Expression suite of products, which are use both and are very good.

    Sceptics might say that the easy of decompilation is something that Microsoft considers acceptable for third party devs, but they don't want their own stuff subject to the derision of any zealot smart enough to download a copy of Reflector.

    I think .Net is great technology, and Microsoft backs it superbly in terms of providing developer support, but it would gain huge amounts more credibility if they not only used it far more themselves, but also they paid more than lip service to what Miguel is trying to do.

    Oh, and update the ISO standards, including all aspects of Silverlight.
  • I agree and Office is a perfect example

    I have been having a running battle with MS over the huge issue of deploying Offie add-ins to machines with multiple users. (Each user must install Office add-ins and then register each user if registration is required.) It a HUGE pain point for third party developers as well as end users.
  • More than software

    "Eat your own dogfood" is the doctrine that vendors should use their own products in preference to competing ones, as the most reliable means of insuring quality. Thus, MS (which has long practiced this) uses MS software in its internal operations, and the FSF uses free software (according to their own definition) wherever possible. But an automaker is also eating its own dogfood if it uses their own vehicles internally (wouldn't it be strange for a Ford to be hauling GM vehicles?) and one can think of all manner of other examples.

    To me, it's a matter of simple integrity; a vendor cannot reasonably expect his customers to do what he won't do himself and should never sell goods or services he cannot conscientiously recommend to others. It's also a good way of insuring that product lines don't turn into neglected stepchildren.

    This is one of very few aspects of MS I've always admired. While there are very good reasons to be familiar with what the competition offers, I think that a vendor's own offerings have to be given primacy.
    John L. Ries