We were planning on
continuing Andrew's introduction to
Mono (http://www.go-mono.com/)
this week. Unfortunately the overwhelming response and the
release (http://ironpython.com/)
of IronPython as Open Source complicated a bit of his work and some retooling is
necessary. Thanks to everyone who contributed to the discussion in the initial
piece. Don't get too depressed however, because we've got some more Mono coming
up in the next few weeks. In the meantime, you'll just have to settle for an
interview with the lead developer of MonoDevelop, Todd Berman. Poor you. But
first, we're going to hit some news.
SLES me!
LinuxWorld (http://www.linuxworld.com/)
is going on right now in
eXcellent
The X Foundation has
laid out (http://freedesktop.org/XOrg/XorgReleasePlan)
plans for the next release of X.org. No decision has been made as to wether to
christen it 6.7.1 or 6.8. This next release of X.org is significant because of
the inclusion of extensions that were previously unavailable to most X users.
The new XDamage, XFixes, and Composite extensions are probably some of the most
exciting features to come to X in quite some time. Composite in particular,
which as you can see from the
screenshots (http://freedesktop.org/~keithp/screenshots/),
catapults X into where it needs to be in order to be competitive with other
graphical implementations. Right now the team is past the feature freeze phase
and moving into the "fix stuff" phase. Our X monkeys in #linux have been keeping
tabs on the CVS and everything seems to be going according to schedule. For more
information on X, make sure you check out their
wiki (http://freedesktop.org/XOrg).
KDE 3.3 due this
month, Debian and GNOME set to release on the same day
KDE 3.3 is nearing
release, and many expect it to come out this month. In the meantime, you can
play with the latest Beta2, thanks to OnebaseGo's
Live CD (http://www.ibiblio.org/onebase/onebaselinux.org/Products/download.html).
As with all KDE news, stop by the
Dot (http://dot.kde.org/1091701465/)
for more information.
In other distro news, the
planets align as Debian shoots for a September 15th release of version 3.1,
codenamed "Sarge". This release is the debut of debian-installer, the new
installer for the Debian project. We've been using the installer through its
beta cycles, and so far, it looks excellent. If you can't wait, you can pick up
the latest beta of the installer
here (http://www.debian.org/devel/debian-installer/),
and upgrade to the final when it is released via apt. This Sarge release date
happens to coincide with the release of GNOME 2.8, which is nearing Beta 1 as
you read this. Those of you wondering about the aforementioned X.org support in
Debian can welcome in Keith Packard, and the other
new Debian maintainers (http://lists.debian.org/debian-project/2004/08/msg00015.html)
to the project.
Crossover shoots for
iTunes support
Codeweaver's Crossover
Office is set to bring iTunes support with version 3.1 of their software. Though
not released yet, Codeweaver has already given users a glimpse of what's coming
with a screenshot and a trial version of the software. We'll have a full review
of the progress in our next issue.
Users who prefer a
Linux-native solution are encouraged to check out the read-only support in
current versions of
Rhythmbox (http://www.rhythmbox.org/).
Better support for the iPod is in the works in the .9 branch of Rhythmbox, but
you'll have to build from source. If you want it to get finished faster, we
recommend you bother our LKF Forum moderator, StoneTable, to finish his work on
libipod. You go girl.
The recent release of
Mono 1.0 (http://arstechnica.com/news/posts/20040630-3949.html)
was, of course, a significant event in the life of the project. Like many large
open source projects, the barrier of "1.0 quality" release is a difficult one to
overcome. In the scope of an implementation of an entire programming
environment, things can get real complicated. One of the key pieces of Mono was
the availability of an Integrated Development Environment (IDE).
MonoDevelop (http://www.monodevelop.com/),
which started out as a Linux port of the popular
SharpDevelop (http://www.icsharpcode.net/OpenSource/SD/)
for Windows, soon came to the forefront as the leading .NET development tool in
Linux. Though still in its beginning stages, the MonoDevelop team, led by Todd
Berman, has a plan for bringing leading-edge development tools to the Linux
desktop. We took some time to sit down with Todd and ask him where MonoDevelop
is going. If you want to ask Todd your own questions, please feel free to either
email (mailto:tberman@off.net)
him or to post them in the following Discussion and we'll make sure he gets it.
Linux.Ars: How do you
see MonoDevelop positioned in relation to other .NET development tools, such as
Visual Studio and #Develop?
Well. We are in a fairly
unique space right now, as we don't really have any competition to speak of.
Eclipse works on Linux, but is basically a Java solution, regardless of whatever
the latest C# plugin will ask you to believe. Because of this, we try not to
relate to the other .NET development tools too much, as they aren't attempting
to do the same thing we are. Our goal is to write an IDE that helps people write
applications. We aren't looking for a piece of any market, or to convert
everyone to an IDE; we just want to give people a tool they might find useful.
Linux.Ars: MonoDevelop
was originally a port of the #Develop project. Now that MonoDevelop has
established itself, how do you see the two projects interacting?
Generally, very well. In
some specific instances it has been a bit tense. Luckily, we have been able to
work through all of the problems and come to fairly positive resolutions, all
things considered.
Having worked with the
#Develop code for a long time, and being relatively familiar with it, it is an
amazing project to watch. Mike Krueger does some amazing work, and their entire
team is highly competent.
Linux.Ars: What kind
of problems did you run into while converting #Develop's System.Windows.Forms to
GTK#? What advice would you give to other developers looking to port their
System.Windows.Forms (SWF) code to GTK#?
Well, the TreeView is
always an issue of contention, as the models are very very different.
Personally, although the API for the SWF TreeView is far nicer, cleaner, and
easier, it doesn't have near the power that the Gtk# TreeView has. We actually
went ahead and created a TreeView wrapper class that does a decent job of
matching the API of the SWF TreeView.
We found that there was
no hard and fast rule for porting UI code. You basically had to look at it, and
convert it over on a case by case basis. Initially we were doing a direct port,
where the goal was for it to look the same. However after a bit of time, we
realized that wasn't really what we wanted. We wanted MonoDevelop to feel like a
GNOME application, not a port of a Windows application. Even today, there are
lots of places where we aren't GNOMEy enough, things like instant apply, icons,
HIG compliant dialogs, etc.
However, I think each
case is very different, and it really depends on what your end goal is. The
thing to keep in mind is that as inviting as it may be to wrap every single SWF
class there is, and reduce potential future porting costs, a lot of times it is
really much faster to just convert it. 90% of the stuff is easy to port, and
your wrapper won't really solve that hard 10% anyway.
Linux.Ars: What are
the three things that you think MonoDevelop is missing?
Well, the first is the
obvious one, a GUI designer. But I will get into that more later.
Second, we don't provide
enough context sensitive help. There is the starts of some of it, but we have a
long way to go. An important piece to this is also the general condition of the
documentation. Right now, the documentation we have programmatic access to
through Monodoc is good in some places, and a bit lacking in others. That is an
area that everyone can help with. There are parts of the 'core' class libraries
that could use documentation, and there is still a lot in GTK# that needs
documentation.
Third, and in my opinion
most important, our 'core' is too large, and too monolithic. Right now we
basically operate under the idea that you take 100% of our functionality or 0%.
A lot of people's needs would be met with a smaller subset of the functionality
we offer now. Right now, that is where most of my focus is. I would like MD to
be used not because its the kitchen sink, but because its the right tool for the
job.
Linux.Ars: MonoDevelop
has made great progress since its inception. Is there any part of it that you
are particularly proud of? What kind of feedback have you been getting back from
new users?
Two things about the
project have made me feel particularly proud, both of which are non-technical.
First is the user community that we have gathered in a short amount of time.
Second is the developer community. Our developers are the best, absolutely
amazing. These are all people who are working for free, because it is something
they are interested in. It has been an amazingly positive experience from the
very beginning. This project wouldn't have gone anywhere without every single
one of them.
We have been getting a
lot of great feedback. A fair portion of our users are Windows developers that
have heard about Mono, and are interested in giving it a try. However, they are
familiar with Visual Studio.NET, so they generally give MonoDevelop a try. Most
of them have fairly positive things to say about it, even though our feature set
is not near what Visual Studio's is. Another fairly common user profile is your
average Linux developer interested in checking out a new application. Many of
them have never used an IDE before. The feedback from them is always amazing,
they are all very amazed with what an environment that has an idea of what they
are trying to do can accomplish. Obviously, occasionally we get negative
feedback, but it is by far in the minority.
Linux.Ars: A GTK#
visual designer is reported to be in the works. I'm sure this is a highly
anticipated feature. What can you tell us this effort?
Yes, it is. Right now
most of the work is purely speculative. There are many gaps that I personally
feel we need to flesh out before we can even begin tackling the designer itself.
We need a property grid style control desperately. We also need to work out a
lot of the particulars surrounding the scoping of the designer. Is it going to
be Gtk# only? Is it going to generate a XML file that is loaded at runtime? How
easily will it be able to add design-time support for C gtk+ widgets? C# Gtk#
widgets? Will it be stand-alone? Will it be a MonoDevelop plugin? Will it be
both? There are a whole host of questions like these that need to be answered
before a single line of real code can be put down.
Linux.Ars: What are
you working on next?
Well, I have a lot of
work currently on my plate. I have recently taken a position at
Medsphere (http://www.medsphere.com/)
doing Mono/.NET work there. Medsphere is a company that is leveraging open
source technologies to bring down the costs of operating hospitals and hospital
systems. The things they are doing on a purely social level are amazing, and the
technical goals we are going to accomplish are just as interesting.
Unfortunately, I am not able to be much more specific on what my role is there
right now, but its absolutely fascinating to me, that is for sure.
On the MonoDevelop front,
we are moving forward with something I have been calling 'Top Sekret Plan #43'.
Basically, this ties back to the idea of the slim core vs the monolithic core.
We are going to be reworking a lot of the plugin interfaces and then reworking
some of the code itself to plugin to the new interfaces. This is not the most
popular piece of work, however, but it is something that I and the other
MonoDevelop maintainers feel is important for many reasons.
This work is *not* a
complete rewrite of all of the 150,000 lines of code currently in MonoDevelop.
We are going to be rewriting the core pieces and writing new plugin interfaces,
and then adapting the existing GPL code to create GPL plugins to the new core.
In addition to work and
MonoDevelop, I have a couple small pet projects that I am toying with. So for
me, my plate is about as close to full as it can get without me inventing more
hours in the day.