Project Proposal: Tools for mobile Linux (TmL)

The project has been created. Please visit the project page.

Project Proposal: Tools for mobile Linux (TmL)

Project Proposal: Tools for mobile Linux (TmL)

Contents

  1. Tools for mobile Linux
  2. Background
  3. How TmL fits into the Eclipse Ecosystem
  4. Scope
  5. Organization
  6. Proposed Project Lead and Initial Committers
  7. Interested Parties
  8. Code Contributions
  9. Participation

Tools for mobile Linux

The Tools for Mobile Linux (TmL) project is a proposed open source project under the Device Software Development Platform project.

This proposal is in the project Proposal Phase as defined in the Eclipse Development process document. It is written to declare the intent and scope of the project and to solicit additional participation and input from the Eclipse community.

You are invited to comment on and/or join the project. Please send any feedback to the eclipse.dsdp.tml newsgroup.

Background

The largest volume segment of the consumer electronics industry is mobile phones, delivering 800 million units a year. Those phones have become increasingly powerful and complex, demanding an ever increasing set of applications and features.

Linux is an emerging mobile OS being adopted by mobile device manufacturers. The development of end-to-end services for Linux-based mobile phones spans a wide range of applications, including enterprise web services, location-based-services, 3D multiplayer gaming, and mobilized corporate data. Unlike JavaME, which is used most commonly for gaming applications, mobile Linux can provide a much larger, more powerful set of APIs to address the needs of these more sophisticated service deployments.

Using Linux also not only leverages a large array of existing desktop applications, but it also taps into a large ecosystem of skilled Linux developers in the Open Source and commercial developer community. Another often overlooked benefit of using Linux is the large number of existing Development Tools, from the GNU compiler toolchains to profilers and emulators.

How TmL fits into the Eclipse Ecosystem

The Eclipse DSDP and Tools projects already contain many projects applicable to the development of mobile Linux applications. The goal of the "Tools for Mobile Linux" project is to complement those existing projects (like e.g. CDT, TM, TPTP) and extend Eclipse into an end-to-end development environment for mobile Linux-based devices.

The goal is to create a development platform that can drive the developer through the application lifecycle from design (modeling tools), development (C/C++ crosscompiling), testing (Linux OS emulators & frameworks), and deployment (application signing tools).

Scope

As described above, many existing Eclipse projects are very applicable to the area of Mobile Linux application development, although for some projects, additional "extensions" are needed. Examples include "Target Management" agents specialized to mobile Linux applications, or DD extensions tailored for mobile requirements.

One task of TmL will be to act as an Umbrella Project to seed ideas in the relevant sub projects and drive prototyping. Members of the TmL project will identify missing functional areas specific to applications in the Mobile Linux space and develop Eclipse Plug-In's and Features for those use cases.

The goal for the TmL project is to provide tools which to span the entire software development cycle: Define, Design, Develop, Debug, Deploy.

  • Define:
    • system software architecture
  • Design:
    • software modeling
    • GUI design (possibly using DSDP/NAB)
  • Develop: (using and extending CDT)
    • code development
    • managed toolchains for cross compilers
    • managed make for different platforms
  • Debug: (using DSDP/TM, DSDP/DD and TPTP)
    • device emulator
    • on-device debugging
    • on device and emulator unit- and regression testing
    • on-device profiling
    • testing of enterprise with simulated mobile infrastructure
  • Deploy:
    • application signing and on-device deployment

The TmL Emulator Framework

The most immediate need for a successful mobile Linux application development environment is an emulation environment to execute on the development computer.

The proposal is for TmL to develop a generic emulator framework, which can be used to execute code in an environment similar to a mobile phone. This emulator will be tied into the Eclipse environment via Plug-In's, and can be controlled by calls to a defined TmL emulator API. The framework will also define a set of extension points to add support for generic devices (like a GPS unit, a SIM card or similar), which can be controlled by the Eclipse Plug-Ins.

The first proposed implementation of this TmL Emulator framework will be based on an x86 virtualization sandbox, like UML, VMWare or others. The goal is to keep the framework API independent of the used sandboxing technology. The initial implementation of the emulator will provide a runtime environment for Mobile Linux Applications, but the design should also be easily extensible to other mobile technologies, like e.g. a J2ME emulator or a Symbian emulator.

Other emulator implementations for technologies other than Linux should not be technically precluded, but are out of the initial scope of the project.

Simulation of a Mobile End-to-End Environment

Another of the areas of focus for the TmL project will be the development and testing of end-to-end services for mobile devices. As such, the Eclipse TmL project will provide a tighter integration of server-side development environments with device-side emulation environments.

  • Simulation of a Mobile End-to-End environment
  • SMS backend simulation
  • Location based services simulation

The simulation for those services will be based on a similar architecture as the Emulator. The client-side of the simulated devices will tie into the same basic framework as used for the TmL Device Emulator. The virtual devices communicate through the emulator native framework. On the Eclipse side we will define an "extension Point" API which can be used by Eclipse Plug-Ins to control the devices.

Organization

We propose this project should be undertaken within the top-level Eclipse Device Software Development Platform (DSDP) project.

Consistent with the scope of the DSDP project, we envision that the Eclipse TmL project will provide a home for embedded Linux extensions across a wide range of existing and future Eclipse projects. The Eclipse Tml project will work with several related top-level Eclipse projects such as the Tools project (especially in the CDT and Modeling sub-projects) and Test and Performance (especially in the Monitoring Tools, Testing Tools, and Tracing and Profiling sub-projects) as well as working with the other DSDP sub-projects including Target Management, Device Debug, and Mobile Tools for Java. We will act as an advisor and resource provider, and will create complementary extensions, to these other Eclipse projects that wish to become more applicable for C++ embedded/mobile development.

Proposed Project Lead and Initial Committers

  • Christian Kurzke, Motorola (Proposed Project Lead)
  • Mauren Brenner, Eldorado (Motorola contractor)
  • Fabio Fantato, Eldorado (Motorola contractor)
  • Stephen Chen, Motorola

Interested Parties

The following companies have expressed interest in the project:

  • Nokia
  • Wind River
  • ARM
  • Palm

Code Contributions

We will conduct a review of all potential contributions, as several organizations have developed capabilities similar to what Eclipse TmL proposes. Those contributions which best align with the goals of the project will be refactored and used as the starting point for TmL.

Participation

The success of this project is dependent upon the participation of mobile Linux application developers, as well as mobile Linux device developers. We intend to reach out to this community and enlist the support of those interested in making a success of the Tools for mobile Linux project. Interested developers should contact the TmL newsgroup to express interest in contributing to this project.