For my next summer project, Iím going to step it up a notch. The first project was a simple calculator for Windows using WPF and simple controls. Now, I am going to create an integrated development environment for Ruby. Oddly enough, Iím going to create this application using the Ruby language. I hope to get to a point where Iím going my next version of Peddinghaus IDE inside of an older version of Peddinghaus IDE.
The first thing I needed to do, after deciding on what I was going to do, was what technologies I should use. I wanted to shy away from C#, WinForms and WPF because Iíve coded in them previously. Another language I was avoiding was Java because Iíve had experience with Swing before (and, like most people, this was not a good experience). I also wanted to stay away from lower-level languages like C; and, so, that left me with very few options. I knew that Python had the tools necessary to accomplish what I wanted, but for no good reason I like Ruby more than Python. So, I wondered, are there GUI toolkits for Ruby?
The answer was ìNot Natively.î So I did some research and found that Ruby has a bunch of GUI toolkits. There is wxRuby, which is a Ruby port of wxPython. There is Shoes, a streamlined, web-like toolkit. And, finally, there is FxRuby. FxRuby is a Ruby implementation of the Fox toolkit. The Fox toolkit is a C toolkit that is both very powerful and very popular. Another very important aspect of this is that there is a built-in wrapper for Scintilla, called FxScintilla, that will allow me to drop Scintilla into my IDE. No syntax parser, code folding headaches for me. I get to do the fun stuff.
Iím going to be developing using Ubuntu 9.04 and (at first) gedit. Even though Ruby is cross-platform and the IDE will be able to run on any operating system, development must occur on a Linux box (because the wrappers donít like Windows).
Also, Iím going to try out a beta version of Unfuddle. Unfuddle is a project management / repository service that is pretty slick. There are some user interface tweaks that could be made (in my current limited experience) but it is working really well at the moment. I really donít need the project management features but Iím putting them to use because this is sort of a trial run at this type of software for future team projects. So far the experience is positive.