interface

IUP - Portable User Interface

Comparing IUP with Other Interface Toolkits

Why to still maintain IUP if today we have so many other popular toolkits?

This is a question we always ask to ourselves before going on for another year.

To answer that question we must first define the characteristics of the "ideal" toolkit, list the available toolkits and compare them with the "ideal" and with IUP.

We would like a toolkit that has:

  • Portability. That provides an abstraction for User Interface in Windows, UNIX and Macintosh.
  • Free License and Open Source. This means that we can also produce commercial applications. The pure GPL license can not be used but the LGPL can but must contain an exception stating that derived works in binary form may be distributed on the user's own terms. This is a solution that satisfies those who wish to produce GPL'ed software and also those producing proprietary software. Many libraries are distributed with this license combination.
  • Small and Simple API. This is rare. Many libraries assume that an Interface toolkit is also a synonymous of a system abstraction and accumulate thousands of extra functions that are not related to User Interface. At Tecgraf we like many small libraries instead of one big library. Almost all available toolkits today are in C++ only, so C applications are excluded, also this means a hundred classes to include and understand each member function. The use of attributes makes a lot of things more elegant and simpler to understand.
  • Native Look & Feel. Many toolkits draw their own controls. This gives an uniformity among systems, but also a disparity among the available applications in the same system. Native controls are also faster because they are drawn by the system. But the problem is what's "native" in UNIX? Some commercial applications in UNIX start using Motif as the "native" option. It is the official standard but because of license restrictions, before the OpenMotif event, the system became old and some good alternatives were developed, including GTK and Qt.

Toolkits

With these characteristics in mind we select some of the available toolkits:

Name

License Last Update Version Language Platforms Controls Team Comments

V

LGPL 1998-2003/03 1.9 C++ Win, X native 1

ZooLib

MIT 2000-2003/04 0.9

C++

Win, X, Mac

own

4+9 Still no 1.0 version

Fresco

LGPL 1998-2004/02 Alpha

C++

Win, X, Mac own 9 License restrictions, Still in Alpha, Use CORBA...

YAAF

BSD*

2002-2004/03

1.1a8

C++

Win, X, Mac

own

1+9

 

GraphApp

BSD* 1997-2004/03 3.52

C

Win, X, Mac

own

1 Small and interesting.

FOX

LGPL* 1997-2004/03 1.1.51

C++

Win, X

own

3+15 great look, lincese totaly free?

FLTK

LGPL* 1998-2004/04 1.1.5

C++

Win, X, Mac

own

3+16 was from

Digital Domain. Easy to learn.

GTK+

LGPL* 1997-2004/03 2.4

C

Win, X

own

9 target for

X-Windows, basis of GNOME, Windows is apart

Qt

GPL 1994-2004/03 3.3.1

C++

Win, X, Mac own (many) X is free for Non Commercial, basis of KDE, Windows is paid,
Emulates the native look and feel

wxWidgets

LGPL* 1992-2004/02 2.4.2

C++

Win, X, Mac

native

6+11  

IUP

MIT* 1994-2004/08 2.2 C Win, X

native

2  

More toolkits can be found here: The GUI Toolkit, Framework Page.

An interesting article can be found here: GUI Toolkits for The X Window System.

Conclusions

From the selected toolkits using the defined approach we can eliminate some toolkits:

The 4 first are not updated anymore or the development is very slow.

GraphApp is an one author only project. FOX has a great look but the license can be restrictive in some cases. FLTK promesses a new version with a better look, but until then it does not have a pretty good look. The FLTK documentation also does not help.

GTK+ can be used as a replacement for Motif, but not as a "portable" toolkit since is target for X-Windows. Qt has several license limitations, although is a very stable and powerful toolkit. Qt can be also used as a replacement for Motif.

The "best" free solution that we choose is wxWidgets becase of the native controls and its portability.

Developing IUP

IUP uses Native Controls in Windows and Motif. Mac port is outdated and not maintained for long time, MacOS 9 was terrible. With Mac OS X we may have the opportunity to do something better. IUP is in C, is small and powerful.

But today only 2 developers, only a few extra help and many other projects to work simultaneously. So it is hard to keep the code updated. One possibility that can reduce our demand is to implement IUP on top of one of these toolkits, so we can focus on the best of our toolkit: its API, the dynamic layout, the Lua binding and the CPI controls. But this is a polemic issue...

Also IUP does not have a wide localization feature, it only includes support for messages in English and Portuguese. And it does not have support for Unicode characters.

.. "Make it Reusable, Make it Simple, Make it Small" ...