After a few years in the oven, we are ready to announce the
first release of MonoDevelop. Lluis has put together a set
of in-depth
release notes that covers the major features available in
MonoDevelop and links to various tutorials and screencasts as
well as extensive screenshots of what is available in
MonoDevelop 1.0.
MonoDevelop 1.0 is designed mostly for Linux developers
creating Gnome and ASP.NET applications but MonoDevelop is
also available for MacOS users that download our Mono
installer and will still be useful if they are building
Mono-based applications on OSX.
The IDE
has many of the features that you would expect from a modern
IDE for Mono: support for programming in multiple languages,
an extensible design, editors and designers
for ASP.NET
and
Gnome
applications, integration
with Unix
toolchains
and Visual
Studio Solutions, support
for source
code control and following standard Unix development
practices, integrated
NUnit testing,
Unix Packaging
and Deployment (following the GNU conventions, and Mono
conventions
for libraries and
packages), internationalization
and localization, tools
to maintain
your project documentation
and command
line tools to access this functionality.
We have
some pretty
good language support in this release: C#,
VisualBasic.NET, Java, C and C++. Check the previous link
for the details as to how extensive the support is for each
feature.
Some screencasts:
There is
more documentation
on MonoDevelop available as well.
The Early MonoDevelop History.
In late 2003, a few developers were looking for an IDE to
write C# code in Linux, not something too fancy, but something
that would provide Intellisense features.
Windows developers were used to Visual
Studio, and Mike Krueger and the developers at Alpha Sierra
Papa had created the very
successful SharpDevelop
project, a .NET Windows.Forms-based application. At the
time, Mono did not have a working Windows.Forms implementation
(it would take another three years before our official 1.0
release of Windows.Forms) so this ruled.
Although there had been an attempt to make SharpDevelop
portable by Mike (with a variation on the theme of Eclipse's
toolkit) this effort had not been completed, and SharpDevelop
continued to be a Windows.Forms application.
Pedro Abelleira first extracted the editor and intellisense
engine from SharpDevelop into a standalone component that
rendered using Gtk# instead of Windows.Forms. This was back
late in 2003. Initially it was only going to be a text editor.
Development started mostly on irc and quickly contributors
started to porting various other pieces from SharpDevelop or
rewriting the GUI components with Glade and Gtk#. By late
2003 Todd Berman had taken over the maintenance duties of
MonoDevelop and sent me a email on December 31st:
Oh, and we are shooting for eating our own MonoDevelop dog food by the
end of this coming weekend, and it looks like we will be there even
before then.
History of the GUI Designers
As regular Gnome developers were were very happy using
Glade and Gtk#'s [Widget] attributes to bind the XML GUI
representation to our own variables. You double clicked on
the .glade file, and Glade would launch from within
MonoDevelop, you would tweak your UI, save it, and rerun from
MonoDevelop.
Around this time Dan Winship from the desktop team started
working on a new GUI designer for Gnome,
the Stetic GUI
designer. This was a Gtk#-based GUI designer, and the
idea is that this could be embedded in other applications.
An early screencast of Stetic capabilities is available here:
Stetic in March 2005.
Work continued, but Dan eventually moved on to other
projects. By the end of 2005 we were looking at integrating a
GUI designer directly into MonoDevelop and Stetic was not
ready to do that, so
instead Lluis
integrated Glade-3 into MonoDevelop:
MonoDevelop with Glade-3, January 2006
This project did not live for too long. Glade-3 had to be
patched, and we quickly realized that all the features that we
wanted would require more than trivial changes to Glade-3.
So we decided that instead of investing time in the C code
base and the bridge to C#, that we would complete Stetic which
was entirely written in C#, this is what it looks like today:
Stetic Designer inside MonoDevelop.
A complete
screencast of Stetic and today's MonoDevelop integration
shows all the work that Lluis and his team did to provide a
smooth editing experience.
Today MonoDevelop not only supports forms design, but it
also provides menu and toolbar editors and support for
managing your icon collection in your application.
Menu editor
A key feature of .NET is the creation of reusable
components. Lluis brought this to MonoDevelop and the stetic
editor.
This screencast
shows how to create widget libraries with MonoDevelop and
Stetic that you can later reuse in your projects or in other
projects.
The Future
The team has already started work on the next release of
MonoDevelop, version 1.1. Our goal is to release new versions
of MonoDevelop every six months. To do this, we are
planning on doing all of the disruptive changes on branches,
and always keep our HEAD revision stable.
There are a number of incremental improvements on our task
list, but also some exciting new features. There were many
things that we could not get in time for 1.0 are being
incorporated or implemented since the 1.0 tree branched a few
months ago. Some of the new features that trunk users or
alpha testers can get include:
New Managed Editor: The text editor is now entirely
managed and has many new features like configurable
keybindings (Really nice Emacs keybindings), split windows,
Emacs/Firefox-like incremental search on a toolbar (no more
annoying dialog box popping up in the middle of your source
code) and one of the most requested features: region folding.
Moving to a fully managed widget written in C# gives us a
lot of flexibility to improve the editor. This is a theme
that was consistent in the 1.0 release, moving from Glade to
Stetic and moving from the GdlDock to our own managed dock
paid off every time in terms of developer agility and
features that we could implement.
ASP.NET editor: new improvements will provide auto-complete
and intellisense while editing .aspx files. Also, with the
maturity
of WebKit/Gtk we
are hoping to replace Mozilla as the GUI editor for ASP.NET
pages with this.
Integrated Debugging: Currently the Mono Debugger
is only available as a command line tool. Our next release
of MonoDevelop will provide debugging directly from the IDE.
Windows Port: There is now a Windows profile release
of MonoDevelop. This will be great for developers that are
building applications using Gtk# on Windows and want to get
access to the Stetic GUI designer which currently requires
them to use Linux to do this. It is not our intention to
compete with SharpDevelop as an open source IDE for Windows
Programmers although there might be some overlap.
msbuild-based model: We want to move to the Visual
Studio build model to improve interoperability with
Visual Studio, Blend and SharpDevelop and other tools that use
msbuild files as their interoperability layer. This will
allow developers to easily move across tools to work on
different parts of a project.
XML Editor: A backport from SharpDevelop's XML
editor has been integrated.
Future versions of MonoDevelop will extend on this feature
set an integrate Ivan's Windows.Forms designer, Alan's
Silverlight designer and improve Michael's ASP.NET designer.