Are you interested in contributing to one of my open-source projects, but don’t know where to start? It is actually my fault, and this blog post will try to serve as an entry point to the interested developers who want to contribute to the success, diversity and adoption of Swing for high performing, modern and customizable user interfaces.

I have a few projects on java.net, but the main two are Substance look-and-feel and Flamingo component suite. And as much as i try to keep up with all the features expected from modern UI libraries, my time is limited. And this is where you can help. And you don’t have to be technical. Below you will find a list of self-contained tasks, some of them technical and others not. I’ve tried to isolate each task so that it can be worked on in a separate flow without disrupting the main development, or requiring deep understanding of the whole library (although that is an advantage, obviously). If you are interested in one or more of these, feel free to contact me on the mailing lists or forums of the projects, or drop an e-mail to kirillcool [at] yahoo [dot] com.

Bug reports

If you see a bug, please do not assume that i know about it. Let me know as soon as possible so that i can fix it before the next release. Since my resources are limited, i can not backport bug fixes to earlier releases (Substance 4.3 is the only exception since it is the last release to run on Java 5). If you test your applications on development drops of Flamingo and Substance, your chances of having a bug fixed in that release are significantly higher.

To report a bug, you can use the issue tracker (preferred), project forums, project mailing lists (although that will most probably annoy other subscribers) or my personal e-mail. Note that sometimes i would ask you to continue the dialog in the public mailing lists if i feel that it is informative enough for the wider participation. Also, try to attach a test case that as simple and short (<100 lines) as possible.

Documentation

I try to keep the documentation up-to-date with the latest releases and development drops, but something always slips past me. If you see something out of sync, let me know. If you are a first-time or a novice user and have a hard time understanding what the specific project allows you to do, let me know. If you are a power user and find that the documentation is not deep enough, let me know as well. And if you are an English major, proof-reading the existing documentation and fixing even the smallest syntactical and grammatical errors is great!

I always try to structure the documentation in an accessible and visually friendly way. You can see my latest attempt at this right here. If you are a web designer or just have a natural talent for arranging information presentation targeting different user levels, i will be more than happy to hear your input. And if you can design a cool logo, that’s fine with me as well!

Flamingo

The main emphasis of version 4.0 is going to be on closing the gaps in the Ribbon component. As such, i will not be able to do many other things that i would like to see in Flamingo. Here is a list of self-contained tasks that can span a few days if you have them:

  • Right-to-left (RTL) support for all components.
  • High-DPI support for all components.
  • CVS-based breadcrumb bar adapter.
  • SVN-based breadcrumb bar adapter with fully open-sourced implementation (the current one uses SVNKit).
  • Apache VFS-based breadcrumb bar adapter.
  • XML DOM-based breadcrumb bar adapter.
  • ICNS-based resizable icons.
  • Pageable command button panel.

For the examples of existing breadcrumb bar adapters see the org.jvnet.flamingo.bcb.core package. For the examples of resizable icons see the org.jvnet.flamingo.common.icon package.

Substance

  • Profile the performance. While release 5.0 is much faster than its predecessors, there’s always room for improvement. Some gains may result in the code becoming uglier, and that is a factor as well. The performance areas include the startup phase as well.
  • Analyze the performance on D3D-accelerated pipeline. The code should not result in performance regressions on the software pipeline.
  • Write custom skins to test the current skinning layer APIs.
  • Take over the development of the Substance plugin for JIDE components. I have intended to do this myself, but i just don’t have the time. Right now it supports two components (button and split button), so the plumbing is in place.
  • Take over the development of the Substance module for NetBeans. Can be used to analyze the performance problems and test a very large Swing application with custom components, renderers and more.
  • Create a Substance module for IDEA. You can win some money in the process as well if you do it in the next few weeks (go to JetBrains’ site for more details).
  • Write translations to additional languages. It’s about 25 entries that have already been translated to 29 languages. If you see a missing language, you’re more than welcome to send me the translated strings.

I only have two things to ask for the code contributions: it should be clean and it must be contributed under BSD license. I will not ask you to assign the copyrights to me, and you will continue to have the full rights to your original code. And nobody wants to get stuck in unmaintainable code :)

So, if you are interested in contributing to Flamingo and Substance in particular, and to the Swing community in general, let your voice be heard and your contribution be seen. I’ve just posted the first drops of Laf-Widget 4.1dev (code-named Juniper), Flamingo 4.0dev (code-named Fainnear), Substance 5.1dev (code-named Panama) and Substance plugins for Flamingo and SwingX.

Here are some Swing links that you might have missed during the last week:

SWT, Eclipse 4 and custom skinning

September 21st, 2008

Are SWT and Eclipse moving away from native widgets? If you follow the development mailing lists of the relevant Eclipse subprojects, this might be one of the more interesting questions for Java UI developers.

Much has been said over the past few years about the relative merits of Swing and SWT. SWT has always prided itself on using native widgets (wherever possible), sporting better platform fidelity and performance. In the meantime, the competitive pressure from SWT has, in the view of many observers, made Sun invest much-needed attention in Swing. It zigzagged a little in its priorities regarding native look-and-feels; much work has been done in Mustang for Windows and GTK LAFs, but the few glaring remaining bugs have been ignored ever since. However, Swing, AWT and Java2D teams at Sun have been at work bringing significant performance improvements (and not only for hardware-accelerated pipelines), using native font rasterizer on Windows, support for translucent and shaped windows and more.

