"As we don't want to spend time synchronizing the windows build system with the MS Dev build system we decided we should continue to use the Makefile (and not convert it to something MSDev can understand). Then you need sh, and either you take cygwin or MingW. The latter is more performant and less intrusive, it can be packaged the way Gordon did without side effects to an existing installation." - Axel
Basically C++ is quite portable cross platforms. Unfortunately, the build system is not. ROOT's build system is Linux centered (Makefiles). On windows the ROOT team uses the same Makefile to do the building that they do on Linux. This means there is only one thing to maintain -- which makes life a lot easier. So, if we wanted a full-on MSVC project we'd have to translate those Makefile instructions. Unfortunately Makefile's are a full programming language - so we'd have to code a full interpreter. That is a lot of work...
Well, yes and no. The tool supports generating files for the 2003, 2005, and 2008 versions of the IDE. However, each version requires a slightly different format of file -- so they aren't interchangeable! When you start up ROOT Builder it will guess what version of the IDE you want to use (the most recent available on your machine). If that isn't what you want, change the small drop down on the GUI. You can even generate for a version that isn't present on the machine!
There are some features that 2003 doesn't support. In particular, it isn't possible to specify environment variables in the IDE. Unlike 2005 and 2008, this means you must define ROOTSYS before you start the IDE. Please keep that in mind!
If you are running on Vista there is also the issue of privalages. You can easily build ROOT with 2003 in this case, but you won't be able to debug or even run ROOT from the IDE unless you start the IDE in administrator mode. This is easy to do: open the start menu, find Visual Studio 2003, right click on it and select "Run as Administrator."
ROOT is an SVN only project now. When trying to figure out what files should be included in the project I found a easy way to check what files are included in source control (the .svn/text-base sub directory). This seemed to make a lot sense for a set of candidate files to put in the project. Unfortunately, coding things up for CVS wasn't nearly as easy. Since CVS support will be gone at the end of November 2007, it didn't seem worth it to do the extra work as very few people will be using the old repository.