Abstract

Enterprise Social Messaging Experiment (ESME) is a secure and highly scalable microsharing and micromessaging platform that allows people to discover and meet one another and get controlled access to other sources of information, all in a business process context.

Proposal

We propose to move future development of ESME to the Apache Software Foundation in order to build a broader user and developer community. We hope to encourage contributions to and use of ESME, especially as an enterprise-grade text messaging platform for use behind the corporate firewall.

Background

Adopting social networking concepts such as tags and groups, ESME provides the business communications framework that allows for the fastest and most reliable way of discovering the best solution to everyday problems for people working in peer and extended networks. It reduces the risk of applying suboptimal solutions by making it easy to find the right people at the right time with the expertise for a given situation by allowing the participation of mobile workers, integrating with existing systems, and providing for contextually appropriate document attachments.

The ESME architecture has been devised to meet the business requirements associated with reliability and scalability. The use of the Scala programming language and the Lift web framework on the server provides rapid development capability as well as browser push functionality ("Comet") as standard. The open server side architecture allows other messaging environments - internal (Alerts, Enterprise Services, etc.) as well as public (Twitter, external web-services, etc.) - to be consumed as messaging sources. An event-driven actions framework within ESME allows users to filter their information flow as well as to forward ESME messages to other systems via HTTP or email.

The ESME server is written in Scala and uses the Lift web framework to produce a browser-based user interface and also to expose a REST API. This allows for other clients, and an Adobe Flex/Air client using the REST API is a part of the project. Search functionality and textual analysis is provided by using the Compass wrapper for Lucene.

The use of Adobe Flex/AIR on the client assures that business users are given a user interface that meets their needs regarding functionality without clutter. ESME's open architecture enables the possibility of other client technologies such as Symbian S60 mobile, SAP Web Dynpro, RIM BlackBerry and Apple iPhone as examples.

The alpha version of ESME is currently "live" at http://www.esme.us/esme/index and the AIR client is also available to download from the same address. This version was presented in front of around 5,000 developers at the Demo Jam events during SAP's Tech-Ed conferences in Las Vegas and Berlin.

ESME focuses primarily on usage in enterprise settings where the use of open-source software is often controversial. Our decision to move to Apache will help further the use of open-source software in corporate settings especially as it has already been architected for inclusion in SAP environments.

Rationale

