The following is a proposal for a new top-level project within the ASF.
The Java Resource Simulator (JRS) is a Java-based interface response capture/playback tool for testing purposes, intended for use in development or testing environments.
JRS will provide a lightweight (meaning no or very little code changes to the application under test) utility for Java applications that simulates interactions with remote services, without having to have an active connection to those remote services. JRS is currently a community source, internal project at American Express. This proposal is to develop the JRS code and community at the ASF.
A big problem that legacy-dependent development groups have is that when developing new applications, the legacy systems that they depend on move relatively slowly from a development and integration standpoint, are often unavailable during development and test and require long lead times to set up test data sufficient to give good path and data coverage for front end testing. For this reason, people tend to develop ad hoc "simulators" or "smart stubs" over and over again to enable modularity in development. JRS aims to provide a generic solution to this problem, or at least to minimize the work required to set up and maintain effective resource simulators.
Increasingly, systems are being built by aggregating services from multiple sources. While there are a number of advantages to this approach, testing these service-client systems can be a challenge. Test services have to be deployed and maintained, test data must be managed, test service nodes must be up and running and accessible to clients. Every additional service used adds an additional dependency that makes testing harder to coordinate, execute, and manage in a repeatable fashion.
JRS will provide a framework for simulating remote systems in each of the following ways:
JRS will operate as a library (jar file) that is included with the application that intercepts calls to supported protocols. The persistence component ("JRS server" – for record/playback) can run in the same JVM as the system under test, or it can be run remotely as indicated in a JRS configuration file. The current (working) version supports JMS, Session EJBs, and web services. Support for JDBC is in early stages of development.
The developers of JRS are interested in joining the Apache Software Foundation for several reasons:
In addition to establishing an open development community, the immediate goal is to continue the development of the framework. Main areas of effort:
JRS is currently a community source, internal project at American Express. The code base has been in development for 18 months and an initial internal release is being used by American Express development projects. Along with several other internally maintained components, JRS was opened internally as a community source project earlier this year.
The JRS project will be meritocractic open development. The purpose of this submission is to make a quality product that will be used by many users, and the only way to achieve that is by recognizing the value of community. There are many difficult design and implementation problems to solve in JRS and we feel strongly that open, meritocratic development will result in a substantially better, more extensible and fully-featured product than we could develop internally.
JRS has been developed over the last couple of years as a corporate internal project, with most of the work done by three developers and one architect. Nevertheless, there has been from the beginning an interest to eventually open source the project, as such the project has been opened as an internal "community source" project at American Express. While this clearly does not equate to an open source community development, we believe it gives us a strong base to build upon.
The initial developers for the project are associated with the donating company. Two of the developers have worked on open source projects before (one is an ASF member) and have experience with open development principles. There are a number of other strong developers in the internal community that have expressed interest and we expect will prove themselves worthy committers in a short period of time. In addition, there are some current ASF committers interested in participating in the project and we have included them in the list of initial committers.
The initial code has been implemented in Java and uses a number of Apache and other open source components, such Maven, Log4J, XStream, JUnit, etc. It is expected that further integration may happen with Apache projects such as Oro (regular expressions processing of requests), Axis/CXFire/Mina (alternative JRS client-server protocol and server implementation), Derby (for DBMS persistence of messages), Struts (for JRS server console), and ActiveMQ (for processing JMS selectors during playback).
The initial committers are users of this package and have a long-term interest in use and maintenance of the code. All of the active developers would like to become JRS Committers and plan to remain active in the project.
The initial committers have varying degrees of experience with open source projects as users, participants or committers, with one being an active ASF member. All have been involved with source code that has been released under an open source license and with internal open source projects.
Since the Java Resource Simulator has been developed to date by American Express, the initial contributors to the project are associated with that corporation, though not all are employees of American Express. They are experienced working in a geographically distributed and diverse team and they have a broad range of experiences with open source, industry standards, emerging technologies and product development. Furthermore, our strong intention is to attract a diverse set of additional committers, beyond the initial contributors and current Apache committers listed below.
It is expected that, at the beginning, JRS development will occur on both salaried time and on volunteer time, after hours. While there is reliance on developers associated with American Express, through the incubation process, we expect the independent Community to become actively involved in the project.
JRS currently uses or is planned to use a number of Apache and other open source projects. These have been outlined above.
JRS has been started as a response to real and critical needs of development projects over many years. The originating environment has been IT internal of a non-software company, as such there was/is no need to associate the Apache brand with JRS. We believe that JRS will solve in an elegant and lightweight manner development lifecycle problems and, as such, we are interested in the best way for the project to develop and flourish. We have no interest or intention of "productizing" JRS for commercial purposes or offering paid services associated with its use; though part of our motivation for pursuing open development of JRS under the ASL is that this will not prevent others from doing so.
The scope of the JRS project at ASF would be to continue the product development and would include adding new features and improving performance, scalability, quality, and extensibility.
Documentation is available on request. See below.
Initial source code for the project will be granted (see next section) to the ASF on acceptance of this proposal and once granted it will be made publicly available and the normal Incubator IP Clearance process will be followed to approve inclusion of the initial sources in the project source repository.
American Express is prepared to submit a code grant and a CCLA and to license all JRS code under the ASL. All rights to the current codebase are owned by American Express. The initial committers have or will all submit ICLAs.
The current implementation depends on the following components:
All dependencies have ASL or ASL-compatible licenses.
JRS currently makes no direct use of cryptographic functions.
JRS would like to use a Subversion repository: \[WWW\] https://svn.apache.org/repos/asf/incubator/jrs |
Since JRS would have its own release cycle, it should have its own JIRA project
Tony Ambrozie, Phil Steitz and Ian Gray are employees of American Express. Brendan McCarthy is an employee of Gorilla Logic, working under contract to American Express. The rest are ASF committers working for distinct companies. As individuals, none of the ASF committers have any contract or employment relationship with American Express.
We are asking the Incubator PMC to sponsor this proposal.