On Killing WIN32?

Many years ago I used to be a dedicated reader of Ars, but it slowly transitioned to something a little too biased for my taste, so I avoid it, but thanks to twitter, it is possible to get sucked into a highly controversial article: "Tim Sweeney claims that Microsoft will remove Win32, destroy Steam".

My take on this is quite simple. Everyone in this industry who has lived long enough to have programmed in the C64 era, has witnessed a universal truth on every mass market platform: the freedom and access to the computer by the user or programmer is reduced annually at a rate which is roughly scaling with the complexity of the software and hardware.

The emergent macro level behavior is undeniable. Human nature is undeniable. It is possible to continuously limit freedom as long as it is done slowly enough such that it falls under the instantaneous tolerance to act on each micro-level regression of freedom. Or translation, humans are lazy, humans adapt fast, and humans don't live long. Each new generation lacks the larger perspective of the last, and starts ignorant of what had been lost.

The reason why computers and freedom are so important is that computers are on a crash course to continue deeper and deeper integration with our lives. I believe ultimately humans will transcend the limits of our biology, blurring the lines between the mind and machine. Seems rather important at that apex to have the individual freedoms we have today, the privacy of our thoughts, etc.

In the short term as a developer I'm also somewhat concerned that the infants that will grow up to replace the generation I started in, will have the same opportunities I had, the same ability to get access to the hardware, to have the freedom implement their dreams, and to if they choose to, make a living doing so, in a free market, controlling their own destiny, selling their own product, without a larger controlling interest gating that process.

WIN32 is one such manifestation of that freedom.

There are some very obvious trends in the industry specifically in the layers of complexity being introduced either in hardware or software. For example, virtualization in hardware mixed with more attempts to sandbox software. Or the increased distance one has to the display hardware. Look at VR, you as an application developer are locked out of the display, and have to pass through a graphics API interopt layer which does a significant amount of extra processing in a separate process. Or perhaps the "service-ication" of software to subscription models. Or perhaps the HDR standard removing your ability to control tone-mapping. Or perhaps it is just the complexity of the API which makes it no longer practical to do what was done before, even if it is still actually possible.

Following the trends to their natural conclusion perhaps paints a different picture for system APIs like WIN32. They don't go away per say, they just get virtualized behind so many layers, it is becomes impossible to gain the advantages those APIs had when they were direct. That is one of the important freedoms which is eventually lost.

One of the best examples of this phenomenon is how the new generation perceives old arcade games. Specifically as, games with incorrect color (CRT gamma around 2.5 being presented as sRGB without conversion), giant exactly square pixels (never happened on CRTs), with dropped frames (arcade had crystal clear no-jitter on v-sync animation), with high latency input due to emulation in a browser for example (arcade input was instant in contrast), with more latency due to swap-chains added in the program (arcade hardware generated images on scan-out), with added high latency displays (HDTVs and their +100 milliseconds, vs instant CRTs), and games with poor button and joystick quality (arcade controls are a completely different experience). Everything which made arcades awesome was lost in the emulation translation.

Returning to the article, I don't believe there is any risk in WIN32 being instantly deprecated, because if that was to happen, it would be a macro-level event well beyond the tolerance level required to trigger action. The real risk is the continued slow extinction.


  1. Interesting read, thank you.

  2. Rather frustratingly, Microsoft doesn't seem to have taken any steps to fix the issues with WIN32 that are prompting them to try to supersede or layer over it. There are lots of things they could do that wouldn't break backwards compatibility such as sandboxing applications in isolated virtual filesystems or user profiles by default, and revamping to exclude slow/insecure/rarely-used/non-recommended functions.

  3. > Everything which made arcades awesome was lost in the emulation translation.

    Very, very true.

    By the way, you are not alone in your observation here.

    I have heard it countless times about how the new games are dumbed down in interface, usability, doability, complexity. The only thing that has improved are the rendering engines, the 3D looks, the graphics engine.

    Here and there there are a few exceptions such as third-party games; steam taps into this partially since some "hobby projects turned games" are available too; and of course crowdfunding.

    But on the general observation in how games have deterioriated in quality, I think it is a correct statement that the games in the old days were more complex and less streamlined.

  4. "Everything which made arcades awesome was lost in the emulation translation. "

    You might be accurate here, if emulation was all what you described. But it isn't, it has come a far long way. Especially Libretro/Retroarch. Input Latency for example has been beaten down to the point where the only large contributing factor now is your display. A lot of testing has been done showing near complete parity with the same thing on real hardware on a CRT.(CRTs may have been instant, but if a game was made a certain way, it could still have input lag.)

    To that end too, CRTs do not have perfect stutter free sync either if the game itself has issues(Which a great deal do).

    Anyone serious about this stuff too does not play poor quality browser emulation.

    First i've seen someone say games had incorrect color too, when people are trying to emulate CRTs with shaders,color is often trying to mimmick that of the CRT too.

    Square pixels? Depending on the display, the way it's set up with the adjustments and the system output. They most certain can be square.

    It goes both ways as well, i've seen a lot of shitty CRT issues and a lot of shitty arcade monitors over the years.