Adding required tags that only benefit BWS while breaking old mods is not a good idea.
I think this is the core of any opposition to the idea.
BUT, while this thread might be combative at times, it's worth keeping the big picture in mind. The point here is a good one: how to create a system for conflict identification that will be robust. Obviously we different on the definition of "robust" - ALIEN thinks anything less than 100% uptime is a failure. I think 100% uptime is a pipe dream. There is a thriving community (four actually) which can be responsive to issues as they arise. So it's simply not necessary to reach perfection.
Anyway GUID/UUID is not perfect in this context.
- Weidu likely could not auto-generate it; how could it? What if it generates one, but something about the component (content, function, description text, intended install order) changes? How would Weidu know when to, or when not to, create a new GUID/UUID?
- What happens when my bard class overhaul gets split into four constituent parts? Which one keeps the ID? How do conflict rules get updated for the new components? We're right back at square one.
- What happens if a component's GUID/UUID stays the same, but its content changes? What if it used to be incompatible with some mod, and I make it compatible? What if it used to be compatible, but some new feature renders it incompatible?
So GUID/UUID is not perfect, it would be prone to many possible points of failure. I think it would be smarter to start with a system that we already have, and try to extend its utility.
The obvious one is component numbers. These are automatically applied... so that's a good start. They already work with stuff like FORBID_COMPONENT and REQUIRE_PREDICATE and would be easy to use with my hypothetical flag that is like those, but is install-order-agnostic. The problem, of course, is they this depends on the order of some text in a .tp2 file, and is thus unreliable.
Enter DESIGNATED. People tend to lump this in with component number but conceptually, it is really a different system. It is independent of .tp2 order but it works with FORBID and REQUIRE equally well. This is more stable than the first one, but still not totally reliable... people do change DESIGNATED numbers. They are still numbers and people like numbers to be ordered. I do silly OCD stuff like match up my DESIGNATED numbers to ranges of strings in my .tra files. I recently moved the last component of my mod to the beginning and naturally I changed its DESIGNATED number from 500 to 100.
Then we have LABEL. When you think about it this is really no different from DESIGNATED. The latter is simply a LABEL that happens to be in the form of an integer. But theoretically, FORBID and REQUIRE et al. could accept non-integer arguments and apply to LABELs and DESIGATEDs interchangeably. Why not? Modders might be more comfortable tagging components with a LABEL, and they might be less inclined to change it if they reorder their components.
Finally, GUID/UUID. A good idea, and perhaps you could call it best practice... but like most best practices, rather than making it a new requirement, why not make it an
available feature, and people should tend to gravitate to it if they are smart. (And if they are not smart or don't care, that's their business and people don't have to use their mods!)
So here's my suggestion: make all these things work together. Let me do something like this in my .tp2:
BEGIN ~awesome win-button item pack~
LABEL ~awesome_items~
REQUIRE_PREDICATE MOD_IS_INSTALLED ~item_rev.tp2~ ~main_component~ // assuming Demi were to apply this LABEL
FORBID_COMPONENT ~iwdification.tp2~ ~30~
CONFLICT ~AL|ENS_mod.tp2~ ~CgACDAAKCwk~ // yes this is my new proposed component flag
Key thing being, allow modders to apply DESIGNATED and/or LABEL and/or GUID/UUID, and have the REQUIRE and FORBID stuff recognize any if those, or in their absence, simple component order. (And any plugin or other metadata-style tool like AL|EN uses and proposes could likewise recognize any and all of them.) This way we could more or less achieve blanket coverage. Would it be perfect? Still no. Would it be a damn sight better than the current situation? Surely. And it offers the path of least resistance to making it happen.