{"action":"created","issue":{"url":"https://api.github.com/repos/getgrav/grav/issues/1251","repository_url":"https://api.github.com/repos/getgrav/grav","labels_url":"https://api.github.com/repos/getgrav/grav/issues/1251/labels{/name}","comments_url":"https://api.github.com/repos/getgrav/grav/issues/1251/comments","events_url":"https://api.github.com/repos/getgrav/grav/issues/1251/events","html_url":"https://github.com/getgrav/grav/issues/1251","id":200876820,"number":1251,"title":"Explicit, required dependencies","user":{"login":"OleVik","id":974717,"avatar_url":"https://avatars.githubusercontent.com/u/974717?v=3","gravatar_id":"","url":"https://api.github.com/users/OleVik","html_url":"https://github.com/OleVik","followers_url":"https://api.github.com/users/OleVik/followers","following_url":"https://api.github.com/users/OleVik/following{/other_user}","gists_url":"https://api.github.com/users/OleVik/gists{/gist_id}","starred_url":"https://api.github.com/users/OleVik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OleVik/subscriptions","organizations_url":"https://api.github.com/users/OleVik/orgs","repos_url":"https://api.github.com/users/OleVik/repos","events_url":"https://api.github.com/users/OleVik/events{/privacy}","received_events_url":"https://api.github.com/users/OleVik/received_events","type":"User","site_admin":false},"labels":[{"id":119035320,"url":"https://api.github.com/repos/getgrav/grav/labels/enhancement","name":"enhancement","color":"fbca04","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-01-15T16:01:20Z","updated_at":"2017-01-18T15:40:59Z","closed_at":null,"body":"The [current system](https://learn.getgrav.org/forms/blueprints/example-plugin-blueprint) of dependencies is optional, in the form of:\r\n\r\n```\r\ndependencies:\r\n  - afterburner2\r\n  - github: https://github.com/getgrav/grav-plugin-github.git\r\n  - { name: email, version: '~2.0' }\r\n```\r\n\r\nThis allows for flexibility in what plugins and themes a different plugin/theme depend on for functionality, but may also break installations upon update. I propose that the `dependencies`-property be required, including what version of Grav's core the plugin/theme **depends on**, and additionally was **tested with**. This would look like:\r\n\r\n```\r\ndependencies:\r\n  - { name: grav, version: '~1.1.12', tested: '1.1.12' }\r\n```\r\n\r\nImagine a scenario where a plugin depends on Grav version `~1.1.9` and Admin-plugin `1.2.7`, which in turn depends on Form-plugin `~2.0`, Email-plugin `~2.0`, and Login-plugin `~2.0`. If the plugin overrides parts of any of these, with the functionality as it exists at these versions, then an upgrade to these implicit dependencies can break their functionality inadvertently through the plugin's overrides.\r\n\r\nSo rather than an implicit dependency, where upgrades can break them, the following as required would prevent upgrading implicit dependencies to a point where the installation breaks:\r\n\r\n```\r\ndependencies:\r\n    - { name: grav, version: '~1.1.9', tested: '1.1.9' }\r\n    - { name: admin, version: '~1.2.7', tested: '1.2.7' }\r\n    - { name: form, version: '~2.0' }\r\n    - { name: email, version: '~2.0' }\r\n    - { name: login, version: '~2.0' }\r\n```\r\n\r\nThus a full system upgrade allows upgrading to the newest versions in the range of Grav core `>=1.1.9 <1.2.0`, Admin-plugin `>=1.2.7 <1.3.0`, Form-plugin `>=2.0.0 <2.1.0`, Email-plugin `>=2.0.0 <2.1.0`, Login-plugin `>=2.0.0 <2.1.0`. Without being a required property, upgrades exceeding these versions could break installations, but could still be allowed by a `--force`-parameter in the upgrade-process for the adventurous."},"comment":{"url":"https://api.github.com/repos/getgrav/grav/issues/comments/273510193","html_url":"https://github.com/getgrav/grav/issues/1251#issuecomment-273510193","issue_url":"https://api.github.com/repos/getgrav/grav/issues/1251","id":273510193,"user":{"login":"rhukster","id":1084697,"avatar_url":"https://avatars.githubusercontent.com/u/1084697?v=3","gravatar_id":"","url":"https://api.github.com/users/rhukster","html_url":"https://github.com/rhukster","followers_url":"https://api.github.com/users/rhukster/followers","following_url":"https://api.github.com/users/rhukster/following{/other_user}","gists_url":"https://api.github.com/users/rhukster/gists{/gist_id}","starred_url":"https://api.github.com/users/rhukster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rhukster/subscriptions","organizations_url":"https://api.github.com/users/rhukster/orgs","repos_url":"https://api.github.com/users/rhukster/repos","events_url":"https://api.github.com/users/rhukster/events{/privacy}","received_events_url":"https://api.github.com/users/rhukster/received_events","type":"User","site_admin":false},"created_at":"2017-01-18T15:40:59Z","updated_at":"2017-01-18T15:40:59Z","body":"To be honest, i feel like this is a bit of overkill . We have dependencies with versions, but they are rarely used.  We use them when needed, and they have worked fine, and it's already far beyond the capability of most platforms."}}
{"actor":{"display_login":"rhukster"}}