Mike MacDonagh's Blog

Somewhere in the overlap between software development, process improvement and psychology

Linux GUI Development: Monodevelop 2.6 review and screenshots

This blog is part of a series looking at programming tools on linux and covers MonoDevelop 2.6

MonoDevelop 2.6 is awesome :) I first tried MonoDevelop about a year ago and gave up quickly. It just wasn’t usable, but these days it’s a totally different story. I’m quite drawn to Mono and MonoDevelop because I used to be a .net developer and really like C# as a language.  Also as an old Delphi developer the .net framework has an intuitive design and structure since they were both designed in large part by the same guy – Anders Hejlsberg. I saw him present on LINQ in LA, he’s a clever dude.

Mono is an open source project to make .Net compliant tools, compilers, runtimes etc. able to run not just on windows, but on linux, android, mac etc. MonoDevelop is an open source development environment for Mono providing GUI designers and language support for C#, Java, Boo, VB.Net, Python, Vala, C, C++, Oxygene (Object Pascal based .Net language, though not available in the current version of MonoDevelop).

Installation

I was able to install it directly from the Ubuntu Software Centre, it ran straight away with no issues. Not quite 10/10 though. I tried to write a “hello world app”  and  it wouldn’t compile :( A quick google later and I found that the default .net framework target in the project options needed changing from 2.0 to 4.0 then it was fine. 9/10

First Impressions

Starting up MonoDevelop you’re greeting with a very MS Visual Studio like welcome screen with links to create stuff, recent stuff and web links. The IDE has a very solid and elegant feel, it doesn’t start with a million views and tabs like Eclipse, is visually pleasing (unlike Lazarus) and incorporates platform theming well (unlike Eclipse/SWT). 10/10

MonoDevelop Welcome Screen

GUI Designer

The GUI designer is embedded in the main window in a similar fashion to MS Visual Studio, with widgets in a toolbox controlled by layout containers (fixed, aligning, tables etc.). Widgets are added to a window by drag and dropping and although there’s nice to have features like alignment guidelines missing the designer is solid, platform themed and doesn’t crash. It slightly frustrating to me that I can’t just double click on a button to create a default click handler and start writing my code but I can double click in the signals box (on the right) and do it from there.

MonoDevelop GUI designer

Brilliantly, it can handly some old c# .net forms I wrote which used custom visual inheritance to make a new form frame for an unusual app which I assumed would break it!

The only downside here is that many of the properties seem oddly named and aren’t consistent across different types. I keep having to hunt around for where to find the text property for different objects. There’s little relationship to WinForms either if you’re using GTK# in terms of property and event names. Oh yeah, and alignment/guide lines aren’t there yet when dragging components around.

Putting together a simple form is a trivial matter completed in seconds. 8/10

Code Editor

The code editor supports all the normal modern stuff like colour control, code folding, code completion etc. and again is neat and elegant. The code completion helper in particular is very easy to use as is the code snippets tool box. Obvious problems are underlined as you type and the link between the visual elements and code is easy to work with.

MonoDevelop - Code Editing

MonoDevelop - Code Errors

The only downsides for me are the refactoring interaction which features a visual arrow that jumps to suggested places to put the new code – it doesn’t jump to very sensible places sometime; the compilation errro/warnings which are shown inline embedded in the code. These can make it a little hard to read the code until you’re used to them. You can of course turn them off. Overall though, it’s excellent. 9/10

Language Features

Writing C# in mono is brilliant. From the mono project website:

The Mono C# compiler is considered feature complete for C# 1.0, C# 2.0 and C# 3.0 (ECMA). A preview of C# 4.0 is distributed with Mono 2.6, and a complete C# 4.0 implementation is available with Mono 2.8…

That means the language supports OO constructs, iterators, anon methods, generics, statics, extension methods, LINQ, memory management, reflection, threading and much more…

Between LINQ and the mono framework implementation of the powerful MVC pattern loading stuff into object graphs and presenting that in editable for to users is a high level programming exercise.

As an easy language example here’s  working with a collection of TestBlob entities:

private List<TestBlob> blobs = new List<TestBlob>();

...
StringBuilder sb = new StringBuilder();
for (int n=0;n<blobs.Count;n++)
{
      sb.AppendLine(blobs[n].Name);
}
....

Simplez! :D

10/10

Feedback Process

There’s a little feedback button on the bottom of the IDE that lets you quickly send feedback to the community. I did this regarding my frustration over clicks from the visual designer direct to code handlers and another minor issue. Within the day I had a friendly response describing how my comments had been listed as two bugs on the public bug tracking system on xamarin.com and explaining how to add myself as a subscriber should I wish it.

MonoDevelop - Feedback

That’s awesomeness on toast! 10/10

Conclusions

The solid GUI designer, integrated debugger and high level language support for cross-platform development provided by MonoDevelop is brilliant. It’s easy to knock up a quick app to do something. My 7yr old son and I have been using it do develop a calculator as an introduction to programming basics and he things it’s a good easy to use system.

Getting going with the MVC pattern can be a little frustrating if you just want to programmatically put a bunch of things in a listview (btw if you do this use a treeview not a listview even if that sounds crazy at this point) but that’s a common hurdle for most modern day languages/gui widget sets.

The mono and monodevlop communities are large and active and the web is full of c# tutorials and info. I’ve found that guidance written for MS developers in c# is directly applicable to c# in mono. This is now my favourite cross-platform development environment and technology.

Category Score
Installation 9/10
First Impressions 10/10
GUI Designer 8/10
Code Editor 9/10
Language Features 10/10
Feedback process 10/10
Overall 93% – Excellent
About these ads

6 responses to “Linux GUI Development: Monodevelop 2.6 review and screenshots

  1. Pingback: Linux GUI Development: Lazarus 0.9.30 review and screenshots « The Mac Daddy

  2. Pingback: Moving from windows to Ubuntu, music, media centers, office and more « The Mac Daddy

  3. Antonio Rodulfo July 31, 2012 at 10:42 am

    Dear Mike,

    I took my first steps into developing GUI applications with MonoDevelop and Linux.
    Once I got some things clear and solved some tutorial minor mistakes, everything went properly… with GTK.

    However (there’s always a “however”), I’m part of a team. In fact, I’m the Linux part of the team.
    All the other guys work on Windows, in .NET and in C#, with Visual Studio.

    To date, all the applications we have develeoped were Windows-based applications by contract, so Visual Studio is not a choice, but kind of an imposition.

    So, I’m facing a decision: should I keep using Gtk and the form designer MonoDevelop brings as a native tool (I would have to make sure the Gtk libraries would be handy and available in Windows as well), or I’d do better changing over to WinForms? Is there any actual WinForms designer I could use with MonoDevelop (with similar integration with the IDE, I mean)?

    Thanks a lot for your analysis. I can’t help but agreeing with you (and I also come from the Delphi way-of-doing-things).

    Antonio Rodulfo
    Development Engineer

  4. Drew Corbin August 2, 2012 at 6:52 am

    I have used MonoDevelop on both Windows and Linux trying to test its viability as an alternative to the Windows Development environment of Visual Studio/SharpDevelop.
    However, IMHO I could not give the GUI Designer 8/10, maybe 6/10.

    The Stetic designer used to create the GTK# forms lacks many features that developers accept as the norm from Visual Studio, i.e. being able create a complex visual hierarchy of inherited forms, support for features like creating your own visual designer add-ins for custom controls.
    The properties available for controls at GUI design time are limited and do not not cover the full gamut of the GTK# library.

    Invariably this leads to frustration and I revert back to Visual Studio.

    I do regularly check back with the MonoDevelop site, currently upto version 3.03, however, still no mention of an improved GUI Designer.

    • Antonio Rodulfo August 2, 2012 at 8:34 am

      I don’t have your broad experience with Visual Studio and, in fact, I’m trying to decide which way to go for a Linux targetted application.

      I’ve seen what Stetic has to offer and can accept that it is still far from what its Visual Studio
      sibling is capable of.

      By the time being, either, I have managed to install and try mwf-designer, Mono proposal for managing Visual Studio forms. If you think of Stetic as being 6/10, just take a look at mwf. My own estimation is close to 3/10. Rough, unstable, with a sometimes inconsistent UI… this is frustrating.

      After much reading on the subject, and considering my target platform is LInux, I have decided to opt for a Linux-native way. Doing the work in VS, even if I manage to decouple the graphical and interactive part from the lower level platform-dependent part, would force us to recode the latter, which might prove not to be any easy.

      Whenever I have some more time, I promise I’ll try the VS way and Windows, even if only for the sake of learning the “other” way.

  5. ardaveDave October 24, 2012 at 10:36 pm

    Thanks for taking the time to put this review together.

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 371 other followers

%d bloggers like this: