Version 1 (modified by ibboard, 11 years ago) (diff)


Why .Net and not my language of choice?

I've been asked before about why I chose .Net/C# for WarFoundry. The following is a reproduction of my answer, plus any other reasons I think of at a later date.

Why .Net and not Java?

While I use Java every day at work, mainly through the powerful Eclipse IDE, I didn't want to use Java for several reasons:

  1. Java interfaces are damned ugly and don't integrate well with the desktop. The only solution is SWT, which is desktop specific and greatly increases the size of the download.
  2. Compiling Java down to a single JAR file involves the many joys of explaining to people either a) how to run a Java app from the command line b) or getting them to set up an association with .jar files. Based on other experience with computer game add-ons, there are more people than you'd think who have problems with even basic instructions.
  3. People using Java may still have Microsoft's Java JVM, which may cause problems (any time I've had an app not run under Windows it has been because of the MS JVM)
  4. .Net with System.Windows.Forms has no portability issues that I know of, it just doesn't look so pretty outside Windows.
  5. Java is a "one language, one VM" system, where as with .Net WarFoundry will be written in C# and other people can write plugins (like the Rollcall plugin) in any .Net language they wish.
  6. If you wrote it in Java then you could put it on PDAs if you wrote an alternate interface, since a standard app interface would be too big. Something similar should be possible with .Net as MS has the .Net Compact Framework for WinCE PDAs and it's probably possible to install Mono on a PDA (there's mention here which seems to imply a standard install works fine).

Why .Net and not C++?

  1. I don't know C++ and I don't intend to learn it for a hobby project
  2. It would force everyone else to know C++ as well
  3. Languages with higher levels of abstraction let you concentrate more on the application and less on the memory management and other low-level details
  4. The app would need to be built multiple times for different architectures/GUI toolkits

Why .Net and not Python?

While my work with Trac is getting me used to the idea of Python as a usable language (originally it looked too much like Basic) there are a few problems:

  1. As with C++, I don't know Python and you're forcing everyone who wants to contribute to use Python
  2. Python is new to the Windows scene and most people won't know about it, what it is or even have an installed framework. .Net is likely to be installed on a lot of Windows machines though, especially as people move to Vista/Windows 7.