Is there an issue with the semantics of "plugin add" and "platform add"?
This is just a high level query to see if this is something worth discussing in more detail. I don't know exactly what each Cordova CLI command does. My knowledge is based upon reading documentation (which is sometimes wrong as noted in recent e-mails) and experimentation. What does "add" do? 1. For "plugin add" fetches the plugin sources. For "platform add" fetches the platform implementation if necessary. 2. Stores some metadata somewhere indicating that the plugin or platform was added? What and where this metadata is stored should be better documented. 3. For "plugin add", processes plugin variables, if specified, which modifies the plugin sources. 4. Creates/modifies the native platform "project" (e.g. a Visual Studio, Eclipse, or Xcode, etc. project) to make the appropriate changes. If "plugin add" or "platform add" do more than this, I'd appreciate being educated. My question is, should "add" stop at step #2 and leave the rest to the prepare step? Here's why: * We see there is an issue with multiple developers on the same project on different platforms. E.g. when one developer is on Windows working on the Windows and Android versions of the project and another is on Mac working on the iOS version of the project. If the shared project wants to add all three platforms (which it does...) then Cordova CLI has problems. Basically because not much else than the "create" command works without having native SDKs installed. Would many issues be solved if the "add" command did not require the presence of native SDKs, but rather "prepare" did? * There seems to be an issue with the co-existence of Cordova CLI and IDEs, and in particular with IDEs that want to build in the cloud without the requirement of native SDKs. It would be ideal if multiple users on the same project could use different tools - e.g. one use the command line and one use the IDE. The basic "definition" of a Cordova CLI project, i.e. the part that needs to be shared, is the list of platforms and plugins and the settings in the top level config.xml. If the basic definition of the project could be created/edited from both the CLI and various IDEs, then the rest of the development workflow (prepare, build, emulate, etc.) could be implemented in different ways, but the project definition could still be shared. P.S. the "remove" command has similar semantics. Thanks, Leo