Firstly, Lieven, who are you?
I'm the current project lead for Spring RCP. During the day, I work as a Java consultant for Jintec, a small Belgian consultancy firm specialized in Java development. I try to specialize in GUI development and general usability in user interfaces, and thanks to Spring RCP, I've been given the chance to train my skills in GUI frameworks.
How did you get started with Spring RCP?
In my previous job one of the former project leads for Spring RCP, Jan Hoskens, was my colleague. He was responsible for extending the Spring RCP framework to suit the needs of the company's development. During my time there, I mostly worked on the client-side of the applications, which were mostly Swing-based and thereby I became immersed in the world of Spring RCP. After I left there, I still remained interested in the project and started to dig deeper into the framework's inner workings, just to understand what made it tick.
Can you tell us a bit about the basic idea behind Spring RCP, i.e., its central aims?
The general idea behind the framework is to create a Swing application framework powered by the Spring framework. It tries to combine best practices in GUI development and enables a developer to build an application in a standard way, without having to worry about a lot of the intricacies involved in Swing development. It provides support for those who wish to integrate aspects of a Swing application, such as security, validation, and exception handling, in a clear and concise way.
The project seems to have had frequent stops and starts. Can you enlighten us a bit on this point?
The road has been bumpy, there's no denying that. Spring RCP started 4 years ago as a small project backed by some of the current SpringSource people, for example Keith Donald. Over the years, it has evolved more and more, but as time passed, fewer people remained involved in the project. Keith was moved to his current Web Flow project and support from SpringSource became minimal at best. From then on, we sort of depended on the goodwill of the committers to move the project forward. Releases were not frequent and support was not up to par with the other frameworks around.
In March, Jan Hoskens, the project lead at that time, decided to release the 1.0.0 version, in an attempt to increase interest in the project again and to provide a baseline on which everyone could evaluate the project. And in retrospect, it was a good decision. Spring RCP got more publicity in the last 6 months than in the last 4 years. A series of Javalobby articles were written and the forums became active again.
However, some of us realized that the framework also needed some innovations, as the project was still mainly Java 1.4 based and didn't use the possibilities of the newer Spring versions. The codebase also had some problems we couldn't address without completely refactoring the entire codebase (and sometimes just plain rewriting parts of it). Thus Spring Desktop was born, to start with a clean slate. In the beginning a lot fresh ideas were raised and it seemed like things were going great, also because support from SpringSource had increased. But as time passed, the project slowly died and the project lead for both Spring RCP and Spring Desktop, Peter De Bruycker, couldn't find the time to work on both projects.
So last week, after contacting Peter and Jan, I decided to take over the project lead role to make sure Spring RCP didn't die either. As part of that decision, we decided to stop development on Spring Desktop until time and resources were found to actively support the project.
Currently, we're looking at ways to get Spring RCP alive and kicking
again and to promote it wherever and whenever we can.
So where are things right now?
At the moment, we're trying to fill in a lot of the gaps that are present in the current release. One of the biggest gaps is the lack of documentation. That's why I started to create a practical guide to Spring RCP to make sure that someone starting with Spring RCP wouldn't be trying out the framework empty-handed. Jan and I also submitted a BoF for Devoxx this year, but unfortunately, it was rejected (let's face it, Swing development isn't as popular or sexy as web development nowadays).
Additionally, the company for which Jan and I worked for recently
decided to donate all the customized code based on Spring RCP to the
project. We're currently joining our efforts to integrate that code into
the codebase, so that everyone can benefit from their work.
What are the main things developers can gain from the project right now?
As I stated before, Spring RCP enables developers to concentrate on the right things in their GUI development. Spring RCP tries to provide an abstraction so that developers don't need to worry about the details of Swing development. Also, standardization is a big issue nowadays and we're certain that Spring RCP can help GUI developers to standardize their Swing development efforts.
In the Swing world, there aren't a lot of alternatives when choosing a
framework, all of which have their own strong and weak points. Many
companies have created their own Swing abstraction, resulting in
even less standardized development. Spring RCP can help by providing an
alternative, supported by a community of developers.
What more can be expected in the future?
We'll continue expanding the current codebase to support more out-of-the-box components. Additional documentation will be written to make sure developers get the support they need.
As for Spring Desktop, we're waiting on some support from outside the
current RCP community. None of use can commit enough time to handle both
projects. That said, we do believe Spring Desktop is the way forward but
we won't risk sacrificing Spring RCP.
Do you have any timelines or milestones so we can see what the plans are?
As I said before, we're going to add a lot of stuff to the project soon, which will hopefully increase the value of the framework by a significant amount. You might see it as a milestone, as it'll certainly increase the applicability of Spring RCP in enterprise development.
For the rest, we're going to keep improving the current codebase and also
do some cleanup. There's no current release plan yet, but we're working
on a system of regular releases, with documentation of course.
Would you like help from the community?
Any help is more than welcome, we accept everyone who's motivated to add value to the current framework. Whether it be adding documentation, providing integrations with other Swing frameworks, or just providing fresh ideas, we can use all the help we can get.
Anything else you'd like to share?
The current Spring RCP team isn't big, but we're a happy bunch. I'd like to thank everyone who has helped in the last 4 years, because their efforts have made the framework what it is today.
You'll certainly be hearing from us in the future!