emptyrivers wrote: ↑Thu Apr 25, 2019 2:44 am
If I understand this request right, then I think that the opposite solution would make more sense.
I'm using Debian, so I'm familiar with dependencies and packages that "provide" some functionality. Consider this example:
You want to install an MTA (mail transport agent -- a service running in the background that receives mail and passes it on to remote servers or local users). Let's say you settle on postfix as MTA. Postfix "depends" (hard dependency) on several packages and "suggests" (kind of a soft dependency -- you don't have to install any of those, but it would make sense to do it), among others, "mail-reader". This is a purely virtual package -- there is no real package of this name, but there are many that provide this functionality: balsa, evolution, kmail, mutt, thunderbird etc.
Tomorrow, somebody could release another program that can be used to read e-mails. The maintainers of the existing MTAs wouldn't even know it's there, so they couldn't add a dependency on it to their package. However, the author of the new package can call out to them "Hey, this new package does what you require, too!" by adding "Provides: mail-reader" to their package. So, adding "Provides" allows other mods to depend on functionality instead of specific packages -- functionality that can be found in well-known and in anonymous packages.
How could that be relevant to Factorio? Well, suppose you want to spice up combat a bit, so you make a mod package pulling in new enemies and new weapons, specifically sniper stuff . A short search on the mod portal brings up, among others, Rampant, Natural Evolution Enemies, Necromant, 5Dim's mod - Battlefield, Bob's Enemies, and Swarmageddon - Enhanced Biter Swarms for "enemies" and Schall Ammo Turrets, Combat by Samuel, Combat by lamp181, and Sniper rifle for "sniper". It doesn't matter to you which mod is pulled in, so if your users have one of the above mods already installed, they don't need to install another one with similar features. If Rampant et al. could have something like "Provides: new-enemies" and the others something like "Provides: weapon-sniper", you could just include "Dependencies: new-enemies, weapon-sniper" to pull in everything that is required. Requests like "Could you add a dependency on [insert name of new mod here]?" would be a thing of the past, as the relevant mods would announce on their own that they have what your mod package requires.
I therefore believe that Factorio supporting a "Provides:" tag in addition to "Dependencies:" would be a useful feature, indeed.