Metabase part 1
Some time ago I wanted to install that SMTP part of IIS. However since the original installation I’d changed the path of the default website (C:\inpub\wwwroot). As it turns out, when you install the SMTP engine it installs relative to the default website location. So if your default path was C:\foo\bar, it installs mailroot as C:\foo\mailroot.
This didn’t make a whole lot of sense to me, so I spent a good couple of hours working out how to change the path and ended up finding out that it was rather difficult to do unless Exchange is installed (Exchange uses IIS to send and receive emails). In the end I just bit the bullet, uninstalled the SMTP engine, changed the default website location, re-installed the SMTP engine and changed back the default location back. At the time it was a minor annoyance, but it all seemed rather inflexible.
Metabase part 2
The second brush was rather more recent and also rather more serious. At work we run a number of sites, each with their own subdomain. Each site has its own IIS site. Each site is made distinct by the subdomains or host headers. The problem came when I wanted to add a wild card ssl certificate, which could cover all the subdomains.
What I found was that there was no way to add a host header to an SSL enabled site through the IIS management tool. Someone suggested the following, which involved manually using the adsutil.vbs file to add the bindings manually. This is pretty annoying because to even add the header you need to find the ID for the site. This is only shown in the list of sites in the MMC snap in, not in the properties of the site.
Binary config files suck
This leads me to the inevitable conclusion that binary config files suck. This was driven home when I actually started playing with apache recently. What amazed me was how much simpler it was to configure and how much more flexible it was. One of primary reasons it was easier to configure that the config file was a text file. So here are a list of reason why binary config is so bad:
- The GUI almost always lags behind the config files themselves (as in the cases above), which means you can’t always edit the options through the GUI
- It is harder to script or program against. A text format (eg ini, xml) is designed to be programmed against, so it easy for another program to pull needed data from the file or update the file. If you go with a binary config file the developers of the product need to maintain an API on top of maintaining the GUI.
- You cannot copy out a segment of a binary config file and use it as the basis for another similar config. This makes it easier for someone to edit and manage their own sites. It also means that other people can post snippets of their config files to help others fix issues with their files. When someone is trying to get help with an IIS configuration they either need to write up text descriptions, which generally means some information is lost, or screen shots are posted, which is time consuming.
It is important to note that using a text format config file does not preclude you from adding a GUI to modify the text file.
The result is that binary config files mean that there is more work for all concerned:
- the programmers of the application
- the basic users
- the power users
Microsoft should take a clue from Linux and drop all binary config files.