Programming Desktop GUIs Using OpenSource
June 11, 2007 6:24 AM   Subscribe

How to develop graphical user interface programs via opensource software?

At work I use VB.NET on Windows. We have installed Ubuntu on a development machine and are looking at potentially migrating to opensource for some of our programming and production.

IDE
I understand that Eclipse is a popular IDE for many opensource languages...which other IDEs are comparable (or preferable)? I certainly like .NET's intellisense feature and object browsing capability but am not entirely dependent upon these as I also develop in a text editor quite a bit. But for learning a new language 'advanced' features like these could be helpful.

Languages
Also, which languages are best for developing desktop based, graphically-driven programs and interfaces? I believe Java is most commonly used for this, but which other opensource languages are useful for creating graphical user interfaces?

Most of the programs we develop are for internal production, not external distribution. Unless/until we switch entirely to Linux these programs will have to be cross-platform and be able to run on Linux and various flavors of Windows (all 32-bit).

Thanks.
posted by jjsonp to Computers & Internet (14 answers total) 6 users marked this as a favorite
 
Language --
I don't know much about this but I believe the Qt library is cross-platform. As long as you have mappings (bindings) from your programming language to the interface you should be fine. You could probably use python, ruby, perl ..etc...
posted by gadha at 6:38 AM on June 11, 2007


The FOSS world is a bit different from the Windows world when it comes to GUIs.

You've got three different pieces: X, the GUI toolkit/widgets, and a language.

Most languages* have bindings for most toolkits. You can do QT development with Python and GTK in Perl, for instance. I cut my teeth doing Python + tk and years doing Motif 2.1 and C - this all dates me a bit.

Since you're starting from scratch, QT and GTK are the current Big Players. Since you're coming from a VB.NET world, I'd recommend that you investigate languages like Python and Ruby for GTK development.

Dig around and try a few things out until you find something you like.
posted by unixrat at 6:56 AM on June 11, 2007


I've recently found myself looking for the same thing as you. I required it to be cross-platform (win,linux), mature, full-featured and above all easy to use and learn.

I chose python as language and wxpython as a cross-platform gui environment.
posted by CautionToTheWind at 7:05 AM on June 11, 2007


As you're coming from .NET, Mono may lessen the culture shock. Can't comment on its maturity/utility, though.
posted by Leon at 7:11 AM on June 11, 2007


I've used Java and Tcl/Tk to make desktop apps, and both are cross platform. I'm mostly a Tcl guy so I've done more in Tcl than in Java.
posted by RustyBrooks at 7:22 AM on June 11, 2007


If you prefer java, I recommend SWT.
posted by mitocan at 7:42 AM on June 11, 2007


Recently I started developing cross-platform programs (in-house utilities for work) as web-apps using the browser for the UI (XHTML/CSS/Javascript), and a scripting language (PHP, Ruby, Python, &c.) for the backend.

A similar approach for offline applications can be achieved using Google Gears.

It's not always the best solution (QT is still an attractive alternative) but it makes for rapid development, and gives the applications a common-look/feel.

One drawback, however, is the complexity added by developing using multiple languages (client-side javascript + backend scripting) and multiple data/design formats (xhtml, css, json).
posted by stungeye at 8:10 AM on June 11, 2007


About the IDE, and following on my advice to use python and wxpython, i've found that the best IDE is Wing IDE. There are several free/Free software solutions that didn't satisfy me. The Linux KDE default text editor, Kate, is very good, and together with a couple scripts can have the functionality of most IDE's.
posted by CautionToTheWind at 8:36 AM on June 11, 2007


[hoping this isn't too much of a derail] Are there any compiled cross-platform development solutions? Stuff made in Java always seems so slow to me; I've used Perl and Python, but I fear they'd both have the same limitations in a GUI-type application. What if I want something that runs oh-so-lightly and quickly?

I worked for a company back in the early/mid 90s that developed a word processor for Windows, Mac, and OS2 (remember OS2?); they developed in C/C++, and I remember these huge files full of compiler directives/definitions. When the thing was compiled, all that was used but didn't add to the "weight" or load time of the actual program. Ah, compiler, how little I appreciated thee.
posted by amtho at 9:33 AM on June 11, 2007


There's a port of #Develop called MonoDevelop. I don't think it alows VB.NET, just C# (could be wrong, though, since I don't really pay attention to VB.NET), but it has a GTK+ designer to use with Mono/C#.
posted by devilsbrigade at 9:35 AM on June 11, 2007


amtho: The previously mentioned wx and qt are both natively C++ libraries.

Can I un-nominate Tcl/Tk? I mean, it's cross-platform, and had its day, but it does not feel like the kind of thing I would be recommending to a newbie in 2007.
posted by IvyMike at 9:55 AM on June 11, 2007


I'll renominate Tcl/Tk. Its very efficient at creating simple GUIs, and it has bindings to a lot of languages. If you just want to make an app with a GUI instead of a console interface, and don't need MVC or anything like that, Tcl/Tk will make your life infinitely simpler.
posted by devilsbrigade at 11:12 AM on June 11, 2007


The biggest problem with Tcl/Tk (that is, the primary complaint) is that it doesn't look nice. That isn't an issue for me, for the most part, but it is for a lot of people.

Also, it's probably not the easiest to get started in. Tcl as a language is really quite simple, but Tk takes time for people to get their heads around. Also, although it's easy to learn Tcl, a lot of people don't learn the subtleties of it and end up creating code that works, but not well (I suspect this is a problem with a lot of languages though. Some people have actually laughed at bits of my java code)

I've had some issues with speed in tcl/tk, in general it's quite easy to write bits in C and "glue" them into Tcl though. There are even some widgets written in C (not too many that I know of though).
posted by RustyBrooks at 11:26 AM on June 11, 2007


Response by poster: Thanks for all the great tips everyone; I am investigating the various options.
posted by jjsonp at 9:50 AM on June 12, 2007


« Older Becoming Mr. Rigsby   |   Looking for recipes where part of the name is a... Newer »
This thread is closed to new comments.