FireFly DevKit - The Mobile Web Developer Kit
The FireFly DevKit Project is a proposed open source subproject under the Device Software Development Platform (DSDP). This proposal is in the Project Proposal Phase, as defined in the Eclipse Development Process document, and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.firefly newsgroup.
The FireFly DevKit project intends to develop an extensible mobile web developer kit for use in creating and testing traditional and next-generation mobile RIA applications. The new generation of high-speed data networks and powerful mobile internet devices such as smartphones equipped with web browsing capabilities like the iPhone are enabling a dramatic new level of personal and social connected-ness for millions of mobile users. These users effectively take the web with them wherever they go. Unfortunately much of the web content and services currently available to mobile users is designed for use on laptops and work stations and is generally not well suited for use on the much smaller mobile internet devices. The FireFly DevKit will help address the development challenges that web designers and programmers face when modernizing existing web content and developing new innovative web applications and services for use on mobile internet.
The FireFly mobile web developer kit will consist of the following extensible frameworks and toolkits, and equally important, educational resources:
- Eclipse Tool Frameworks
- Mobile Web Rendering Kit (2.3)
- Mobile Rich Internet Application Services
- Educational Resources (2.6)
It seems that the most successful Eclipse projects include developer tools at some level; the FireFly DevKit project is no exception. Two tool frameworks will be developed that enable mobile web developers to visualize and debug mobile web applications from within an Eclipse-based IDE. Beyond this the FireFly project will develop next-generation technologies and frameworks to support the creation of mobile web applications that look and behavior similarly to native applications and are able to interact with device services such as GPS, accelerometers and personal data. Lastly, unlike many OSS projects, educational resources and community development will be given a level of prominence at least as high as code development. We plan to develop how-to articles, tutorials, best practice guidelines and webinars for the mobile web developer community. Additionally we will provide architectural, design and API documentation for developers wishing to extend any of the FireFly frameworks.
Initially, example implementations of the project frameworks will be provided for the iPhone. As resources become available, examples for the G1-Android platform will also be developed. Additionally, the project will actively recruit and accept contributions for other mobile platforms such as Symbian, Windows Mobile and others.
The following diagram provides a graphic organization of the FireFly DevKit components.
Each of these components is described in more detail in the remainder of this section. For a discussion of what is not in scope see Section 3.
When programming, most developers dislike switching between unintegrated tools and environments. Frequent change of focus interrupts their flow of concentration, reduces their efficiency and makes them generally grumpier :). For mobile web application development, web designers and programmers need to quickly and seamlessly perform incremental development and testing directly within an IDE environment rather than switching from an IDE to a device testing environment and back again. The Mobile Web Previewer Framework is an extensible Eclipse tools framework for the creation of mobile device emulators specifically for previewing web content in a realistic WYSIWYG manner. This framework will enable developers to preview web content and services in an emulated mobile device web browser from within an Eclipse IDE. Some of the key features of the Previewer Framework will include:
- an embeddable WebKit browser component and mobile Firefox when made public
- device description and layout engine
- skin support for creating full sized, photo realistic device faceplates
- simulation of device orientation
- simulation of touch screen gestures and events
- simulation of browser user-agents
- extensible Eclipse plugin model for incorporating new browser components and device descriptions
- exemplary iPhone previewer will be provided to support framework testing and to serve as a guide for developers creating custom previewers. Additional device previewers will be considered from other contributors.
A key expectation of this framework is that it will enable mobile internet device providers and tool developers to rapidly create custom previewers for the growing population of new devices as well as existing devices.
Efficient mobile web application development requires the support of debugging tools. The Mobile Web Debugger Framework will provide APIs and a pluggable implementation model for supporting the debug capabilities of multiple mobile web browsers. The framework will integrate with the Eclipse debugger infrastructure and provide developers insight into the execution state of their mobile web content and dynamic UI behaviors. Initial development effort will provide debugging support for simulated mobile web environments provided by previewers built on top of the Mobile Web Previewer Framework. Following that, support will be provided for remote inspection and debugging directly on the device in its mobile web browser. Key features of this framework will include:
- execution breakpoints
- execution stepping
- inspection of current web DOM content
- console output support
- local and remote debugger support for WebKit
- local debugger support for the Mozilla component
The costs and complexity associated with native mobile application development, especially across multiple mobile platforms, can be very high. There is an emerging trend to extend the well established web programming model as an alternative strategy for developing mobile applications. To support this strategy mobile web application designers are challenged to provide web user interfaces that replicate the more native look and feel of the host mobile device. For example, imagine a web application that runs on the iPhone's Safari browser yet looks and behaves similar to a native iPhone application. To help simplify the development of this type of mobile web application we plan to develop an extensible web rendering toolkit that provides device-specific widget rendering and behaviors.
Rich internet application (RIA) technologies are rapidly improving and will ultimately introduce a new wave of innovative mobile web applications that marry the best of the web with device-resident information and device services. The Mobile Device Services Access Framework will provide a technology bridge to enable mobile web applications access to key device services. Example services available on many mobile devices include global position measurement, accelerometer sensors, camera instrumentation and vibration generation. Common APIs and web components for interacting with primary services will be provided along with a device-side pluggable driver model. An example iPhone implementation and possibly a G1-Android implementation of the framework will be provided to support framework testing and to serve as a guide for web application developers. Additional contributions for other devices will be accepted.
The line where the desktop stops and the web starts is becoming increasingly blurred as rich internet application technologies mature. Many mobile internet devices will support the creation of application short-cuts that will launch the device's web browser with a target web application URL and optional application branding and configuration parameters. The developer kit will provide a common API and framework for the creation of custom device-side web browser application short-cuts. Device-specific implementations will be supported by the framework using the Eclipse plugin pattern. An example iPhone implementation and possibly a G1-Android implementation is planned to support testing of the framework and to demonstrate how other device specific installers may be developed.
Educational resources and community development are vital for the success of this project. We plan to develop a series of how-to articles, tutorials, best practice guidelines and present webinars for the FireFly community. Additionally we plan to provide architecture, design and API documentation for developers wishing to extending any of the FireFly frameworks.
The FireFly DevKit objectives are to provide a common solution base for the creation of key mobile web developer tools, common web UI rendering frameworks for mobile web devices and bridging technology to enable rich internet applications access to device-side services. Scope limitations of this project include the following:
IDE Components vs an IDE - This project will provide some of the key enabling mobile web technologies and development tools on the Eclipse platform. These modular components may be combined with other Eclipse-based projects and products to produce a complete mobile web end-user IDE product. Yet there are no plans to expand the project scope to the level of a standalone mobile web application IDE.
Limited Server-side Concerns - While this project is open to supporting the development of server-side UI technologies such as PHP and JSP custom tag libraries as part of its mobile web UI toolkit concentration, there are no plans to address server-side hosting concerns such as JEE web application packaging and application server deployment.
No Project Model Support Requirement - There is no developer tool project structure requirement in scope for this project. Therefore the technologies and frameworks of this project will be developed as independent and agnostic to any specific IDE project structure as much as possible. The FireFly project will provide guidance and support to other Eclipse projects that seek to reuse the work products of this project.
No Native Device Application Development Tools - This project will concentrate on supporting web-centric applications. No native application development efforts are planned beyond those required to support the service access and web short-cut installation frameworks.
The FireFly DevKit Project is proposed as an Eclipse subproject under the Device Software Development Platform (DSDP) due to the expertise and mobile device industry support that shares an interest and desire for the success of this project. The project leadership plans to join the Mobile Working Group and to work closely with its participants. Genuitec, as the submitter of this proposal, welcomes interested parties to use the FireFly DevKit newsgroup to discuss this proposal and to request inclusion as an interested party.
The proposed project members include:
4.1 Initial Committers
- Wayne Parrott, Genuitec - project lead
- Todd Williams, Genuitec - evangelism and development
- Brian Fernandes, Genuitec - development
- Eugene Ostroukhov, Genuitec - development
- Greg Amerson, Genuitec - development & educational resources
- Jens Eckels, Genuitec - evangelism & marketing
- Pete Carapetyan, Genuitec - development & educational resources
- Riyad Kalla - Genuitec - educational resources
- Rosario Aguilar, Genuitec - web design
4.2 Interested Parties
- ICEsoft Technologies, Inc.
4.3 Project Mentors
- Doug Gaff, DSDP PMC Lead
- Gunnar Wagenknecht
5. Relationship to other Eclipse Entities
This project is expected to provide key technologies, frameworks and tools that may be incorporated by other Eclipse projects. A high project priority will be collaboration with the DSDP leadership, the Mobile Working Group and DSDP subprojects that have overlapping or complimentary interests.
6. Tentative Plan
The initial goal of this project is to provide an incubation release with the Eclipse 3.5 platform release.
7. Code Contributions
Genuitec tentatively plans to release the source code to an Eclipse Java WebKit browser component, a device preview framework and debugger implementation. An exemplary iPhone simulator may also be included.