The flexibility and extensibility of Swing painting pipeline allows creating applications that bear little semblance to the dated Ocean look, and it looks like SWT might be moving in this direction as well. Lotus Software has been purchased by IBM back in 1996 for 3.5 billion dollars, and IBM has put a lot of resources to continue the development of different Lotus components (such as Domino and Notes). Unbeknownst to many (which is a good sign for any software in general), Lotus is an SWT application. It certainly doesn’t look one – click the screenshot for the full size view:

Not much information is available on custom Lotus SWT components (or i haven’t looked hard enough), but this presentation (zipped PowerPoint) provides some insights – the UI guidelines are implemented with CSS:

A majority of our CSS support was intended to give the custom Lotus SWT widgets as much flexibility as possible. Styling standard SWT widgets is supported but very limited (fonts, colors, background image).

Another interesting development comes in the form of Eclipse Riena which is currently in the incubation stage. While you might want to skip the buzzword soup in the project description (enterprise service oriented blah blah), Riena aims to bring a fresh look to Eclipse RCP applications. The presentations at Eclipse Summit (PDF) and Eclipse Forum Europe (PDF) show these designs (click for full size view):

And while the UI of the sample applications shipped with milestone 4 of Riena 1.0 is quite far from the design mockups above, the trends are quite clear – Eclipse / SWT based applications are trying to break away from the native look-and-feel. So what are the plans for core SWT layer?

The answer to this question might be found in the mailing lists of e4 project. e4 is the codename for the next major release of Eclipse (hence the number 4). There are a lot of interesting ideas bouncing around the lists, including using EMF for driving the UI definitions (aiming, perhaps, at the same level of design/development separation as available in WPF, Apollo and JavaFX) and targetting different runtime environments such as Web browsers. It appears that one of the fundamental shifts is going to be the support for CSS skinning for the UI components.

Kevin McGuire is a platform UI contributor working for IBM on Eclipse UI, and his views on Eclipse-based RCP applications are quite refreshing:

As I survey the Eclipse based applications, RCP or not, they all look, well, like Eclipse based applications. Eclipse provides much power through reuse of existing components and extension of frameworks. But my goal as an application developer is to build software that is as appropriate for my audience as possible. That audience could be anybody. However, many choices we made early on in Eclipse were with an IDE user in mind and just don’t work well for other user types.

Why should my choice of technology so blatantly drive the UI experience? I’d like all that reuse and power, thank you, but the end result shouldn’t betray the technology used to build it, provided I am willing to invest in specializing it.[…] I’d like to see as rich a set of graphical front ends for Eclipse. Certainly CSS helps by providing good separation of behaviour and UI, but the components must be designed to make use of this separation.

[…] Eclipse based applications should be capable of the same degree of visual and interaction sophistication as web based applications. This is essential for reaching a wider audience.

This point of view is also shared by Christian Campo from the Riena project:

  • RCP UI looks like the IDE
  • is not that easy on endusers
  • while there is an option to allow “freestyle” there is certain of look that seems well established i.e. Outlook and others (including Riena)
  • there is already some common sense how user interfaces for endusers are designed like MS Office, Lotus etc.
  • wouldn’t it be cool that we have more support for that in Eclipse rather than each application has to build that from scratch.
  • endusers no longer expect their tools to have a native platform look

Are we going to see a UI customization layer in SWT that is similar to Swing’s look-and-feels?

Ribbon reaching beyond Office

September 16th, 2008

The ribbon component is quickly becoming the new standard for Microsoft applications. A significant break away from the traditional menu-toolbar approach that has reached its scalability limit faced with ever-increasing amount of features in the Office suite, it is poised to become the main UI concept in the upcoming Microsoft products.

Speaking at Office System Developer Conference in February 2008, Bill Gates said:

We in the next version of Windows will be using this Fluent [Ribbon] UI quite a bit across a number of applications. […] It turns out it’s a user interface that works very well for the pen and touch [interfaces] as well as being a better way of revealing application functionality.

In his interview, Richard Wolf, general manager of the Microsoft Office Graphics Division detailed the plans for using Ribbon in Visio:

Well, we’ll be announcing that the next version of Visio will feature the new Office “fluent” user interface, or ribbon, which I know has been something many users have been asking us about, so again it’s a question of delivering on what our customers tell us is important to them. The ribbon is key because it allows us to expose more of the functionality of the product. […] The other key benefit that customers will get from the ribbon is a similar way of working to their other Office tools that will make it easier for new users to get up to speed with Visio.

And the recent news confirm the words of Bill Gates. Stephen Chapman has played with an interim build of Windows 7 (next version of Windows OS), and he reports that both Paint and WordPad are now using Ribbon as the primary UI:

MS Paint: In terms of functionality, imagine a software somewhere between the currently-existing MS Paint and the wonderful Paint.NET freeware application. Make everything accessible through a ribbon bar (tabs ‘n all) ala Office 2007 and voila. […] WordPad: Basically, imagine Microsoft taking Office 2007 Word, slimming it down, tweaking the ribbon bar UI a bit, and calling it WordPad. While not as functional as Office 2007 Word (hence, the “slimming it down” mention), this version of WordPad is coming along nicely.

And his next blog entry features a screenshot of Windows 7 Paint in action:

Windows 7 M3 Build 6780 MS Paint UI:

(Click the picture for the full-resolution image)