recently I had a discussion with students around computer science. Suddenly I became aware: There are some untold tales of Windows. Maybe I should start to do something about it;-)
The Tale of the OS Builder
Let us assume for a moment we are designers of an operating system. Our operating system has one central thing to deliver: It shall provide super-luxury containers for applications to live in. Those containers should be easy to manage for the user but on the other side the containers should be super super luxury for the application. The more the OS offers the less the app must bring in and the more synergies can be found.
So beside lots of different services there is one very special one…
Configuration is a treasure…
The OS itself but also nearly every application has its own configuration. In former times every app had its own way of describing this config in its own location. Well, I don’t have to describe the disadvantages, right?? Then OSes offered a common place to store it, still the format was open (Sendmail.cf is a killer example). Then there was the idea of having common format (in Windows 3.11 the famous ini-files). OK, nice… but let us take the satellite perspective and ask our self: What would be an optimal solution?
Support of Data Types: Configuration comes in different data types. There are integers, string, binary… if the configuration store would enforce the format it would kill a typical source of errors.
Support of Different Sources: In a multi-user system we need to have a common, global part of the store and a user part. The user part should move with the user.
Organization in a Tree Structure: How can the configuration data be organized? Well, the easiest way would be to have a tree structure and each entry identified by a unique path in the tree.
Support of Access Rights and Observation of Access and Changes: Multi-User system needs that.
Fast Access for Apps: The configuration store will be accessed very often so it is certainly good to have it in fast access for apps. Compile it for example.
Support for Management over the Network: It would be nice to have the chance of providing configuration over the network. So we have three sources of configuration: Machine specific, user specific and administrator provided. All combined should result in the final config.
Hard to Access: Ey…why this?? Well, the configuration of an application should be changed through the application first. Only the app can ensure that the value is of any sense. Therefore the access should be not to easy…got my point??
Well, tada… here it is: The well known, often beaten upon