A perspective: developers vs Microsoft

Most people understand that Windows is used by a variety of people who have a variety of needs, ranging from corporate server to workstation to POS terminals to home PC and beyond. Most people accept that whenever Microsoft updates Windows, it has to balance the competing requirements to find some kind of workable compromise. There is however another set of competing requirements that many do not really register, even those that call themselves power users or are IT admins. It is a conflict between developers/programmers and Microsoft itself.

Developers are ultimately the ones who write applications used by users whereas Microsoft develops the OS these applications run on. A common shared goal between the two is the desire that applications previously written continue to work. Users use Windows not to use Windows, but the applications that they need after all. Developers on the other hand have finite resources and time and the need to constantly tweak an existing program because of an unstable ABI/API is often an unwelcome distraction. Even worse for developers is when support for an API is eliminated outright, which would require a complete rewrite. Loss of a platform happens much less in the Windows world than in the open source world, and even there it is a rare event because of how pissed off the developers who make up that sphere would get. Developers also often want the platform that they are using to be continually updated either with bug fixes or new features to make certain tasks easier. Contrary to what many users might think, we generally want to be able to keep supporting our customers/users and want to add new features while keeping existing ones working. This task becomes very difficult however once a framework/platform is deprecated as certain things may simply not be possible without underlying upgrades.

Source

A Guy
 
Hi there
Over the years the idea of using sensible API's even for complex development applications as well as OS'es makes obvious sense since in theory you can make all sorts of underlying changes to the base product while keeping the external interfaces the same.

This is now routinely done in commercial complex software such as SAP where in the past people used to have to hack into the basic source system and insert their mods - so of course the whole system goes ape when an upgrade is done since the code the user modified doesn't exist any more or has been moved to another part of the system. The modifications are now sensibly done with what they call "Business Add Ins" where the developer can insert their functionality which will still work when the system is upgraded. Similar too for designing Addins for things like EXCEL / Photoshop or even browsers.

It's easier in testing too -- since you can start with "Dummy calls" which pass zero parameters just to see if the routines are called at the proper place and then gradually increase the complexity until the required functionality is built in. In a way it's a bit like OO programming.

By implementing consistent and stable API's Ms can make it much easier for almost any piece of hardware to have both drivers and application code to work with Windows - and also make it easier for the 3rd party manufacturers themselves to update their products with a reasonable chance of knowing they will still work.


The trick of course is in designing a decent and complete set of API's -- not easy but Ms are on the right track with this one.

Cheers
jimbo
 

My Computer

System One

  • OS
    Linux Centos 7, W8.1, W7, W2K3 Server W10
    Computer type
    PC/Desktop
    Monitor(s) Displays
    1 X LG 40 inch TV
    Hard Drives
    SSD's * 3 (Samsung 840 series) 250 GB
    2 X 3 TB sata
    5 X 1 TB sata
    Internet Speed
    0.12 GB/s (120Mb/s)
Back
Top