Platform runtime

Context

Cordova 3.x is centered around plugins & platforms. An objective is to make it easier to write and publish plugins.

A plugin is tied to a particular platform (ios, android, windows8, blackberry10, fireos, ubuntu, firefoxos, tizen or ?) and is expected to be compatible on these platforms.

A plugin describes its dependencies and additional metadata required for installation on a particular platform.

Problem

There's no clear definition of a Cordova platform. Is it an OS? Is it a rendering engine on top of an OS? Anything that satisfies the Cordova api?

As of this writing, there's 5 platforms officially supported (ios, android, windows8, wp8, blackberry10) and an increasing number of additional platforms.

In those supported platforms, Android and Windows 8 have evolved where several 'runtimes' are available:

Android

Windows 8

Since plugins are tied to particular platform, it makes testing of plugins hard as the number of platforms increases. The state of plugins feels like the "Wild Wild West".

Solutions

Define platform as:

A) An OS that satisfies the core Cordova api.

Keep a few core platforms but use a new 'runtime' flag

e.g. cli perspective

# cordova prepare android                         #uses WebView of OS
# cordova prepare android --runtime crosswalk     #uses Crosswalk
# cordova prepare android --runtime ChromeView    #uses ChromeView bundled jar

# cordova prepare windows8
# cordova prepare windows8 --runtime v81         #uses/injects 8.1  code
# cordova prepare windows8 --runtime crosswalk    #uses Crosswalk?

The default 'runtime' for a platform will be called 'native' or 'default' and is compatible with the 'browser' runtime.

A runtime can be compatible with another runtime. e.g. cordova.runtimes = {

};

B) An OS or engine that satisfies the core Cordova api.

Make platforms 'compatible'

Plugins written for 'windows8' would be expected to be compatible with 'windows81'.

Disadvantages:

C) ?

Q & A

Is ripple a platform?

It would be more like an emulation 'runtime' that runs in the browser.

# cordova prepare dev --runtime ripple

Possibly share some code with the vanilla 'browser' runtime:

# cordova prepare dev --runtime browser

Platform Engine (last edited 2013-12-16 17:02:40 by jbondc)