August 05, 2004 Edition

 

MonoDevelop

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.

 

News

SLES me!

LinuxWorld (http://www.linuxworld.com/) is going on right now in San Francisco. SUSE fans can celebrate the release of SUSE Linux Enterprise 9, otherwise known as SLES9. You can snag a free 30 day trial here (http://www.novell.com/products/linuxenterpriseserver/eval.html). Meanwhile, Linux desktop fans are still chomping at the bit to see what Novell Linux Desktop (NLD) will bring to the table.

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.

 

MonoDevelop - An Interview with Todd Berman

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.

 

More MonoDevelop

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.