The quest for the perfect cross platform GUI toolkit
May 21st, 2005
These days I’ve been thinking about implementing a new simple but extremely useful application (I won’t go into details at this stage). A couple of similar applications already exist, but they all run on Windows only and just one of them is free. The niche is very attractive for me and the demand for it is growing, so I thought I would jump in and provide an open source alternative. The application would have a fairly simple GUI in the front end and would have to run on Windows, Linux and Mac. Support for mobile platforms would be a major plus. I have loads of experience developing GUIs with Delphi, Swing and SWT, but I’ve ruled these out: Delphi is not cross platform and Java is, well, just too bulky and doesn’t provide a real native interface.
I’ve been looking at Lazarus for a while. This is a very promising open source Delphi port, built on top of FreePascal. It is already quite usable, but it doesn’t seem to currently fully support Mac OSX, so I had to rule it out. I am however thinking of porting IMAPSize to Lazarus, so I’m keeping a close watch on this one.
After considering several other “mainstream” options, I settled with wxPython, a Python wrapper around the excellent wxWidgets. This page explains the pros and cons of various toolkits and does it much better than I would. It’s a must read! The next question was whether to go for a Python or Ruby wxWidgets wrapper, since these are the languages I feel comfortable working with. I decided to go with the smart guys who’ve put a lot of thought into the whole thing, the Open Source Application Foundation and the GNU Enterprise. Apart from that, I like the RAD tool built on top of wxPython, Boa Constructor. Also, Python is more ubiquitous, which is important for an open source project.
Yesterday I started doing some work. As a wxPython/Boa newbie, I’m bound to bump into many problems. I already asked for some specific help on their forums/lists and got the right answers within a few hours - a sign of a great community. I’m quite excited, it should be a fun little project.
For a comprehensive list of GUI toolkits, check this page.