Eclipse Communications Framework (ECF)
This proposal is in the Project Proposal Phase (as defined in the Eclipse
Development Process document) and is written to declare the intent and scope
of a proposed project called the Eclipse Communications Framework Project, or
ECF. In addition, this proposal is written to solicit additional participation
and inputs from the Eclipse community. You are invited to comment on and/or
join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.ecomm
The goal of the ECF Project is to provide an open source framework to support the creation of communications applications on the Eclipse platform. The framework will consist of Eclipse plugins that provide high-level APIs to support asynchronous and real-time messaging for human-to-human, human-to-component, and component-to-component communications and collaboration.
A wide variety of Eclipse applications will be easily creatable within this framework:
- Human Communication and Collaboration: Instant Messaging, Chat, Application Sharing, File Sharing, Video/Audio Conferencing, others
- Communication with Web and Peer-Based Services: Access to web-based services via the Eclipse platform such as Weblogs, RSS, Web-based Content Creation, Web-based Project Management Systems, others
- Component-to-Component Communication: Distributed Modeling, Remote Debugging, Team Content Management, Team Workflow Applications, others
As part of the framework develoment and testing, the ECF team will implement a reference subset of applications to demonstrate the utility, and usability of the framework. We will also work with plugin developers, application developers, and the Eclipse community to support the creation of other applications that use this framework. Our ultimate goal is that plugin developers use and/or extend this framework to allow them to build compelling communications applications with the Eclipse platform.
The framework will provide a small set of high-level communications abstractions. Rather than provide yet another messaging API, the ECF project will look to provide plugin programmers with a component API for communications applications so that high-level communications components (e.g. real-time IM/chat, presence, file sharing, audio/video conferencing, etc) may be reused in multiple application contexts and with multiple user interfaces.
The framework will provide a simple API for accessing multiple IP-based protocols, allowing plugin developers to focus on providing application-level integration of communications features and the rapid composition of distributed applications.
To allow interoperability with existing servers and clients, ECF APIs will provide extension points so that multiple protocols may be plugged in to the framework, allowing Eclipse-based applications to interoperate with other clients via standard protocols such as XMPP, SIP/SIMPLE and others, while also being able to easily support communications with legacy and proprietary systems.
The ECF framework will provide for application-level flexibility in the use of authentication, user and component identity, encryption, and authentication. The framework will allow third parties to substitute alternative open source and/or proprietary implementations of any/all of these security mechanisms to support integration with existing security systems, and the satisfaction of application-specific security requirements.
ECF will also provide security mechanisms for authorization and runtime restriction of fine-grained components for controlling the behavior of potentially untrusted components.
The framework will support the runtime distribution of components and dynamic introduction of new protocols to allow for dynamic composition of communication and collaboration applications.
In summary, the major technical goals of ECF will be:
- Simple-Yet-General Communications Abstractions: To support both peer-to-peer and client-server applications
- Interoperability: Through the use of open, layered, replaceable protocols
- Security: Identity/Authentication, Encryption, and Authorization for applications and fine-grained components
- Application Extensibility: Via dynamic distribution of components
- Component/Plugin Architecture Integrated with Eclipse 3.0: Use of the OSGI Component and Service Models Present in Eclipse 3.0
The project expects to have commiters from Composent, Inc., Parity Communications,
and others. We are looking for others to participate in all aspects of
this project. If you are interested in participating, please contact one
of these team members and contribute to the mailing list.
The initial set of commiters will be:
Scott Lewis (project lead)
The project has been formally proposed and is in the Creation Review stage. It will be placed in the Technology PMC as an incubator project to develop this framework, reference applications, and supporting tools.
ECF plugins will be built in Java and will be portable to any platform supported by Eclipse. For components that might not run on Eclipse (e.g. servers), all ECF-created code will be built to depend only upon pure Java Standard Edition (1.4+). We also will look to support OSGI Foundation as a minimum runtime platform.
The plan for the ECF project is still being developed.
We plan to follow a milestone based delivery schedule with incremental progress visible in each milestone. Here is a rough outline of the time line we expect to follow for milestones:
M1 - Q4 2004
Initial release of framework plugins for identity/authentication, asynchronous communication, and basic component abstractions
M2 - Q1 2005
Deploy initial set of demonstration applications upon the communications framework. Finalize APIs and extension points for identity/authentication, asynch communication, and component abstraction after community usage and review
M3 - Q2 2005
Deliver additional demonstration applications, and a broader set of user-level features. Finalize APIs for component model, extension points, and security. Provide working, integrated Eclipse applications for instant messaging/chat, file sharing, data/voice conferencing, and shared debugging
M4 - Q3 2005
Revise and improve demonstration applications, update infrastructure plugin APIs in response to community usage and feedback. Provide demonstration application with Eclipse Modeling Framework-based shared model creation and editing