Apache Callback Proposal

Abstract

Apache Callback is a platform for building native mobile applications using HTML, CSS and JavaScript.

Proposal

Apache Callback allows web developers to natively target Apple iOS, Google Android, RIM BlackBerry, Microsoft Windows Phone 7, HP webOS, Nokia Symbian and Samsung Bada with a single codebase. The Callback APIs are based on open web standards. The Callback bridge technology enables access to native device capabilities. Utilizing the Callback bridge native plugins allow for any type of native access from the embedded webview.

Background

Apache Callback is the free software evolution of the popular PhoneGap project.

PhoneGap evolved from a hack that enabled a FFI (Foreign Function Interface) to an embedded WebView on iOS to a complete suite of tools for tackling parity across many mobile device and desktop platforms.

PhoneGap has always focused on two complementary goals. Our first goal, is to see the web as a first class development platform. Not a sandbox without a filesystem but a real first class platform that includes access to the local system apis, sensors and data, in addition to first class tooling such as system debuggers. The second goal of PhoneGap is for the project to cease to exist. This is not a nihilistic sentiment, rather we at the PhoneGap project are providing a reference implementation for web browsers to assist and guide the standardization process of browser APIs.

The name and trademark of PhoneGap will become the commercial entity for the project. The source, code, documentation and related assets will all be contributed to the Apache Foundation as Callback.

The Callback name comes from the event of the same name that is fired when the FFI bridge is established.

Rationale

The dominate window to the web is quickly becoming devices, mostly phones. The manufacturers of devices, creators of mobile operating systems, and authors of web browsers are consolidating. (In many cases these are all already the same company.) Those stakeholders may see a future for the web but their bottom line is not necessarily motivated to participate in an open web. It is especially clear that while many of these platforms have been seeing some level of strategic neglect in favor of enhanced experiences at the price locking developers into their respective platforms. The Callback project exists to bring the focus back to an open and accessible web.

Initial Goals

Current Status

Callback is a mature software project recently shipping 1.0 on July 29, 2011.

Meritocracy

Callback has always been a project driven by merit and, in a sense, our solution is brute force requiring many collaborating developers to solve our goals.

It would be far easier, and perhaps more "correct", for the Callback project to port a single web browser codebase, and API bindings, across platforms but our executable size would be appreciably larger, unacceptably so for mobile, and our target abstraction would be only tertiary to maintaining a codebase of that size. By relying on the platform browser, exposed by the platform SDK, we get a quick win to the browser and only have to focus on our bridge. This means the project requires developers with proficiency on each platform: collaboration is a natural side effect.

Community

The community surrounding Callback is vast, diverse, distributed globally, and with all levels of proficiency in software development -- the common thread of web development binding them all. In terms of contribution, excluding Nitobi Software employees, the Callback project has 70 contributors.

In terms of user adoption, precise numbers are impossible for us to know due to the open nature of the project. At the time of this writing Callback is downloaded 60,000 times a month and daily traffic to http://phonegap.com is roughly 24,000 uniques (625,000 / mo). The Callback mailing list has over 7,000 members. A quick look on our IRC channel or Twitter usually shows activity within minutes. The community is engaged and active daily. We really try to be as responsive, inclusive and honestly emphatic when it comes to supporting our community.

Core Developers

Alignment

The only way the Callback project can work is if it is an open, transparent and collaborative effort. The proliferation of operating systems and platforms requires a large amount of manpower to tackle! The project has now grown in mind-share and community enough that we believe it is time we work with a foundation to see the code mature in a fashion consistent with our values.

Known Risks

There are many organizations outside Nitobi and IBM behind the Callback project but generally it is these two organizations that divide, and conquer, the work. We recognize the risk of having two sponsoring corporations with salaried developers behind the project and would like to see more free collaboration from the community. That said, many, if not most, project contributors work on Callback in their own time and outside of the daily grind.

Documentation

It should be noted that a community effort is currently underway translating the Callback documentation from English into Japanese, Chinese, Spanish and Portuguese.

Initial Source

Callback is a diverse project. Originally we maintained all platforms from a single source tree. This became untenable as new platforms and structure was introduced. All projects related to the Callback project can be found on GitHub under the PhoneGap organization (http://github.com/phonegap).

The main Callback repositories are:

Beta, deprecated, and experimental codebases make up the rest.

Source and IP Submission Plan

External Dependencies

All Callback projects rely on the native SDKs for their respective platforms. The Callback project itself does not rely on 3rd party libs. The BlackBerry implementation does have its own Java implementation of JSON library with more compatible licensing.

Required Resources

Mailing Lists

Subversion Directories

(Git mirrors of these codebases will also be needed.)

Issue Tracking (Jira)

Initial Committers

Sponsors

Champion

Nominated Mentors

Sponsoring Entity

CallbackProposal (last edited 2011-10-12 20:01:41 by JukkaZitting)