JVending is a content provisioning system that implements most of the J2EE Client Provisioning Specification (JSR-124).
JVending is a content provisioning system that implements most of the J2EE Client Provisioning Specification (JSR-124). It provides catalog management, device detection and Web/WAP based browsing. It is designed to run on embedded servers and DBs, as well as within more traditional carrier systems and deployments.
The mobile application space deals with numerous handheld devices, each with different capabilities. It's a challenge to match content requirements - such as screen size, MIDP version, and memory - to an appropriate device. The JSR-124 expert group addressed these issues by creating a specification that defined how to match content requirements to device capabilities. The specification also covers discovery of content, stocking of content and delivery adapters for provisioning. While the specification arose to address pain points within the mobile industry, the specification covers all content and all devices (including PCs).
JVending initially arose from a desire to demonstrate the basics of DRM and OTA provisioning, but later developed into a fully functional provisioning server based on the JSR-124 spec. An early goal, maintained throughout the life of the project, has been to build a provisioning server that is light enough to deploy on PCs so that the individual can participate in the sharing and publishing of content.
JVending is the only open-source version of JSR-124. While there are a number of other content repositories, JVending is the only one specialized for general capability matching and custom interactions to the device, making it highly extensible. For example, users can easily create custom interfaces - SOAP, RDF, HTTP, OTA - that sit on top of a common repository with advanced device capability matching. In my case, I recently developed a Maven adapter to deliver artifacts to the build machine.
There is also exciting, new work in Product Line Architectures that integrates JVending with Scatter for matching devices and applications across millions of variants. This has important implications for social and location aware content delivery.
ASF would be a good home for JVending due to the ASF's emphasis on community building, which is an area that has been enormously difficult to do on sourceforge.
- Change code base to ASLv2
- Import code base to incubator SVN
- Remove LGPL Hibernate dependencies
- Recruit developers
JVending implements most of the JSR-124 spec but has not been tested with the TCK. The last release of JVending provisioning J2EE component was April 2006. There has been subsequent work related to integrating with WURFL and adapters for provisioning of Maven artifacts. No active work is going on at this time.
There is currently only one developer on the project. Additional developers will be added by following the Apache meritocracy process.
Various companies have expressed interest in deploying JVending but no active community has involved in its development or use. Given the current trends in self-publishing of content, there is a large potential base of users and developers, particularly those wanting to deliver personal content to mobile devices. Also, since JVending is implementing a JSR spec, I expect there to be interest in commercial developers wanting to leverage open standards in the provisioning space. The goal is to attract 3-5 developers from different companies/organizations to sustain the project.
Shane Isbell, who is the only developer on the project, founded JVending.
JVending currently has dependencies on Apache projects jaxme for processing of configuration files and Lucene for content search. It is packaged as a WAR file and runs on Tomcat. It also uses Apache Maven for the build and currently supports delivery of Maven artifacts through an adapter. The Apache NMaven podling uses a modified version of JVending's registry component. So there is a fair amount of existing alignment with existing Apache projects.
This is the primary risk to JVending. It only has one developer and needs to build out a community. There is a strong code base to build upon; community building will be the primary, initial focus of the project.
Inexperience with Open Source
JVending started as an open-source project in February 2004. The primary developer is the founder of Apache NMaven podling (and an Apache Committer).
Reliance on Salaried Developers
The primary developer is not paid to work on JVending.
An Excessive Fascination with the Apache Brand
From first hand experience, I know that the Apache brand does attract committers and a broad range of interested parties. The culture is also one of respect among members of the community. These factors are a key in deciding where to grow a project.
- JSR-124 Specification: http://jcp.org/aboutJava/communityprocess/final/jsr124/
- JVending Web Site: http://jvending.sf.net
- JVending Project Page: http://sf.net/projects/jvending
- Provisioning and Digital Rights Management (with JVending): http://sys-con.com/read/43940.htm:
- JVending MMS Client: http://sys-con.com/read/44695.htm
- Product Line Architecture (using JVending for Delivery): http://www.dre.vanderbilt.edu/~jules/jbcs-jwhite.pdf
The latest source for JVending provisioning project has been moved to SVN: http://jvending.svn.sourceforge.net/viewvc/jvending/trunk/
Source and Intellectual Property Submission Plan
The current license for JVending is LGPL, but since all of the code is coming from a single developer (who is already an Apache Committer), it will be a simple process of converting to ASLv2 license and importing code from the sourceforge code base.
JVending does use Hibernate, which is covered under LGPL; this will need to be replaced. There is also one config file that jaxme cannot process so there is a dependency on the JAXB reference implementation covered under CDDL. A complete list of dependencies can be found here: http://jvending.sourceforge.net/dependencies.html
Shane Isbell (shane.isbell at gmail dot com), Current Apache Committer
In need of mentors to volunteer.
In need of sponsoring entity. Since JVending is not a common component, I would see the sponsoring entity as the incubator.