In the second in our series of articles and interviews in anticipation of the Eclipse Ganymede release I discuss the Eclipse Communications Framework with project lead Scott Lewis. Here Scott gives an overview of the framework and new features added for the release. There is an ECF overview/getting started document online, which will be updated for the Ganymede release.
James Sugrue: For those unfamiliar with ECF, could you give a quick overview?
Scott Lewis: Sure. ECF is a framework for building communications applications within Equinox. The framework consists of a set of bundles, that expose various types of communications APIs...e.g. presence/im/chat, voip/call setup, dynamic service discovery, messaging channels, asynchronous file transfer, remote OSGi services, object-replication, and others. Built on these APIs are a growing number of tools and applications that can be used in Eclipse...for example, multi-protocol IM (Google Talk/XMPP, Yahoo, MSM, others), peer-to-peer file transfer, chat, real-time collaboration, real-time shared editing and others.
ECF is very much a layered framework, so that people can use it to whatever level they want. The existing applications can be used 'out-of-the-box' to do real-time collaboration in Eclipse, or the applications can be extended/customized, or completely new/separate applications can be built using one or more of the ECF APIs, or the framework itself can be extended to support other/new communications protocols. It's open top-to-bottom, so people can use it to do what they want to do...from using the applications to do distributed team collaboration, to building their own new client application, to building a server, to building a new framework.
Sugrue: What's new in this release of ECF?
Lewis: Alot, really. We've added quite a lot of new application-level features, and simplified several of the APIs. Further, we've added real-time shared editing, integrated in with the Eclipse text editing framework, and we're now distributing r-OSGi (a framework for doing remote OSGi services) along with ECF. Also, ECF is being used by the Eclipse SDK to support the new install/update...also known as 'P2'.
Sugrue: Real-Time Shared Editing sounds like a pretty advanced feature. Was it difficult to implement?
Lewis: One of our committers started out doing a Google Summer of Code project on real-time shared editing...looking specifically at the algorithms for keeping documents in synch when several people are attempting to change things simultaneously. We were able to take this work and embed it directly in an ECF plugin. Further, because of Eclipse's excellent APIs and frameworks for building editors (text editors, but also other types of editors), we were able to integrate the shared editing with the existing editors without too much trouble.
Sugrue: How much did the bug day concept help with making the deadline for this release?
Lewis: BugDay was very helpful for ECF, as we depend heavily upon our community for finding and fixing bugs. At each BugDay so far, there have been community members who have reported ECF bugs, and provided fixes for them. This is a great help to the ECF committers, as it allows us to address user needs more quickly.
Sugrue: What is ECF's involvement in the new Runtime project?
Lewis: ECF can be used for both the development of applications...in Eclipse and/or in RPC-based applications, or in server-based applications. It's really middleware in the truest sense. There is interest and excitement about using Equinox to build application servers, and ECF can be used to create server applications that communicate with other servers and/or clients. Particularly ECF's discovery, remote OSGi services, datashare, and file transfer APIs are ideal for building servers that communicate.
Sugrue: What do you see as the most important part of the Ganymede release?
Lewis: ECF is being used to support the new Equinox install/update mechanism called 'P2'. That's pretty important to both the platform and us, as it means a part of ECF will be distributed with the Eclipse SDK and used by everyone that uses Eclipse. Also the real-time shared editing work is very important, as it opens up the prospect of using Eclipse for more team-based development, and can be used to support agile development processes, such as pair programming.
Sugrue: How did EclipseCon go for you this year?
Lewis: EclipseCon went great for us. I gave a talk on ECF that was well-received and a lot of fun to give. The presentation materials are available here: http://www.eclipsecon.org/2008/?page=sub/&id=134
Sugrue: What is are the future plans for ECF?
Lewis: As usual, we've got more ideas than resources. We will continue to expand the functionality provided by our existing applications, based upon community feedback. There are several commercial vendors (as well as the Eclipse platform) that have needs for specific ECF APIs (e.g. dynamic service discovery, remote OSGi services), and we will be looking to make those APIs (and all our APIs) easier to use as well as provide more functionality. We are/will be making a concerted effort to produce more documentation...both introduction/tutorial-level documentation, as well as details about the ECF approach. We are participating in standardization efforts (e.g. OSGi Enterprise Experts group) as much as possible, and will continue that. We will be expanding significantly our work on real-time shared editing, and looking to produce support for real-time collaboration using graphical as well as text editors. We are looking to do much more work with voice-over-ip (VOIP). We will also be expanding the work on Equinox P2 and the new E4 project. Finally, ECF is moving from the technology project to the new runtime project, and so will be doing more work on Equinox-server-based messaging, to support SOA architectures.
Sugrue: e4 is on people's minds since EclipseCon. What will e4 mean for ECF?
Lewis: ECF has a lot to offer the E4 effort, I think. Real-time collaboration, remote OSGi services, dynamic service discovery, support for both asynchronous and synchronous messaging, etc are all things that ECF has that will likely prove useful to E4. Further, E4 provides us with an opportunity to get some of the needed support for real-time collaboration (e.g. multiple cursors) into the Eclipse UI/Platform.
Sugrue: Are you working on any other Eclipse projects at the moment?
Lewis: I'm contributing to the Equinox P2 effort, and am also a committer on the new Eclipse Examples project.
Sugrue: What is does the Eclipse Examples project consist of?
Lewis: Well, we have/are going to contribute the following examples to the examples project (already largely completed):
- An adaption of Wayne's sudoku application to be real-time multiuser (using ECF of course)
- Some example ECF server applications: a) an old updatesite server with ECF service discovery; b) a remote services server that exposes an example 'remote environment info service'.
- Some ECF community members are working on remote provisioning using ECF and p2: http://dev.eclipse.org/mhonarc/lists/ecf-dev/msg01570.html. We are hopeful to have this be available in ECF 2.1 timeframe.