[Mono-list] Helping out Windows Developers
monkey at jpobst.com
Mon Oct 30 21:08:59 EST 2006
[MonoTODO("Help out Windows developers")]
I was fortunate enough to speak with several Windows developers at the
Mono Summit about their experiences using Mono coming from a Windows
background, and what needs to be done to make it better.
Covering the 80/20 case, I think the following assumptions can be made:
- Developers are primarily concerned with their apps running on Windows,
but would like their apps to run on Mono/Linux if there is little to no
additional development work required.
- Windows developers are not interested in switching to Linux, or
SharpDevelop, or MonoDevelop. They want to program in Visual Studio on
Windows, that is, using the tools they've used for years and are most
- Windows developers are not interested in learning how to use the
various Linux tools like svn, make, yast, apt-get, rpm's, etc.
- Windows developers are not interested in Gtk#. Since the primary
concern is their apps on Windows, Gtk# is not useful. (Gaim on Windows
sticks out pretty bad.)
Obviously, there are exceptions to the above, but for the 80% case, it
So, things that can be done to help Windows developers use Mono:
- Paco's VS plugin
I had never really looked at this, as the name (VSPrj2Make) implies it
isn't useful to the 80% case (no interest in make). I don't really have
any use for most of the features, like making make files or
importing/exporting MonoDevelop solutions, but there was one feature
that I saw that is an absolute must have: the "Run In Mono" toolbar.
The Run in Mono button removes the need to find the mono command line,
and call mono on wherever your assembly happens to be. I think this
feature absolutely needs to be ported to VS2005, and renamed something
more like "Mono Development Plugin" or something. The other features
can come along for the ride if they are ready, but I need this feature
in VS2005 today. :)
Great work on coming up with that Paco.
- Mono Not Supported / Implemented rules
Another great idea I heard was creating something to analyze assemblies
for things that are not supported in Mono yet. Most likely this would
be a part of Gendarme (if it runs on Windows?).
Some portability rules would be:
- Calling methods that do not exist in Mono (useful for seeing what
2.0 features you use that mono does not have yet)
- Calling methods that are marked with [MonoTODO]
- Calling methods that throw a NotSupportedException
Ideally, this would exist in the above VS plugin. At the very least, it
should produce a report listing the errors. More advanced, and if
possible, some sort of integration to take you directly to places in
your source code, or mark them as warnings on compile.
- Mono VMWare Image
First off, thanks to Wade for this. This is so much easier than trying
to install Linux and then Mono. The issue is that it is always out of
date. The most immediate problem is that there isn't an image for
1.1.18 yet. However, even after that, the problem is that Mono
(especially winforms) moves so much faster than Mono releases. I tried
to build mono from SVN inside the VMWare image without success. At the
meeting, Wade informed me that all the things needed to do that had been
removed to make the image smaller.
Since the answer to most issues is "Try SVN", we need a simple way to
update mono in the VMWare image. This can be:
- Applying a nightly build to the image.
- Downloading and compiling SVN.
Either way, this just needs to be a button on the image desktop that
does all the work for you. That is, click the button titled "Update
Mono to latest version", wait for the command window to stop scrolling
and say "It's done, press Enter, and have fun".
- Run in Mono on Linux (or SLED)
This is something that Miguel discussed before the event. The basic
idea would be an option on the VS plugin called "Run in Mono on Linux"
which would start the VM image (if not already running), contact a
daemon or something in the image, and start the current VS project
inside the image. This way Windows developers can test their app on
Linux with one click, just like they do to test it on Windows.
Obviously, the technical logistics of this are probably a nightmare, but
it would certainly be very helpful if it could be done.
I think one of the most important things I came away from the meeting is
Miguel's sincere commitment to courting Windows developers for Mono.
However, I think there are roughly zero (?) Windows developers on the
Novell team, so they don't really know the way Windows developers work
and how they expect things to work. They were very actively seeking
feedback from Windows developers. The above is a start. Please be sure
to add yours!
More information about the Mono-list