Changes to "depends" between 2018-07-05 14:30:43 and 2018-07-05 18:32:10

11
12
13
14
15
16
17
18

19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38

39


40

41




42

43
44
45




46
47
48







11
12
13
14
15
16
17

18
19
20
21
22
23

24
25
26

27
28
29
30
31
32
33
34
35
36
37
38
39

40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
56



57
58
59
60
61
62
63







-
+





-
+


-
+











+
-
+
+

+

+
+
+
+
-
+



+
+
+
+
-
-
-
+
+
+
+
+
+
+
  * Not every application would want to enforce this *strictly*. Because dynamic languages can soft-detect dependencies usually.

  * Within a plugin management UI, the depends: list could be used for installation warnings.

It's optional, and might be treated as documentation in some implementations.


## Versioned dependencies
### Versioned dependencies

Additionally the plugin names can be suffixed with a version comparison:

    # depends: core (>= 2.0.0)

Which obviously does require the plugin manager to be somewhat more involved. You'll often get away just implementing a `>=` check. Most other version expression gimmicks are likely overkill for simple applicatiion-level features.
Which obviously does require the plugin manager to be somewhat more involved. You'll often get away just implementing a `>=` check. Other version expressions are usually overkill for simple application-level features.


## System/language references
### System/language references

While a `TYPE:name` entry can reference other scopes (instead of application-local plugins)

| `bin:imagemagick` | verify a binary exists |
| `python:lxml` | for language modules |
| `sys:amd64` | e.g. the architecture. |
| `deb:anacron` | as hint for the system package manager. |
| `api:archnemesis` | see [api](wiki/api) |

This is quite informal still. There's seldomly practical value to implement such complex dependency lookups, or these exact ones. This is just the advised syntax.

### Magic basenames
One could implement a few "magic" basenames as well. For instance checking the current language version with just `# depends: python (>= 3.4)`, or if feasible check for module versions `php:sqlite (>= 3.24)`.

Optionally one could handle a few plain basenames specically For instance checking the current language runtime with:

     # depends: python (>= 3.4)

Or, if feasible, even module versions 

     # depends: php:sqlite (>= 3.24)

## Related fields
### Related fields

Depending on complexity other fields might be used alongside:

#### # conflicts:

Does occasionally make sense for variants or mutally exclusive features.

  * `# provides:`
  * `# conflicts:`
  * `# suggests:`
#### # provides:

Defines a virtual feature identifier to be present. Less commonly needed for application plugins.

#### # suggests:

A weak recommendation of other plugins to go along with. Should foremost be handled in the admin UI or a plugin download interface.