"User"-created templates interact poorly with aura updating
emptyrivers opened this issue · 2 comments
Some users have a tendency to create "template" style auras, which are generic, often incomplete solutions to problems, that users are intended to import and then edit to their needs (in contrast to complete aura packs which are intended to completely satisfy a user's need for e.g. windwalker cooldown tracking). This is great and all, but poses a problem when the template is generic enough and is extremely popular, to the point that users might import multiple copies of the same "template", which has been used several times for different use cases. The story goes like this:
- Theresa creates a template for tracking cast bars, and uploads it to wago.
- Alice downloads the template, and configures it to track player casts. She adds a bunch of styling and fancy stuff, then uploads it to wago.
- Bob also downloads the template, and configures it to track casts from nameplate units. He adds his own styling to it, then uploads to wago.
- Ulysses is browsing wago, and sees both Alice's and Bob's auras. He has no taste and decides that importing two things with completely different styles is a good idea, so he imports both Alice and Bob's auras.
Here, something unexpected happens. Since Alice and Bob used the same template from Theresa, their auras (which serve completely different use cases, now have the same uid). So, when Ulysses imports Bob's aura after importing Alice's, WeakAuras notices the match and happily asks him if he wants to update Alice's update. If he's paying attention, he'll be confused and might search around for where he last imported Bob's aura, which of course he didn't (and then he might report a bug to us 😄). If he isn't paying attention, he might import the aura as an update, and suddenly lose Alice's aura. If he does the "correct" thing and chooses the "Import as Copy" option, then he can now happily use the two auras as much as he likes, but now his copy of Bob's aura has a different uid. So, if Bob ever updates his nameplate cast tracker, then if Ulysses ever imports that update, then WeakAuras probably won't detect that what he's importing is indeed an update. This is a problem.
There exist workarounds for this problem. Alice and/or Bob could have duplicated the template, in order to regenerate the uid to something that is actually unique, before uploading to wago. Theresa could have published her template as a non-aura snippet (assuming that it's a bunch of code), so that the users of that template couldn't get that evil uid. But neither of these are real solutions, and if you don't understand how the updating feature works on a technical level, you'd be unlikely to think to do the workaround.
So, what do we do about it? I certainly don't want to discourage the use of templates like this, but I can't off the top of my head think of a graceful solution.
Yes that's a problem that needs solving. It happens regularly.
To prevent that, we obviously need to have diffrent uids for the auras in step 4.
Thus:
After uplodaing their auras, Alice/Bob's upload needs to have a different uid.
So some ideas:
- wago notices the duplicated uid and offers to regenerate the uid on upload
- there's a template export method, which exports a aura and clears all uids
Or maybe
- uid is the wrong identifier to check for the companion/weakauras on which aura to update.
A template export sounds nice, but tricky. In order to encourage proper use, I think it needs a lot of development. With a “template” data type which is separate from “aura” data type, which users could create, edit, share, apply to existing auras, etc, we could solve both this problem and provide a useful tool. That’s perhaps worth investigating more.
I think that wago could indeed help a lot here by doing a bit of the dirty work, in the meantime. It does sound good for wago to notice matches in its own database, and offer to label something as a fork, or instead to regenerate uids. @oratory do you mind chiming in with your thoughts?