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
- License all PhoneGap source code and documentation to the Apache Software Foundation. (We already name the Apache license in our CLA.)
- Setup and standardize the open governance of the Callback project.
- Rename all assets from PhoneGap to Callback in project src, docs, tests and related infrastructure.
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
- Brian LeRoux, Nitobi
- Dr. David Charles Johnson, Nitobi
- Fil Maj, Nitobi (BlackBerry)
- Joe Bowser, Nitobi (Android)
- Shazron Abdullah, Nitobi (iOS)
- Michael Brooks, Nitobi (Tooling, Docs)
- Herm Wong, Nitobi (webOS)
- Anis Kadri, Nitobi (Bada)
- Jesse MacFadyen, Nitobi (WP7)
- Brett Rudd, Nitobi
- Ryan Willoughby, Nitobi
- Bryce Curtis, IBM
- Becky Gibson, IBM (iOS)
- Simon MacDonald, IBM (Android)
- Drew Walters, IBM (BlackBerry)
- Justin Tyberg, IBM (BlackBerry)
- Patrick Mueller, IBM (Tooling, Weinre)
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:
- PhoneGap/iOS http://github.com/phonegap/phonegap-iphone
- PhoneGap/Android http://github.com/phonegap/phonegap-android
- PhoneGap/BlackBerry http://github.com/phonegap/phonegap-blackberry-webworks
- PhoneGap/webOS http://github.com/phonegap/phonegap-webos
- PhoneGap/WP7 http://github.com/phonegap/phonegap-wp7
- PhoneGap/Bada http://github.com/phonegap/phonegap-bada
- PhoneGap/Mac http://github.com/phonegap/phonegap-mac
- PhoneGap/Docs http://github.com/phonegap/phonegap-docs
- PhoneGap/Debug http://github.com/phonegap/weinre
- PhoneGap/Test http://github.com/phonegap/mobile-spec
Beta, deprecated, and experimental codebases make up the rest.
Source and IP Submission Plan
- All canonical source will be moved to Apache infrastructure under the name Callback.
- Documentation should be moved completely over to the Apache systems.
- All open to further understanding of Apache infrastructure.
- The existing PhoneGap trademark will be used as a commercial entity.
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
- callback-dev
- callback-commits
- callback-private
Subversion Directories
- incubator/callback/ios
- incubator/callback/android
- incubator/callback/blackberry
- incubator/callback/wp7
- incubator/callback/bada
- incubator/callback/mac
- incubator/callback/docs
(Git mirrors of these codebases will also be needed.)
Issue Tracking (Jira)
- Callback/iOS (CBIOS)
- Callback/Android (CBANDROID)
- !Callback/BlackBerry (CBBLACKBERRY)
- Callback/WP7 (CBWP7)
- Callback/Bada (CBBADA)
- Callback/Mac (CBMAC)
- Callback/Docs (CBDOCS)
Initial Committers
- Brian LeRoux (b at brian.io)
- Dr. David Charles Johnson (dave.c.johnson at gmail.com)
- Fil Maj (maj.fil at gmail.com)
- Joe Bowser (bowserj at gmail.com)
- Shazron Abdullah (shazron at gmail.com)
- Michael Brooks (michael at michaelbrooks.ca)
- Herm Wong
- Anis Kadri (anis.kadri at gmail.com)
- Jesse MacFadyen (jesse.macfadyen at gmail.com)
- Brett Rudd (brett.rudd at gmail.com)
- Ryan Willoughby (rywillo at gmail.com)
- Bryce Curtis, IBM
- Becky Gibson, IBM (iOS)
- Simon MacDonald, IBM (Android)
- Drew Walters, IBM (BlackBerry)
- Justin Tyberg, IBM (BlackBerry)
- Patrick Mueller, IBM (Tooling, Weinre)
- Abu Obeida Bakhach, Windows Phone 7 (abu.obeida at microsoft.com)
- Sergey Grebnov, Windows Phone 7 (sergeyg at bsquare.com)
Sponsors
Champion
- David Nuescheler
- Sam Ruby
Nominated Mentors
- Jukka Zitting
- Christian Grobmeier
- Gianugo Rabellino
- Ross Gardler
- Andrew Savory
Sponsoring Entity
- Apache Incubator