Monday, August 15, 2005

SharpDevelop 2.0: The Next Generation

Corsavy, the codename for SharpDevelop 2.0, one of the most anticipated (and easily most hated) .NET IDEs available, has opened its source code repository for contributors. Well, I'm not really a contributor, but someone gave me the link and I downloaded and installed Corsavy before I realized this. ;)

After the clusterfuck that was SharpDevelop 1.1 (you know what I'm talking about if you've tried to use it for any serious projects), the constant pushbacks for Corsavy, and a forum post indicating that Corsavy hadn't been touched in months, it seemed like SharpDevelop was R.I.P.

It comes as bit of a suprise then that out of the blue the repository for Corsavy was opened for public consumption, and to be honest, I'm a bit amazed: SharpDevelop 2.0 is very, very good for what they consider alpha quality code.

Its got some pretty sweet features; when you find all references for a type, for instance, they appear in a little search window at the bottom, colorized by syntax and divided by columns. If you've had to deal with Visual Studio 2005's "let's cram everything onto one line in the same color and hope it works out" this is going to be sweet, sweet relief to you.

By default they ship supporting NUnit, MbUnit, and SVN support. You'll find SVN support under "Tools" which doesn't make as much sense as if first sounds when you think of it, but that's a minor problem.

Also nice to find was that if you right click on a project you have the option of deploying it via ClickOnce, although it seems that functionality for assembly signing hasn't been completed yet: ever see a ListBox with the words "TODO" in it before? Scary.

Generics support is just as you'd expect: generics in code completion. There's a minor annoyance when creating a generic type, as when you type List the cursor automagically highlights the 'T' so you can supply your own type, but when you press '>' you actually create another bracket, so your code comes out looking like "List>." Smarter behavior would be nice.

Did I mention that the debugger works? We all know t
hat's what you were waiting for. Long awaited, long requested feature, but its here.

Corsavy is snappy - the IDE loaded quickly, only briefly showing the new splash-screen, and hasn't crashed on me yet. They seem to have locked down the memory consumption bug concerning the UI in SharpDevelop 1.1, so now you can actually hack for a couple of hours without having to restart the IDE or have it crash then refuse to load the project file next start-up. ;)

Oodles of small goodies, but they're like the little mints you find on your pillow at night: you don't notice them until you're there, and when you do, you smile. ;)

There are still some missing features, though:
  • No background compiliation to check for errors. After having used Visual Studio 2005 and Eclipse for quite a bit, its become a *must.*
  • No contextual help for error messages. This removes quite a few short-cuts that Eclipse and VS2005 made possible: you can't instanize a new type, click on the error message, and automagically import the namespace that holds the type.
  • Weak refactoring. You can't refactor local variables, apparently, and the refactorings for methods and classes are pretty weak, as there are no convience refactorings like "explicitly/implicitly implement members" for interfaces and abstract classes.
  • You can't "go to definition" or "find references" arbitrarily by left clicking in the source code; you have to use the little class/interface/property/field icons that appear to the left of the screen if you want to find references for a class. I cannot click on a local variable that is an interface and go to that interface's definition. I can't even "find references" for a varaible, which is sometimes uber useful!

With some serious polish as Corsavy moves into beta, this could seriously put SharpDevelop into the same competitive ring as Visual Studio and X-Develop.

Definitely something to keep my eyes on.

1 comment:

Anonymous said...
This comment has been removed by a blog administrator.