Paco has been hanging out at the Mono booth at Brainshare And he
reports
from the event:
It has been terrific to see folks from all walks of life
approach the booth and come carrying the applications that
they are currently working on contained in an USB keydrive and
having us run it on the different platforms. To most of them,
they tend to be very dazzled when they see their WinForms
projects run on Linux (SLED 10) often without
modification. Some of the apps they have come talk about range
from GroupWare clients, Decision Support Systems (DSS),
Enterprise Information Systems (EIS) front ends (some web
based others SmartClients), etc.
Paco, an attendee and Wade in the Mono Booth.
A journalist asked Nat whether Mono would run OpenDental.Net, an open
source Winforms-based application for dentists. Nat SMSesed
me the question, I downloaded the software, took a quick
glance at what is needed (it will require replacing some
Windows libraries with some Unix-specific libraries and
renaming a few files to make bash happy for building on
Linux):
I emailed Jordan Sparks, Doctor of Dental Medicine and
developer of OpenDental and asked him whether he could make
the filesystem layout changes to ease the porting effort, and
got a reply back from him that same night. In his words:
I'm really a HUGE fan of what you guys are doing. It's going
to change dental offices forever, and it will impact a lot of
people.
My plan is to assist Mr Jordan porting his OpenDental
software to Linux. As I mentioned, it will require swapping
out a few Windows components he is using for the equivalent
Linux libraries. It will be educational. This along with the
PaintDot.Net porting effort should be provide some good
material for a .NET to Mono migration white paper.
In general, porting from .NET on Windows to Mono on Linux
has the same feel of porting across different versions of Unix
in the past. From BSD to SystemV: replace a few libraries and
routines with different versions. It is a relatively simple
exercise.
I find this very interesting. On of my dentists is also a
hacker on his spare time, and runs his office completely on
software he has developed using Visual Basic. On one of the
visits I made to his office, as I was being treated, he
explained to me with excitement why he liked working on VB:
the software that runs his whole office is something he has
built over the years. He does a lot of the coding himself,
but he loves to spice up his application by purchasing a third
party control for displaying graphs, managing his x-ray
images and track patients.
This is the kind of ease of use that we are trying to
achieve with Mono and MonoDevelop. Lower the barrier for
creating amazing applications on Linux.
MonoDevelop
MonoDevelop
was originally a project that was developed by Mono users.
Folks that wanted to have an IDE on Linux, so they ported
various pieces of SharpDevelop to Linux and replaced
Windows.Forms with our own toolkit Gtk#. The goal here was to
create a truly native Linux application and to take advantage
of Linux and GNOME specific features.
DogFooding MonoDevelop: using MonoDevelop to develop
MonoDevelop.
As time passed on, our own engineers started using
MonoDevelop. Lluis, better known for his work on remoting
and web services, started using MonoDevelop to work on Mono
itself. He developed a plugin that would allow him to build
and develop the Mono runtime right in MonoDevelop.
Around that time we decided that we should invest in
MonoDevelop as part of the efforts of the Mono team, for a few reasons:
- It was a great test of Mono and Gtk#
- Many thought that without an IDE, the full
potential of Mono would not be realized.
- We needed a place to integrate developer tools
that we had created and that we have planned (most
based on Gtk#):
- Stetic, our Gtk# GUI designer, originally
developed by Dan Winship.
- MonoDoc: although it is available as a
standalone tool, it makes sense to have it
integrated directly into the IDE.
- The ASP.NET
web page editor developed by Michael
Hutchinson the part summer.
- The Gendarme,
bug-finding and sanity-checking tool,
developed by Aaron Tomb and Sebastien Pouliot
(currently lacking a GUI).
- Integrate the Mono Debugger, which sports
a C# interface.
- NUnit
integration: full with progress charts.
Until December, we were using
Glade-3 for our GUI design needs. At that point we went
with Glade-3 as a short-term solution and because we felt it
was complete enough to be a drop-in technology into
MonoDevelop and had enough bits to allow it to be embedded.
But we soon realized that for a full integration we would
have to spend some significant developer time in getting it in
shape for integration into MonoDevelop. So we changed our
plans and Lluis started working on integrating Stetic and
finishing the missing bits in Stetic.
The upcoming MonoDevelop will contain a new Stetic-based
GUI designer. You can learn more on Lluis'
blog entry.
The Stetic integration is fantastic, these are some of the
features I like:
Custom Gtk# widgets that you develop appear on the
toolbox palette, and you can use these widgets right
into your main application if you want to. No
placeholders anymore.
A wizard for creating custom Gtk# widgets.
Double-clicking on events for a widget will create
a stub for the handler. For example, if you double
click on a button, it will create the
OnButton1Clicked method with its
proper arguments.
MonoDevelop also went through a major refactoring effort,
where the IDE features are all plugins. This is an idea
inspired by Eclipse's
implementation.
A new release of Mono and MonoDevelop will be coming out in
a few weeks with these features.
In the meantime, Chris Toshok has
started integrating Michael's ASP.NET editor into
MonoDevelop. So we will have an IDE that can be used for
doing smart client development as well as web applications all
in one: