Features/Cordova Container for Sugar




Summary

The cordova container for sugar would help us access all the native device functionalities through the cordova layer.This basically corresponds to the fact that we shall be able to support the cross platform apps. A cordova app which uses some camera feature in android would be able to do same in sugar using the same code.So the developers dont need to recode their apps to get them to the sugar environment.All their apps for the IOS, windows , android etc would work in sugar through the cordova api.

Owner

  • Name: Lionel Laske
  • Email: lionel@olpc-france.org

Current status

  • Targeted release: 0.104
  • Last updated: 25th July,2014
  • Percentage of completion: XX%

Detailed Description

Cordova is basically used as a middle layer between the web app and the native source code. This layer abstracts the native source code by providing its own api which can be used to access most of the functionality features of the native source code.So basically we can access the low lying features( features closer to hardware) through the web app.This enables the developers to keep the same code at top and achieve the same functionality from different platforms.Thus, the web app developers dont need to change their app's code to port it to different platforms if the app is made with cordova and the platform on which he has to port supports cordova.Thus, cordova helps us to make cross platforms apps.This will attract the web app developers to sugar community and help them launch their activities in sugar without playing or learning the native bindings.

Benefit to Sugar

Sugar will be benefited from the cordova layer development as more people ( those with knowing only html,js and css) can contribute to the sugar. People can port their apps to the sugar and see them working live.They dont need to learn the gtk stack or sugar native api to build up activities.Sugar will support the cross platforms apps which work across different platforms and hence the sugar audience would have a better experience

Scope

The changes required on the sugar front would be the support to the cordova plugins. So we basically need to handle the request from the js side and provide the required response back to js. For this we need to build the native side of the various plugins. As we develop support for more plugins , we shall add more code to the sugar front to provide support for them, this is because we wish to abstract the background process of interacting with the lower layer from the user and expose to the user only the cordova api which they can use to develop their app.

The basic area of change would the apisocket.py through which we communicate with the js side and back. Also we shall add various files which provide the native support for the plugins in a folder named cordova , which is imported in apisocket.py

UI Design

Does the feature have a direct impact on the work flow, or does it need a UI? Link here mockups, or add detailed descriptions.

How To Test

Features/Cordova Container for Sugar/Testing

User Experience

If this feature is noticeable by its target audience, how will their experiences change as a result? Describe what they will see or notice.

Dependencies

What other packages (RPMs) depend on this package? Are there changes outside the developers' control on which completion of this feature depends? In other words, does your feature depend on completion of another feature owned by someone else or that you would need to coordinate, which might cause you to be unable to finish on time? Other upstream projects like Python?

Contingency Plan

If you cannot complete your feature by the final development freeze, what is the backup plan? This might be as simple as "None necessary, revert to previous release behaviour." Or it might not. If your feature is not completed in time, we want to assure others that other parts of Sugar will not be in jeopardy.

Documentation

Is there upstream documentation on this feature, or notes you have written yourself? Has this topic been discussed in the mailing list or during a meeting? Link to that material here so other interested developers can get involved.

Release Notes

The Sugar Release Notes inform end-users about what is new in the release. An Example is 0.84/Notes. The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns. If there are any such changes involved in this feature, indicate them here. You can also link to upstream documentation if it satisfies this need. This information forms the basis of the release notes edited by the release team and shipped with the release.

Comments and Discussion