cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nikhil Khandelwal <>
Subject RE: [DISCUSS] Core Plugins and Android API 23
Date Fri, 08 Jan 2016 20:11:59 GMT
We had a good discussion about this offline with Joe, Simon, Steve, Jesse, Parashu and Jason.
We came to the following agreement: 
This is a temporary fix to the plugins which we need to take to ensure Cordova 5.x tools behavior
of using the edge plugins does not break for our users. We will pursue the change for all
the affected plugins. This will go out in the next PLUGINS release which will happen before
the Cordova 6.0 release. Since this a temporary fix, we aim to remove it in 6 months (giving
reasonable time for our user base to move to Cordova 6.x+ which will have a better plugin
version pinning mechanism).


-----Original Message-----
From: Simon MacDonald [] 
Sent: Thursday, January 7, 2016 4:00 PM
Subject: Re: [DISCUSS] Core Plugins and Android API 23

I'm going to play devils advocate a bit here:

> There are valid reasons why many app developers might not be ready to 
> move to API level 23:
>   1) They have an app which is stabilizing or in maintenance mode and 
> they don't want to risk destabilization by moving to a new major 
> Cordova version, Cordova Android platform, and Android API level.

If the developer is not ready to move to a new version of Cordova Android or the Android API
would it not also follow that they shouldn't be changing their plugin versions?

>   2) They are using a 3rd-party plugin which has not yet been updated 
> to request Android permissions as required by API level 23. There are 
> probably a lot of plugins affected, since access to any of the 
> following things on Android M requires runtime permission requests: 
> calendar, contacts, phone, camera, microphone, location, beacons, sensors, SMS, storage.

Right, so if the 3rd party plugin they are using doesn't support Android M they should either
a) not upgrade or b) send a PR to the plugin maintainer so everyone can benefit.

>   3) They might not have the capacity or ability to test their app on 
> devices running Android M. Because API 23 enables the new permissions 
> model only on Android M, it requires testing on that platform.
Everyone has access to the Android emulator.

> In any of the above cases, developers might still like to benefit from 
> some of the major bug fixes in those 5 popular core plugins mentioned 
> below. Or even if they weren't specifically looking for bug fixes, it 
> would be a much better experience if adding or updating one of those 
> plugins would just work, rather than failing on Android. The 
> explanation for the failure will not be obvious to many users, if they 
> overlooked the warning when installing the plugin or if they were 
> using another tool to add the plugin where the warning wasn't surfaced.

 Seems like you are describing a tooling problem here. If the tool doesn't surface the warning
or allows the user to add a plugin that is incompatible with the version of Cordova Android
that is being used really sounds like a bug in the tooling to me.

> Of course developers should be encouraged to upgrade to the latest 
> most secure highest-quality version of Cordova. But the encouragement 
> does not need to be so forceful. This proposed change gives developers 
> more time to upgrade, and allows for more choice about when to upgrade 
> individual parts
> (plugins) rather than limiting them to all-or-nothing.

 I would argue that the developer has an infinite amount of time to upgrade. Nothing is forcing
you to upgrade to the latest Cordova Android or Android API. They can continue to use the
same version of Cordova Android and plugins that are currently working in their app. If the
developer is using semver properly and we do our job right they shouldn't pick up breaking
changes. For instance, if the API of a plugin changes we bump the major version of the plugin
so users who setup their config.xml to use:

<plugin name="cordova-plugin-camera" spec="^1.1.0" />

will effectively prevent the user from picking up the breaking change in camera version 2.0.0.

Simon Mac Donald
View raw message