MinWin, Windows 7 (and 8) and better modular design !
I came across some interesting information about something called MinWin which is in Windows Vista, Windows 7 and likely in Windows 8. I won’t go into details about what MinWin is, but if you would like to read more about it check out the following link:
http://arstechnica.com/microsoft/news/2009/11/inside-minwin-the-windows-7-kernel-slims-down.ars
In essence the idea is to have a top layer of the operating system which has no other dependencies and which can be booted without the rest of the operating system. MinWin ranges in the 25 to 40 meg size and it alone does not even provide a minimal GUI interface (text based, command line only). The concept makes a lot of sense and is very sound in my opinion, but I think Microsoft should go even further. They should be able to build a minimal version of the operating system which even supports basic windows and UI elements.
Windows has become bloated, which is why we get the current versions on DVD’s rather than CD’s today. There are too many services running in the background and when you break down the dependency tree for even an average application it is a veritable nightmare. Even an older operating system like Windows XP is a nightmare compared to say Windows 95. I find it funny when programmers talk about writing applications with no dependencies. Just take your EXE and then use the Depends utility (comes with Windows SDK) and see all the dependencies your little EXE really has. What is really scary is how some OS DLL’s, call other DLL’s, which in turn call other DLL’s, which in turn call back previous DLL’s and so on. You would be surprised at how many operating system DLL’s your application must load into memory just to run.
Let’s take a look at one application on Windows XP (Vista and 7 likely may be worse):
My Visual Designer (ezform5.exe) requires the following DLL’s:
kernal32.dll, ole32.dll, oleaut32.dll, user32.dll
plus the ezgui 5 runtime DLL which itself requires these same OS DLL’s plus:
advapi32.dll, comctl32.dll, comdlg32.dll, gdi32.dll, shell32.dll
Now when you examine each of these dependencies, they have dependencies which add more OS DLL’s which are:
ntdll.dll, msvcrt.dll, rpcrt4.dll, msimg32.dll, powrprof.dll, winsta,dll, wintrust.dll, secur32.dll, crypt32.dll, imagehlp.dll, msasn1.dll, netapi32.dll, ntdsapi.dll, netrap.dll, samlib.dll, ws2_32.dll, wldap32.dll, dnsapi.dll and many more ….
You can see the point here. What is the minimal number of operating system files necessary to be able to run even the simplist application ?
Do you know ?
I don’t. Now when we add all the background services running as well, we can see why so much memory is needed for todays computers running Windows. Do realize that when I first purchased a copy of Windows 95, I had it running with only 8 megabytes ram. Today, Windows 7 runs barely with 1 gigabyte of ram. For Microsoft to be able to target future low cost, minimal hardware devices (ie. Tablets) they really need to go a lot further than their MinWin project. The operating system needs to be modular in design, so they can actually have a minimal operating system with minimal window (UI) support which can fit on a small device.
One of the goals I have with my own software tools (ie. EZGUI 5.0 Pro) is minimal dependencies, small footprint and dynamic loading of less common features (so it can run with minimal dependencies when certain features are not needed). EZGUI packs into less than 1 megabyte of runtimes, what other frameworks might require 20 or 30 megabytes to do the same thing.
I applaud the MinWin objective, but they need to fo much, much further. If Windows 95 could run smoothly on just 8 meg of ram, then surely they can make a minimal Windows core operating system (with UI too) which can run say on just 64 meg ram or less.
Windows CE (now Windows Embedded) is such a stripped down minimal operating system, but it is not in the ‘consumer’ branch of the Windows CE operating system tree. It is rather in the industrial branch. I have programmed extensively with this operating system and it is truely wonderful. I love it. For reasons I don’t fully understand, it isn’t that popular. But its everything you are looking for Chris. Unfortunately, PowerBASIC doesn’t make a compiler for it; I use C or C++.