Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id A271C200B71 for ; Wed, 31 Aug 2016 14:49:27 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 77E51160AB4; Wed, 31 Aug 2016 12:49:27 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id BFEC2160A8C for ; Wed, 31 Aug 2016 14:49:26 +0200 (CEST) Received: (qmail 91196 invoked by uid 500); 31 Aug 2016 12:49:21 -0000 Mailing-List: contact issues-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@cordova.apache.org Received: (qmail 91011 invoked by uid 99); 31 Aug 2016 12:49:20 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 31 Aug 2016 12:49:20 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id A4C0F2C1B7F for ; Wed, 31 Aug 2016 12:49:20 +0000 (UTC) Date: Wed, 31 Aug 2016 12:49:20 +0000 (UTC) From: "Vladimir Kotikov (JIRA)" To: issues@cordova.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (CB-11795) Introduce cordovaDependencies to all core plugins MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 31 Aug 2016 12:49:27 -0000 Vladimir Kotikov created CB-11795: ------------------------------------- Summary: Introduce cordovaDependencies to all core plugins Key: CB-11795 URL: https://issues.apache.org/jira/browse/CB-11795 Project: Apache Cordova Issue Type: Task Security Level: Public (Anyone can view this level - this is the default.) Components: AllPlugins Reporter: Vladimir Kotikov Assignee: Vladimir Kotikov We've been researching ways to prevent cordova workflow breakages, caused by installing edge versions of the plugins, which possibly could be incompatible with cordova version, used by user. This is IMO a very nasty sort of problems, because it might cause unpredictable build- and runtime failures of cordova setup which has been working perfectly previously. A typical example of this scenario is when some plugin introduces a change incompatible w/ some particular cordova version and doesn't update {{cordovaDependencies}} property in its' package.json correspondingly. To prevent such breakages and avoid negative user experience I propose to start using {{cordovaDependencies}} in core plugins in a following way: # For every plugin we maintain, we add `cordovaDependencies` to its' package.json w/ the following entry {noformat} CURRENT_PLUGIN_VERSION: { cordova: >= LATEST_SUPPORTED_CORDOVA_VERSION } {noformat} We will try to determine the {{LATEST_SUPPORTED_CORDOVA_VERSION}} based on release notes and most significant changes in plugins, but probably we can safely use 6.1.0 here because new version choosing logic for {{plugin add}} was introduced in this version and older versions of cordova will not use {{cordovaDependencies}} anyway. Also for some plugins adding such entry doesn't make sense because they will work with any version of cordova, so for these plugins this step could be omitted. # For every plugin we add additional 'protective' entry {noformat} NEXT_MAJOR_PLUGIN_VERSION: { cordova: >= 100 } {noformat} There are 2 purposes for this: - if there is a major plugin update that potentially would broke compatibility with some cordova versions, this will protect users against installing this major update, unless plugin maintainers update `cordovaDependencies` by adding corresponding entry for this plugin version. In other words, if we've introduced a breaking change and forgot to update {{cordovaDependencies}} correspondingly to reflect that the change requires a specific cordova version, user will not get this plugin update. - By some reason without such 'protective' entry in case if NEXT_MAJOR_PLUGIN_VERSION gets released without adding corresponding entry to {{cordovaDependencies}} (i.e. we don't have any restrictions for this version in {{cordovaDependencies}}) - cordova will fetch that version without any checks. This is sounds non-obviously for me and probably there is some reason behind installing plugin version, which we can't verify requirements for, but this is how it works. 3. When we introduce a change that requires us to change plugin version to {{NEXT_MAJOR_PLUGIN_VERSION}}, we go and fix {{cordovaDependencies}} by changing cordova requirement for {{NEXT_MAJOR_PLUGIN_VERSION}} to actual value instead of 100 and introducing {{ANOTHER_NEXT_MAJOR_PLUGIN_VERSION: { cordova: >= 100 } }} entry. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org For additional commands, e-mail: issues-help@cordova.apache.org