I've seen this problem pop up on several occasions. Usually it's pretty minor and doesn't impact a large number of addons. But this time it's happened on a fairly large basis.
I'm sorry sylvanaar, I'm going to pick on you to a certain extent but you're by far not the only author doing this. You're just the most recent person to have caused a major problem with it.
AceGUI-3.0-SharedMediaWidgets had some work on it. At some point in the process of this work the library had a Lua error in it. This entirely broke the library. In this particular case the breakage causes the dropdowns to obviously break and to also cause massive frame rate losses until someone reloads the UI. The most recent release version of Prat-3.0 unfortunately has been shipping with this broken version of the library for 2 weeks now.
The library has long since been fixed. Prat has an alpha version with the new version of the library but the release version is still shipping with this broken library.
So how did we get here? We got here because Prat's .pkgmeta looks like so:
The important difference is the addition of tag: latest.
This means that you will at least only get the most recent tag (possibly beta but at least something that a human being thought was worth tagging). Not just whatever the most recent alpha version of the library is.
Now I'm sure some people are going to come back and say "Some libraries aren't getting tagged." Which brings me to my plea to everyone.
1) Library authors, please either tag or clearly specify in your documentation that you will not be tagging. Realize if you're not tagging that you're likely to have a mess with your library anytime a major addon update includes an alpha version where you broke something.
2) AddOn authors. Use tag:latest unless you have a very good reason (e.g. library is never tagged, you depend upon the alpha version for some reason).
We have these features on wowace to make our lives easier. Let's use them.
As an addon author it is also a good idea to subscribe to your libs changes (for Ace you can do that at http://www.wowace.com/addons/ace3/manage-subscriptions/) that way you do not get surprised by lib updates and you can help test alphas of the libs with your addon
Do we have a good place where this is documented? Or is there a point to be made to reformat this into something that is reference-material for authors?
depends on how they set the lib up. old style is to include a wrapper folder due to how the old svn system works. on the new setup it's not entirely needed.
possibly another silly question, but for those us who checkout the libs via SVN. how exactly do we ensure we get the same libs as what curse will package?
im fairly sure theres no equivalent to tags:latest in SVN (or is there?) so should i just hardcode the version i want to use via tags instead of using the trunk? and then keep an eye on lib versions?
also, does tags:latest just pick up the latest tag regardless of "type" (alpha/beta/release)?
i suppose im just wondering that as the libs are auto updating when loaded in game it shouldnt matter too much if i specify a particular tag to use as it'll auto upgrade within minor point releases and will allow me to test first when a major point release is released (i just have to remember to change the pkgmeta and my svn properties to the new major version), whereas if i used tags:latest i could get anything at all.
it just seems that using tags:latest might not be the best way to go (its pretty much the same as using trunk - tags dont always mean release worthy code, theyre just a certain point on the codestream) but using tags:xxxxx would be more robust as at least then you'll know what youre going to get.
all tags are found in tags "folder" of the repo for ace that would be svn://svn.wowace.com/wow/ace3/mainline/tags (though this contains every single tag not just the latest)
it just seems that using tags:latest might not be the best way to go (its pretty much the same as using trunk - tags dont always mean release worthy code, theyre just a certain point on the codestream) but using tags:xxxxx would be more robust as at least then you'll know what youre going to get.
The way the CurseForge packager is set up, authors shouldn't be using tags to mark random points in development, as the packager automatically marks Beta and Release versions based on tags.
Edit: Also, I remembered the other (bigger) reason why subfolders are better: if the library doesn't have a subfolder, then your addon ends up including a bunch of copies of LibStub and CallbackHandler-1.0. :|
Disk space is cheap =)
The files are not parsed by WoW if setup properly, so its really only disk space. I don't buy that argument ;)
New libraries should not hard-embed LibStub and CBH-1.0 anyway. Use .pkgmeta for the libs, and also disable the nolib creation, and you're all set.
And yeah, in a perfect world people would use one specific tag, make sure it works with that, and then release their version. However, it would still have potential to break when another addons comes with a newer version. You'll have to trust the developer to not break functionality.
But as others stated before, tags are not supposed to be arbitrary points, but rather versions that are finished and stable. If a dev tags arbitrary points in development just to get more testers or whatever, he should be banned from any development, imho =)
Alphas are all revisions that are not tagged, not always working 100%, or not finished, or whatever.
Betas would be useful, but in our current system, at least for libraries, they are not treated different from releases, really, so devs should know that a tag:latest will also pick up a beta tag (afaik).
I'm sorry sylvanaar, I'm going to pick on you to a certain extent but you're by far not the only author doing this. You're just the most recent person to have caused a major problem with it.
AceGUI-3.0-SharedMediaWidgets had some work on it. At some point in the process of this work the library had a Lua error in it. This entirely broke the library. In this particular case the breakage causes the dropdowns to obviously break and to also cause massive frame rate losses until someone reloads the UI. The most recent release version of Prat-3.0 unfortunately has been shipping with this broken version of the library for 2 weeks now.
The library has long since been fixed. Prat has an alpha version with the new version of the library but the release version is still shipping with this broken library.
So how did we get here? We got here because Prat's .pkgmeta looks like so:
It should look like so:
The important difference is the addition of tag: latest.
This means that you will at least only get the most recent tag (possibly beta but at least something that a human being thought was worth tagging). Not just whatever the most recent alpha version of the library is.
Now I'm sure some people are going to come back and say "Some libraries aren't getting tagged." Which brings me to my plea to everyone.
1) Library authors, please either tag or clearly specify in your documentation that you will not be tagging. Realize if you're not tagging that you're likely to have a mess with your library anytime a major addon update includes an alpha version where you broke something.
2) AddOn authors. Use tag:latest unless you have a very good reason (e.g. library is never tagged, you depend upon the alpha version for some reason).
We have these features on wowace to make our lives easier. Let's use them.
[FONT=Courier New]Externals/LibSharedMedia/AceGUI-3.0-SharedMediaWidgets: svn://svn.wowace.com/wow/ace-gui-3-0-shared-media-widgets/mainline/trunk[/FONT]
and
[FONT=Courier New] Externals/LibSharedMedia/AceGUI-3.0-SharedMediaWidgets: svn://svn.wowace.com/wow/ace-gui-3-0-shared-media-widgets/mainline/trunk/AceGUI-3.0-SharedMediaWidgets[/FONT]
There's probably a lot more evangelism needed to get this into common practice.
The TOC is handy since it has the version of the library that you are using
Its a matter of taste I guess.
im fairly sure theres no equivalent to tags:latest in SVN (or is there?) so should i just hardcode the version i want to use via tags instead of using the trunk? and then keep an eye on lib versions?
also, does tags:latest just pick up the latest tag regardless of "type" (alpha/beta/release)?
i suppose im just wondering that as the libs are auto updating when loaded in game it shouldnt matter too much if i specify a particular tag to use as it'll auto upgrade within minor point releases and will allow me to test first when a major point release is released (i just have to remember to change the pkgmeta and my svn properties to the new major version), whereas if i used tags:latest i could get anything at all.
it just seems that using tags:latest might not be the best way to go (its pretty much the same as using trunk - tags dont always mean release worthy code, theyre just a certain point on the codestream) but using tags:xxxxx would be more robust as at least then you'll know what youre going to get.
The way the CurseForge packager is set up, authors shouldn't be using tags to mark random points in development, as the packager automatically marks Beta and Release versions based on tags.
Edit: Also, I remembered the other (bigger) reason why subfolders are better: if the library doesn't have a subfolder, then your addon ends up including a bunch of copies of LibStub and CallbackHandler-1.0. :|
The files are not parsed by WoW if setup properly, so its really only disk space. I don't buy that argument ;)
New libraries should not hard-embed LibStub and CBH-1.0 anyway. Use .pkgmeta for the libs, and also disable the nolib creation, and you're all set.
And yeah, in a perfect world people would use one specific tag, make sure it works with that, and then release their version. However, it would still have potential to break when another addons comes with a newer version. You'll have to trust the developer to not break functionality.
But as others stated before, tags are not supposed to be arbitrary points, but rather versions that are finished and stable. If a dev tags arbitrary points in development just to get more testers or whatever, he should be banned from any development, imho =)
Betas would be useful, but in our current system, at least for libraries, they are not treated different from releases, really, so devs should know that a tag:latest will also pick up a beta tag (afaik).