Microsoft WebMatrix is a platform that allows you to easily install and customize web applications running on your server. It’s mostly a superset of the Web Platform Installer (WebPI) and includes tools like an editor for HTML and ASP.NET files and a utility to deploy to remote servers.
The main point of WebMatrix is that it’s connected to a library of web applications (called the Web Application Gallery) so you can easily install them from one central place. The tool downloads and installs dependencies automatically, which is very cool because no one wants to go hunting the right version of a library or database server or whatever, right?
The problem is, the whole thing might look good for end-users, but is a mess for developers. ScrewTurn Wiki is available on WebMatrix/WebPI since the very first release of the tool in 2009, too bad we haven’t been able to update it to the newest version in 6 weeks now. The process for submitting an update looks like this:
- You build a package according to the documentation, which is entirely about WebPI and makes no mention whatsoever of WebMatrix – they’re perfectly compatible they say.
- You place the package somewhere on the Internet.
- You update the package URL and checksum on the Microsoft.com/web control panel and then wait for approval.
- Someone in the testing team at Microsoft discovers a problem with the package – something that doesn’t work right in a specific WebMatrix scenario you didn’t even know about.
- You respond you can’t really understand where the problem is and ask for clarifications and then wait.
- There’s no step 6. You’ll wait forever.
But wait, there’s more! ScrewTurn Wiki supports multiple storage engines, namely a file-based engine and a SQL Server-based one. We used to have a package that allowed to chose which engine to use during the installation. At the time the WebPI tool insisted in downloading SQL Server Express even if the user chose not to use it, and even if there was SQL Server Standard/Enterprise installed already. But that’s not the point. One day, some 6 months ago, the file-based option simply disappeared for no apparent reason, without us modifying our package at all. The MS team responded it was an error on their side and that they would fix the issue in a few days. Well, we’re still waiting for the fix.
I never wanted to dig deeper in the details of the whole thing as our goal is building a great wiki application, not fighting with this kind of issues. Interestingly, the Web Application Gallery only has a few dozen applications, which are certainly not updated more than a few times a month (or year), and the only reason it takes so much time to get approved must be that the testing team is understaffed and/or inexperienced and/or incompetent. I can’t imagine spending more than a few hours to test an application with the help of a few pre-configured virtual machines. I’m also quite sure that it would be possible to script the entire testing procedure and execute it in a matter of minutes.
The Big Picture (Sort Of)
The only reason why developers want their web applications in WebMatrix/WebPI is visibility. This is fine, it makes sense. It’s the same reason why in the end we’re not giving up on WebMatrix, also because we’re in constant contact with people in Microsoft whose sole goal is making the .NET web ecosystem a better place. But a small dose of constructive criticism is always good.
It turns out, sysadmins don’t really like WebPI for the very reason it installs a boatload of stuff that’s not needed.
When something went wrong with a ScrewTurn Wiki installation, I used to suggest WebPI as the Magic Tool That Would Configure Everything Automatically (TM). No one really liked this suggestion for the very reason it reduces control on what is being installed, and that’s fatal for an admin’s heart.
WebMatrix is purposely built to allow end-users to modify application files. There are countless reasons why this is a very bad idea, but I’ll mention only a couple:
- End-users have no idea about what they’re doing and there’s a high chance of breaking something.
- Upgrading to a new version is very hard as end-users have to manually re-apply all the changes to the new version.
So the idea behind WebMatrix is flawedeither at its roots (for allowing direct editing of application files) or in its implementation (for not providing a way to upgrade modified application files).
Another problem is that WebMatrix is trying to hide complexity that is still be there after deploying your favorite application. It’s not uncommon that a WebPI deployment of ScrewTurn Wiki fails due to some exotic server configuration. Installing and administering a web application is not a trivial task and should not be done without some experience. The result of this is people asking help because the application displays a Yellow Screen of Death, without the least idea on what it means or how to investigate the problem. Remember, web applications are complex and are usually not meant to be installed by end-users, but rather by server administrators.
Good Idea, Mediocre Implementation
Microsoft’s goal behind WebMatrix, WebPI and the Web Application Gallery is simple: increasing adoption of Windows Server and .NET. The story behind it is also simple: make users and developers happy by providing a way to install web applications easily so they can be used immediately.
I have the strong impression that if you are experienced enough to know what are a web application and a web server, and specifically IIS, then installing one the good old way is not a big deal – quite the contrary, it even feels better for many (let alone the fact that installing is not the problem, but rather upgrading to new versions – problem that is not resolved by WebMatrix/WebPI). Thus we must conclude that WebMatrix/WebPI is aimed at people who don’t really know about installing and configuring web applications.
Question: wouldn’t they be much happier with a hosted service?
I think so. Even for developers like me, hosting a blog is a bit of a hassle, and in fact this one is hosted at Posterous, at least for now.
I’m not sure if it’s official or not, but as a matter of fact Microsoft is working with web hosting companies to provide hosted versions of web applications to end-users. This is done with WebPI-like tools (MSDeploy), that are transparent to end-users and, given a controlled environment, are extremely robust and reliable and would give access always to the newest version of the application. I believe this is the correct route: making web applications available to end-users directly at their favorite host or, even better, on Windows Azure. Wouldn’t it be great if there was a way to insert your credit card number and then get ScrewTurn Wiki up and running in a few seconds on a highly-scalable and reliable cloud platform? That’s my dream.
Microsoft had an interesting idea with all this WebPI/WebMatrix stuff. It is tackling real issues about installing web applications, but I’m afraid that few are paying attention and the many problems of both the approach and the implementation aren’t helping. The brand new Visual Studio LightSwitch is somewhat similar to WebMatrix: it’s very interesting on paper, but no one cares.