Bongo

What was it

In 1996, a company called Marimba was still a start-up Java-based technology company. They created a user interface builder called Bongo.

After a few years Marimba open-sourced the product under the name of "FreeBongo". This open source initiative existed for a few years and then 'died' due to a lack of community activity and hardly any users left.

Still, Bongo could have been a lively and widely-spread tool nowadays, as it had the potential to outperform Swing as a good user interface solution. The rest of this article gives more bacground.

For more background information, check: Bongo in-depth.

The open-source alternative

Java applications are platform independent: they can run provided you have a Java VM for your platform. In the first couple of years of Java's existence the following was true: if you ran the application on different platforms, the user interface of the Java application would have a different look and feel on each platform. Furthermore, developing Java user interfaces often requires a visual tool to do this, which can tie you into some code generation feature of that tool.

These issues were addressed by Bongo. First I will shortly introduce Bongo. Then we will look at the differentiators of Bongo. Then we will dive into various details of the Bongo runtime, and finally where it currently stands.

This whitepaper gives a quick overview of Bongo, it does not go into very much detail. If that is what you are looking for, refer to the "Bongo from the inside" whitepaper at the JAVA gazette.

What is Bongo

Bongo was created by a company called Marimba, a Silicon Valley Java startup in 1996. It was originally aimed to be a tool for creating small applications that could be downloaded over the internet. As this turned out to be impossible using the current Java technology at that time, Marimba started developing a completely different technology called Castanet.
By that time Bongo had already become a very interesting user interface library along with a visual builder. The runtime of Bongo consisted of a few Java packages with something called Widgets. Widgets were the user interface components of Bongo, like buttons and text boxes. The visual builder was also called Bongo and allowed a simple drag-and-drop approach towards building the user interface, using the widgets from the runtime.

Bongo's differentiators

Bongo made a big impact initially, and won the "tool of the year" award of "JDJ" in 1996. What made Bongo so special was the following:

  • rendering engine
    Bongo had its own rendering engine - every pixel that was shown was painted by Bongo's runtime. In contrast to Java's AWT (abstract windowing toolkit) that showed native OS widgets.
    The result was a look and feel that was similar on all platforms, finally providing true platform independent user interfaces.

  • persistence
    Currently still not common practice, Bongo could persistify user interfaces in a ".gui" file, using a customly created file format. There was an open API towards this persistence mechanism, that allowed any Java application to load and save ".gui" files (fortunately, there is a standard for persistifying JavaBeans in XML files now, but at that time there was no such thing). In contrast to code generation, the application logic did not live inside the user interface layout-code, but in the Java classes that loaded the ".gui" file.
    The result was a clear separation between user interface layout and design, and application logic.

  • widget scripting
    To also enable simple logic inside the ".gui" files, for example handling a click on a button, Bongo had the capability of scripting widgets. A script would appear in a script window inside the Bongo builder as Java code. Actually, a script would be a subclass of the widget class, thus allowing programmers to override certain widget class behavior, like the way a click would be handled!
    The result was an easy way to handle simple user interface actions, without any need for a separate Java class.

For more details on these differentiators, and to find out about other features and differentiators of Bongo, please refer to the "Bongo from the inside" whitepaper at the JAVA gazette.

Current status

A year after Bongo won the award, Netscape released IFC (the Internet Foundation Classes). It was almost a copy of Bongo's functionality, but re-designed. This created a division in the Java UI front, and did not do much good (especially since IFC was no longer supported after one year).

Marimba did not see Bongo as core business, which is why after two releases of Bongo (1.0 and 1.1) development by Marimba stopped. Instead, Marimba gave Bongo to the public, making it an open source project called FreeBongo.

After that the FreeBongo project produced one new release of Bongo (1.2), with API enhancements. It still uses an old event model, and does not incorporate the MVC (model-view-controller) paradigm, which are necessary further enhancements. Until those are not added, Bongo will most likely not be able to attract many new developers.

So Bongo had the potential to revolutionize Java user interface development. However, with the SWT which Eclipse uses and Swing around, building a community around FreeBongo would be a big challenge, which nobody is probably going to pick up.