Windows Core OS and Windows Lite , some ideas to consider

Small bits of information are coming out about what Microsoft calls Windows Core OS and also Windows Lite. We will have to wait and see what these will purport to really be, but it doesn’t hurt to offer Microsoft some suggestions of what would make them truly useful operating systems.

The key is the devices the OS will be designed for.

Rather than think in terms of what features they should add to the OS, one should start with the possible devices it could be used for first. From this programmers perspective, Microsoft should try to think “outside of the box” rather than simply copy what everyone else is doing. Windows on a phone hasn’t been that successful, since phones need very special features, plus a strong consumer oriented app store with the kind of things most phone users expect today. Android and IOS would be hard to compete with there.

Why is Windows so challenged when it comes to the consumer phone market ? Well, Windows has a long history and that history is more closely tied to business use rather than consumer use. Once mobile phones came along, consumers didn’t need PC’s anymore. But Windows weakness here may also be its advantage. Why not consider all the possible uses for Windows, not typically associated with consumer style applications. Forget Facebook, Instagram, Twitter and all the fluff consumers are most concerned about.

So what kind of devices are left if one forgets about mobile phones, aside from PC’s ? Well the answer is quite simple. What is the opposite or play or fun (typical use for phones) ? Work !, Yes, work ! Now work need not simply be about business. Education is a form of work. Yes, learning how to do things, as well as learning how to make new things. So consider the more work oriented aspects of education. While hobbies are usually about fun, many hobbies are about work in the essence of inventing new things. Yes, today they call that the “Maker” market. Then of course there is business, but for business what devices need to be better tapped into aside from the typical PC ?  The Internet of Things is one. Building tools and machines is another. Things like robotics, smart “tools” (a tool run by a computer), data tracking (not people, but things in business), etc.

So, let’s rethink the devices.

So what kinds of devices would a programmer like me like to see Windows work on ? The first thing is to start thinking small, rather than big. The maker market is huge today and that market is creating all sorts of new markets as it creates new things built upon the devices created. The Raspberry PI is a down right success. Yes, even industry is taking hold of what started simply as a learning experience for young makers. Why hasn’t Intel produced a low cost Raspberry PI style board using the Atom SOC yet ? I am not talking about a $100 Lattepanda or similar board running full blown Windows, but a real low cost (say about $30) “maker” board. Small or even tiny x86 boards capable of running a “Lite” or minimal version of Windows could be a huge boon to the Internet of Things and the “Maker” markets. Imagine even building so called “Smart” tools which actually run a form of Windows. But now you might say, “that is not possible”. Well, actually it is and Microsoft may not even realize it. Why ?

Object Oriented and Scripted Programming Languages have choked the raw power of Windows.

The raw power of the CPU (or SOC) is lost by bloated software (aka. OOP) and scripted languages replacing native compilers. The promises of OOP of reusable components and easier software development have simply failed to produce the kind of software needed for tiny devices with minimal hardware. Yet, Windows at its core (get the pun, aka. Windows CORE) is still a procedural style API (aka the WIN32). Now correct me if I am wrong, but there are only two possibilities for how Windows works under the hood:

(1) Frameworks like Dot.net, XAML, WINRT, etc are totally separate from the WIN32 and this would mean the WIN32 could simply be removed totally from Windows, leaving the others behind, which would make Windows leaner.

or

(2) Such Frameworks are built on top of the core WIN32 API. If this is the case then the leanest part of the core of Windows “is the WIN32 API”. Now if this is the case, then the WIN32 “is” Windows Core or Windows Lite. The key here would be to concentrate on the WIN32 and try to find ways to make the frameworks on top of it leaner (one could cut down some of the bloat of dot.net, etc.).

My best guess is the latter is more likely. If so, why not rethink how to tap into the WIN32 better and how to improve it.

Not practical you may say ! Actually it is more practical than one may think. I know, since for the last 20 years I have been building and procedurally based GUI framework based only on the WIN32 and the results have been simply amazing. What results ?

Procedural Frameworks based on the WIN32 are literally “tiny” in comparison to their OOP based counterparts. Native code compilers using such frameworks produce lightning fast software, even on the most limited of hardware. The size of such applications is downright tiny even in comparison to todays scripting languages (which usually require a pretty hefty runtime).

Now rethink the core OS and add new things for the new devices

I think it is time for Windows to add GPIO as a standard part of the operating system. No complex drivers. Just define a standard for GPIO hardware and then implement GPIO functions (simple, none OOP based) into the WIN32. The standards likely already exist in things like the Arduino, Raspberry PI, etc boards which are so dominate today. Standardize the video drivers too. In the Intel world, they already have standard graphic hardware integrated into many x86 boards today. Small devices need only minimal video capabilities.

Provide better and simpler tools for writing software for Windows Core or Windows Lite. Not Visual Studio ! That is overkill and too bloated. Create simple tools which can even run on Windows Core or Windows Lite with minimum hardware. Can’t be done you say ? I don’t think that viewpoint will “hold water”, since right now I personally use a native code 32 bit compiler (BASIC) and my own GUI framework with its own visual designer and the whole thing doesn’t take up much more than 20 megabyte of disk space and it will run on the least possible hardware available today which can actually run Windows 10 and likely much less. So I know it can be done, it is just whether those who build software development tools are willing to do it.

Remember, the idea of a “Core” or “Lite” versions of Windows means less, not more. It means minimal specs for the OS, not the max. So of course this would mean the OS would be designed for minimal hardware rather than leading edge hardware.

I have a test for Microsoft

If you are working on a Windows Core or Lite OS, then try the following test. Download my test app, which is built upon only the WIN32 and see how well it runs on the most minimal version of Windows you can create (which still has WIN32 support). Try it on the slowest CPU/SOC you can and with the least amount of memory. You may be surprised at how well it still runs even with minimal hardware.

Download WIN32 Test app:   http://cwsof.com/download/testwin8.zip

Now if your device (and OS) don’t support OpenGL, then simply delete the file ,  ezgui5gl.dll   . The framework used should ignore the 3D requests, if that DLL is missing.

This app has been tested on older versions of Windows as far back as Windows 95/98 with very limited hardware by todays standards.

The app does not use any dot.net, no MFC, no ATL and no C/C++ runtimes. Just the WIN32 (and OpenGL for 3D).