Microsoft WebMatrix: Epic Fail

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.

Webmatrix

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:

  1. 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.
  2. You place the package somewhere on the Internet.
  3. You update the package URL and checksum on the Microsoft.com/web control panel and then wait for approval.
  4. 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.
  5. You respond you can't really understand where the problem is and ask for clarifications and then wait.
  6. There's no step 6. You'll wait forever.
Insane.

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:

  1. End-users have no idea about what they're doing and there's a high chance of breaking something.
  2. 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 flawed either 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.

Ysod

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.

Thoughts On The Bitcoin Phenomenon

I've read Joannes' post and I admit that I'm intrigued by the concept of virtual currency - or actually crypto-currency. If you've never heard of Bitcoins, I'll explain them briefly.

In short, Bitcoins are a form of virtual currency and exchange system based on a distributed (P2P) network of computers running a small piece of open-source software. The key point is that there is no central authority and transactions are validated by peers in the network. Bitcoins are generated with a method called mining, which basically consists in consuming computing power to "discover" new blocks of the cryptography chain that keeps the network secure (this is vastly oversimplified). When you discover a new block, you are awarded an amount of Bitcoins, plus all transactions that are later processed using that block grant you a processing fee (very much like credit cards). The entire system ensures by design that there cannot be more than roughly 21 millions Bitcoins (to avoid inflation and favor deflation). Currently, about 6.5 millions have been mined. You can also purchase Bitcoins for real money (USD, EUR, etc.) via brokers/traders/exchanges. Bitcoins are "stored" in digital wallets. At the current state of a system, such wallet is nothing more than a file on your hard disk. The system's cryptography and hashing algorithms ensure (theoretically) that it's not possible to forge money because no other peers in the network know about its existence and thus cannot approve any transaction regarding it.

Bitcoinlogo

As Joannes already pointed out in his post, Bitcoins have raised a variety of reactions but they seem to somewhat gain momentum. My initial reaction has been something like "Wow, cool, how does this work?". Then reality kicked in and I've spent some time learning the details of this new new thing.

Why I'm Putting All My Savings Into Bitcoin by Rick Falkvinge describes how the virtual currency value has improved 100,000% in 14 months. The guy allegedly invested all his savings into Bitcoin currency in the hope to cash it out later and make profit (in real dollars). Funnily enough, this has nothing to do with Bitcoins being a currency used to trade goods and services, but rather working just as financial speculation means. Nothing new here.

Why Bitcoin Will Fail As A Currency by a guy known as Tav, whose real name is too long and complex to write (his own words). Pretty superficial analysis that gets to the point: the system itself is created to favor deflation, meaning that at a certain point, 0.01 Bitcoins will be worth thousands of Euros, which makes the currency impractical to use (very much like banknotes with 1,000,000,000 printed on them in some African Countries subject to hyperinflation). Before switching to EUR, in Italy we had notes valued at £500,000 (worth €258.23). That was really funny.

Links.org by Ben Laurie reports a number of potential flaws and inefficiencies in the cryptography system used by the network. Mostly technical, but the key aspect in my opinion is that to mine all the 21 millions Bitcoins, we're using computing power, that is energy, that is mostly non-renewable resources like oil and coal. The funny thing is that as more Bitcoins are mined, the network will make it harder to mine for more, actually requiring more computing power. This makes the system resilient to people or organizations that want to get all the money, but it becomes actually a giant waste of precious resources. I couldn't agree more, as after all we're just moving bits around for no good reason (well, if you don't consider financial speculation).

An anonymous individual (did I mention I don't like nicknames?) keeps a blog and posts arguments in favor of Bitcoins. Some of them go beyond my comprehension but are interesting to read as counter-arguments presented in other places.

Last but not least, Why bitcoin will fail by Avery Pennarun is a very funny but practical analysis of why, allegedly, Bitcoin will fail as a currency. Trust me, it's very funny and worth reading. Key take-away point: Governments will squash it.

It turns out there is a large number of websites and real online businesses accepting Bitcoins for payments. I'm impressed (for real).

I don't have the knowledge nor expertise to judge the system economically and financially, but I'm tending to believe that this thing cannot work in the long run.

Leaving out all my thoughts about actual usability, security and perceived trust in the system by actual users, there is one main show-stopper in my opinion, already pointed out by Avery Pennarun: Governments will outlaw it. The very nature of the P2P distributed infrastructure makes it impossible to know what's happening inside it. It's impossible to track transactions back to individuals or businesses, as each of them simply has one ore more alphanumeric identifiers. As an example, in Italy it's already forbidden to pay something cash over a certain amount (€5,000 IIRC) for the very purpose of tracking money, know who should pay taxes and find suspect and illegal activities. That limit is going to be lowered further over time. Freelancers, in certain business areas, cannot accept cash payments over €250. Everything must be traceable. This an actual law, already existing and enforced in a EU Country. I'm not sure, but I guess similar regulations are present in most EU Countries and probably USA and Canada. For what I understand, and to avoid problems, I wouldn't even think about accepting Bitcoins payments, either as an individual or for my company. It's just too problematic, and frankly (so far) EUR has proven to be pretty strong a currency...

One major strength in the distributed nature of the currency is that Governments cannot physically shut it down, meaning that, whatever means Governments will find to block the protocol in a certain geographical area, the global network will still be working happily. This very fact is likely to get attention itself and cause trouble. Governments are scared of social networks and a distributed, non-traceable network for exchanging money will drive them nuts. The fact that you can still use Bitcoins even if your Country outlawed them makes you nothing more than a criminal in the authorities' eyes. Will it be worth the risk?

That said, it's so crazy it might even work.