Summary:Let's pretend Microsoft decides to build a new consumer OS from scratch. How would you design your perfect operating system?
Leave suggestions under the appropriate headings. Add your username to the end. Discuss suggestions by adding sublevels of bullets.
General
* Based on Microsoft's
Singularity Project -
Suggested by jmacdonagh * A generic runtime which provides common runtime-type activities like managed memory or
JITting as part of the OS. Other runtimes (.NET, Java etc...) can then be built to take advantage of the generic runtime's minimal feature set.
Kernel
* Microkernel. Componentized. Patching the OS becomes much easier.
* The kernel itself is so small and efficient this OS would be used on all devices (Smartphones, SPOT watches, etc...)
Components
* The operating system would be aware of two types of files: applications and libraries. -
Suggested by jmacdonagh * Executable code will not be run until it is installed. -
Suggested by jmacdonagh * Installation of either is a simple as dragging the appropriate file (see below for the file structure) into a special Applications folder. Applications and libraries are automatically registered. -
Suggested by jmacdonagh * Installed Applications Manager. Display who installed each app, when it was installed, when it was last used, the names of the processes you'll see in Task Manager, and some simple attributes on how it ties into other systems: communication ports and protocols used (auto-detected), if it installs a Windows service or database, etc. -
Suggested by dvanderboom * Standard API for persisting configuration settings, user preferences, etc., so all installed applications could be queried for their settings during backup operations. -
Suggested by dvanderboom * Before installation of an application, it's depedencies are checked. -
Suggested by jmacdonagh * Dependencies include the version of the operating system, the type of the operating system (desktop, tablet, pocket pc, smartphone, etc...), other applications that need to be installed as well as their versions, and other libraries and their versions. -
Suggested by jmacdonagh * Before removal of an application or library, the user is warned if any other applications depend on it. Removing a dependency locks all applications that depend on it. The code is still there but it cannot be executed. -
Suggested by jmacdonagh * If a newer version of an application is installed, it overwrites the older one (by defaut). The user can choose to allow multiple versions of the same application to be installed. The applications themselves are designed and kept separate so no problem would ever arise. -
Suggested by jmacdonagh * Patches are in a script type form. For example, the script could specify to delete certain resouces an application has, add other ones, and patch binary data in the actual executable. -
Suggested by jmacdonagh -> That's what Windows Installer does
ZippyV
Applications
* Compiled applications are housed in a special kind of "executable" file. All resources that the executable needs are housed in these file as well. These files contain extended meta data including the developer, publisher, software name, version, etc... -
Suggested by jmacdonagh -> That's the exact purpose of a resource file.
ZippyV * These files similar to directories in that they can be browsed for all the resources it contains. -
Suggested by jmacdonagh * Add a CSDIL
USERPROGRAM_FILES for per-user software installation. Leverage HKLM registry virtualisation and Single Instance Storage to isolate user installs without wasting disk space or causing unnecessary collisions. -
Suggested by AndyC * There should be 2 types of applications (
Suggested by ZippyV):
* Applications that are installed in the
Program Files folder and need administrator privileges during install
* Applications that are installed in the
Users\username\Applications\ folder and do not require administrator privileges during install. Examples: Small games, single file applications (1 exe), non-trusted.
Libraries
* Libraries are executable code with no entry point that other executables require. Libraries must be signed and are stored in a state similar to the GAC. -
Suggested by jmacdonagh * Do NOT allow non-CA-signed libraries/executables mess with system folders. Better use "computed hash" named subfolders to "cage" them. -
Suggested by cheong
GUI
* Windows Presentation Foundation would be the only way to develop applications. Everything, even the GUI shell, would be programmed using WPF. -
Suggested by jmacdonagh * The OS would provide styles for the common controls. Users could design themes by defining styles for the common controls. -
Suggested by jmacdonagh * For kiosks etc... the administrator could specify to load the shell's GUI processing power, but load an application as its startup. Users of the kiosk would not be able to circumvent the kiosk's fullscreen application. This would work great for ATMS etc... -
Suggested by jmacdonagh * Designed by Jamie -
Suggested by Cybermagellan * UI SDK to include support for common document-based app concepts (Open/Save/Save As) etc based on derivation of an SDK object -
rossj * Undo manager built in to support Undo/Redo based on registration of delegates that are the inverse of the current command -
rossj * WPF++ to be more flexible, instead of (or as well as) easy to use -
rossj * Everyone should be able to create their own Windows theme
* Add the forgotten boot screen
Bundled Applications
General stuff
* Remove the word Windows from every bundled application
* Bring back Messenger (the simplified version of Live Messenger)
Internet Explorer
* Add support for:
* SVG
* MathML
* Support for .net plugins
Media Player
* Support more codecs (decoding as well as encoding):
* Ogg Vorbis
* Flac
* Theora
* Speex
* Xvid
* MP4
* H.264
* Much needed UI refresh
* Much better management of system codecs.
rossj * Provide new visualizers
* Remove the option "Start the mini Player for file names that contain this text", does anyone use this?
* Add option back to keep the Player on top of other windows ONLY when in skinned mode
* Remove the update functionality and let
WindowsUpdate handle it
* The function "Send media link in email" pops up an email window but is inaccessible when the player stays on top
* Skins:
* Where did the button went to switch to skin mode?
* Where is the button to choose a skin?
* Why are there only 2 skins available?
* Bring back the Quicksilver skin
Mail
* Minimize to notification area
* Provide Sidebar gadget that checks mail when the application is not active
Sidebar
* Support .net gadgets (or at least WPF/E if not full WPF gadgets)
* Provide development templates for Visual Studio