The planning for this year’s Eclipse Summit in Ludwigsburg, Germany is underway.
We’ve put in a submission for a short talk to present the work we did at Diamond Light Source. You can view the abstract here. The talk will focus on taking Eclipse into a new scientific domain, with the potential of forming the basis of an open source platform for synchrotron data acquisition. We envisage this would meet the criteria of getting people excited and engaged at the potential for Eclipse to conquer this new territory. Whether the committee agrees with this remains to be seen. The level of talks at Eclipse conferences and summits is always very high so it would be great to make the cut. However competition is stiff and at the time of writing there were 152 submissions to contend with. The talks will be chosen by August 25th, so we await the decision with bated breath…
Back in March, Kichwa Coders was invited to participate in a Buckinghamshire Education Business Partnership (BEBP) at the Great Marlow School.
Kichwa Coders was asked by BEBP if we could provide a mentor for an Enterprise Day. I volunteered to attend the 18th of March session for year 10 students (14-15 years old). The day focussed on a brief prepared by Urban Media looking to get input from the students on a new Family Entertainment Centre to be located in South Bucks.
An Enterprise Day is a day for the students to experiment with some real life business problems. The school or a company from the community puts forward a real life challenge to the students, and under the guidance of a group of mentors they come up with a solution and then present the results back to the mentors and their peers.
In the case of the Urban Media challenge, the class of approximately 200 year 10 students were divided up into teams of 8 students each. The teams had about 4 hours to read the brief, and complete a set of tasks before finally presenting their results to a couple of the other teams. The tasks were:
- coming up with a name for the family entertainment centre,
- create an advertising campaign which included 2 posters, a radio ad script and a storyboard for a TV ad,
- develop two “zones” in the centre, a learning zone and a gaming zone, the result of which should be a diagram for the zone detailing the activities and look and feel of the zone
- come up with the concept for two additional zones and provide the same material as above
- create a presentation to explain to Urban Media, the mentors and fellow students what the team came up with.
As you can see, the students had a huge amount of work to do. I was mentoring three of the teams providing them with guidance and encouragement on these tasks. Some of the students really impressed me with the level of dedication to this task, clearly demonstrating a level of maturity ahead of their age. The result was that all the teams did a very good job, and even though I thought it was a very short time to complete so many tasks most of the teams did.
The Enterprise Days are very good days for everybody involved. The students have an opportunity to complete some real world experience, the mentors get invigorated by the unbounded energy of teenagers, and the sponsoring company gets invaluable ideas from brainstorming with so many people. I am really looking forward to next year’s round of BEBP Enterprise Days.
Moving an existing application to a new platform can be a huge undertaking, often requiring re-writing large portions of the code base to work in the new framework. However, moving a legacy AWT/Swing application to the Eclipse platform does not mean having to abandon the existing GUIs to take advantage of what Eclipse has to offer.
Take Diamond Light Source’s GUI for Data Acquisition (GDA) as an example.
Diamond’s GDA application was originally developed as a monolithic application using Swing for rendering GUIs. As the number of users and developers grew, Diamond decided that Eclipse could quickly provide new features, scalability and improved component interoperability. However, there was a problem with transitioning to a new platform: a large investment had already been made in Swing.
The Eclipse developers had already solved this problem though. They created an SWT_AWT bridge that allows a Swing/AWT component to be added as a component to an SWT composite. This bridge significantly simplified how Diamond was able to transition, by reusing existing Swing components, but still taking advantage of the new capabilities that Eclipse/SWT has to offer. A prime example of a feature that Diamond GDA users and developers desired was more control over the layout of the GUI. By embedding the existing Swing components into individual Eclipse views in a short period of time all the previously mostly static components were draggable, dockable and closeable.
The SWT_AWT bridge lowered the barriers that Diamond had to transitioning GDA to the Eclipse platform. Instead of having to re-write all the necessary component in the new framework, Diamond developers were able to take advantage of Eclipse very quickly and roll out those improvements to the users in record time.
For the technical details on how to use the bridge, see the excellent article by Gordon Hirsch http://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html. Unfortunately, integrating the SWT_AWT bridge has suffered from some headaches when using Xlib (as used on Linux/GTK systems). Some of the Xlib APIs are inherently not thread safe in their design. For example, XSetErrorHandler, which returns the old error handler when setting a new one. Without some application level locking, it is easy to get the error handler into a state when the currently installed error handler is incorrect. When using the SWT_AWT bridge, two separate threads are both accessing Xlib APIs. This can cause the AWT thread to have a stack overflow. The underlying problem will remain due to the Xlib APIs, however, SWT and AWT can avoid using XSetErrorHandler, and therefore avoid this issue. These issues are discussed more fully in Eclipse Bug 171432. The AWT issue has already been fixed in JDK7 build 60, but the fix has not yet been back ported to JDK 6. See Bug and Revision with fix.