This morning I decided to install Visual Studio 2010 on one of my development VMs. I have several processes in our production environment where, for convenience, I have SQL Server Agent calling batch files that call C# command line programs, VBScript files, etc. Some of these programs simply BULK INSERT log files into tables, or parse them and then insert selective and sometimes adjusted data into tables. I've finally conceded that maybe Adam Machanic is right, and that I should be using CLR for a lot more than I'm using it for now (RegEx pretty much sums it up).
I fired up the Visual Studio installer. I initially downloaded Ultimate from MSDN because I wasn't sure which features I'd ultimately need (no pun intended); in this case, it turns out that Pro would have been good enough. However, I didn't want to go and download a different edition, because that would have set me back a couple of hours. So I stepped through setup and chose these options (remember what I chose here, because this will come up in a minute):
Nothing crazy, actually very minimal. C#. That's all I need. After clicking "Install," the monstrosity before me was absolutely jaw-dropping. Maybe I haven't paid attention when installing Visual Studio 2005 or 2008, but on virtual machines I guess I've become hyper-sensitive to how much stuff gets installed, since I'm usually dealing with limited disk space on a single drive. This is the sum of what is getting installed on my system:
What is all this crap? Why do I not have the ability to opt out of things I know I will not be using, such as the sync framework, tools for Office runtime, tools for SQL Server Compact, and C++ runtimes? All I want to do is write C# command-line applications and assemblies, and I thought I made that choice pretty clear earlier in setup. Now my
Add/Remove Programs Programs and Features applet looks like alphabet soup; I have 27 entries that start with "Microsoft Sync" or "Microsoft Visual" or "Visual Studio." I know disk space is cheap – salt is cheap too, but I'm not filling my cupboards with it, and I'm not dumping loads of it on each meal, either.
I also noticed a similar trend in SQL Server. Not so much with polluting my system with components I didn't realize I asked for, but forcing me to install parts that I know I don't need. In SQL Server 2008, when you install a clustered instance, you cannot decline Replication or Full-Text Search – though you *can* decline them for a stand-alone instance. What is the logic behind this? Apparently the only one my colleagues have come up with is, "installing those components after the engine is in place is hard." So what? And what if I fully intend to never install those components? I realize they're not really enabled unless you intentionally turn them on. But on that clustered instance, about half of the rows in sys.databases say is_fulltext_enabled = 1, and half of them say is_fulltext_enabled = 0. So what is the real story here?
Microsoft wonders why they have problems making different programs interact well with one another. Maybe if they stuck to a mantra of minimal instead of smorgasbord installs, this problem would only be present in cases where someone installing the software decides they should check every single box imaginable. I reserve the right to shoot myself in the foot, but I certainly don't expect you to do it for me by default. But it seems like that is what it has come to.