ESME has attracted a great deal of media and end-user attention based on its unique feature-set and the underlying technology (see http://blog.esme.us/2008/09/25/esme-in-the-news/). We believe that ESME's vision is unique in the area of microsharing.

The ESME project team is interested in joining the Apache Software Foundation for several reasons:

  • To help the project attract contributors and service providers who will feel more comfortable with the licensing coming through a respected, well known and established organization such as Apache.
  • To facilitate the growth of a broader community of users. The project currently lacks sufficiently clear direction, leadership, and process; we believe the project will benefit greatly from Incubator mentorship.

As the only open-source micro-messaging ("Twitter-like") project which is both enterprise-oriented and targeted at the Java platform, we think the ESME project is an ideal fit for the Apache Software Foundation.

Current Status

Meritocracy

Since the project's inception, its development has been coordinated through collaborative decision-making on the mailing list, through daily scrum calls, via Twitter and using open discussion on ESME itself. The ESME community encourages suggestions and contributions from any potential users and developers. The ESME team has no leader: it operates by consensus among a set of core contributors aided by a larger group of allies who help the project in any way they can. All of the core developers are committers to the current repository; new committers are granted access once they have demonstrated an understanding of ESME and have at least a proof-of-concept of their patch working.

Community

Many members of the team are SAP Mentors, i.e. professionals who "are role models who differentiate themselves through the high quality and frequency of their community contributions, their perspectives, attitudes, and interaction styles. They are subject-matter experts who are passionate about SAP and share their opinions and insights with the community" (Source: https://wiki.sdn.sap.com/wiki/display/SAPMentors/SAP+Mentor+Initiative+FAQs). In addition, team member David Pollak runs the Lift project, and is an active member of the Lift and Scala communities.

The important role that the community plays is also evident in the number of available ESME clients (ABAP, VBA, Java, Javascript, etc.) that were contributed by the community and which are either available in the Google Code repository (http://code.google.com/p/esmeproject/) or on the ESME blog (http://blog.esme.us/).

Core Developers

David Pollak (most of the Scala code) Darren Hague (some Java, Scala and JavaScript code) Mrinal Wadhwa (most of the AIR/Flex code, some HTML) Thomas Jung (most of ABAP code) Athavan Raja (some of the ABAP code) Vassil Dichev (some Scala code) Dick Hirsch (VBA & JavaScript code) Anne Kathrine Petterøe (some HTML)

Alignment

ESME aligns well with ASF projects utilizing J2EE infrastructure such as Tomcat. Of particular relevance are projects such as Lucene and Maven. Key libraries used include Lift and Compass, both of them Apache-licensed projects. ESME does not use any GPL code.

Although ESME originated within the SAP community and has SAP-specific extensions, the core server code is and will continue to be designed to run on any J2EE-compliant server. SAP- (or other vendor-) specific extensions will be implemented as modular plug-ins, so as not to create a dependency on SAP or any other vendor.

License

The ESME codebase is Apache 2.0 licensed, and currently hosted at Google Code.

Known Risks / Avoiding the Warning Signs

Orphaned Products

Most of the active developers aim to become Apache committers and have a long term interest in developing and maintaining the code.

Most of the Scala and Lift knowledge for the ESME server currently resides with David Pollak. If David were to leave the project, this would significantly affect the pace of server-side development. However, Darren Hague, Vassil Dichev, Mrinal Wadhwa and others have all spent time working with the server code and could continue the work in David's absence, albeit more slowly. In addition, we hope that joining the Apache Software Foundation will help bring in more developers who may be interested in using ESME to learn or polish their Scala & Lift skills. In time, this would mitigate the project's dependence on David's knowledge. Another mitigating factor is that the Scala and Lift communities have active and helpful mailing lists for any queries that the ESME team may have.

Inexperience with Open Source

As a lead developer, David Pollak has significant experience with open-source projects including Lift, Social Fabric, and others. His guidance has been extremely useful in ensuring we use libraries with Apache-compatible licenses. Although many members of the team have no prior open source committer experience, they have become familiar with the open source approach through their involvement with ESME, which was community-based from the start, and moved source control and issue tracking into the open on Google Code in September. Moving to the Apache Software Foundation would enable the team to learn more about open source project governance and to correct bad habits such as a tendency to use our private Google group for discussion and a tendency not to record minutes during our team conference calls.

Homogenous Developers

The ESME project team consists of more than just developers. As a result of our focus on the enterprise, the individuals involved range from process experts, UI designers, bloggers and marketing gurus to Java developers, Scala developers and ABAP developers who are joined by a common desire to bring microsharing to the enterprise.

The current list of committers includes developers from several different companies plus many independent volunteers. The committers are geographically distributed across the U.S., Europe, and Asia, and they are all adept at working in a distributed environment.

Reliance on Salaried Developers

Some of the initial committers are salaried developers employed by SAP. Like everyone involved in the project, however, they work on ESME in their own time, and SAP does not own any of the ESME code. The remaining developers are individual volunteers who are passionate about technology and the ESME vision.

Relationships with Other Apache Products

ESME uses Maven for its builds, and the current stable release is deployed on Tomcat at http://esme.us; when running in developer/test mode, it uses Derby as the database; Lucene is used for the search engine, wrapped by the Apache-licensed Compass library. A closer association between ESME and Apache OFBiz may also be of interest, since ESME has already proven its ability to integrate well with SAP and other ERP systems. A tighter integration in this area could prove beneficial to both projects.

An Excessive Fascination with the Apache Brand

The ESME team will strive to avoid inadvertent abuse of the Apache brand and will work with the Incubator to ensure the brand policies are respected. Although the impact of the Apache brand cannot be ignored, it is more a valuable by-product of joining the Apache Software Foundation than an aim in itself: our primary motivation is to enable ESME to benefit from the Apache Incubator's experience with the diverse projects with which it has been involved. This would provide us with direction and help identify ways to improve our processes.

Maturity of the Lift Framework

The Lift framework, used heavily by the ESME server, has not yet reached version 1.0 and has been subject to breaking changes in the API; in order to get support from the Lift developer community, ESME needs to be built using the nightly builds of Lift. However, we expect that the API will become stable at the end of 2008 when the Lift 1.0 release candidate becomes available.

Documentation

Initial Source

Originally hosted on Assembla, the code is currently hosted on a Google-Code Subversion server.

http://code.google.com/p/esmeproject/source/checkout

All dependencies have Apache compatible licenses.

Source and Intellectual Property Submission Plan

ESME has already been released under the Apache 2.0 license.

External Dependencies

The dependencies all have Apache compatible licenses. These include BSD, CDDL, CPL, MPL and MIT licensed dependencies. .

Required Resources

Mailing lists

  • <<MailTo(esme-dev AT incubator DOT apache DOT org)>>
  • <<MailTo(esme-commits AT incubator DOT apache DOT org)>>
  • <<MailTo(esme-user AT incubator DOT apache DOT org)>>
  • <<MailTo(esme-private AT incubator DOT apache DOT org)>>

Subversion Directory

https://svn.apache.org/repos/asf/incubator/esme

Issue Tracking

JIRA ESME

Initial Committers

  • David Pollak feeder.of.the.bears at gmail.com
  • Darren Hague d.hague at sap.com
  • Vassil Dichev vdichev at gmail.com
  • Mrinal Wadhwa mrinal.wadhwa at gmail.com

Affiliations

  • Darren Hague (SAP)
  • Thomas Jung (SAP)
  • Dick Hirsch (Siemens SIS)
  • Anne Kathrine Petterøe (Pearl Consulting)

Sponsors

Champion
J. Aaron Farr Champion (and Mentor) for the project, (as defined in http://incubator.apache.org/incubation/Roles_and_Responsibilities.html)

Mentors

  • J. Aaron Farr
  • Bertrand Delacretaz
  • Daniel Kulp
  • Gianugo Rabellino
  • Sylvain Wallez
  • No labels