Guys, I know some of you prefer to always use the latest revision of each available lua file, but I consider it a BAD habit to alter existing embedded libraries to require a different dep without changing the major version. Some examples:
- SpellStatusLib was changed to use AceHook-2.1
- Tourist-2.0 now requires Babble-Zone-2.2 instead of 2.0
- ...
if you alter the dependency of an existing embedded library, you'll BREAK addons that are using this library. This should NEVER happen. If you really want to have a library use a 2.1 or 2.2 version of a different library, release it WITH A NEW MAJOR VERSION.
Want to hear an example? Squishy was working fine. There was NO reason to change any library. Then someone made SpellStatusLib use AceHook-2.1. Of course Squishy didnt embed AH-2.1 in its /libs, so it was broken. Well, next thing that happenes is that someone replaces the external of AH-2.0 by AH2.1 in /libs. So Squishy is broken again, because AceTab still requires AceHook-2.0, which then wasnt embedded anymore (I don't even want to mention that not even all hooks have been replaced properly when "upgrading" either).
Sorry for capsing so much, but this bad habit has been around for like 3 weeks, and people still don't seem to learn how much trouble they are causing with their changes. The whole concept of embedded libs is that you use a new major version if you'd break something. Why do I have to keep watching my addons, why am I forced to repair them, just because someone messed with some libs? How shall I explain whats going on if I tell someone to use revision 12345 as I can confirm its working, just to find out that it's now broken because someone messed with the libs?
I'm really, really close to reverting all that stuff on the svn that affects my addons. I don't care if I'd break something - because you don't seem to care if you break my stuff either. The only thing you're causing is forcing more and more devs away from Ace2, and away from the wowace community. If you want to destroy the community and the reputation of Ace, well, you're doing a great job.
Shouldn't a new MINOR update from 2.x to 2.x+1 be downward compatible to 2.x? If it isn't then you'r right, this should be a new MAJOR version.
I haven't so much experience with the libs, but isn't it possible to have 2.x and 2.x+1 at the same time loaded? So Addon foo use 2.x and Addon bar use 2.x+1? Maybe its possible to mark old functions from 2.x as deprecated and shows that it will removed at some time so authors has the chance to edit there addons. It should be clarified about the libs like "A Minor update should be downward compatible".
Btw.: Is it possible to have 2 Libs of version 2.x and 2.y in the ram?
From my understanding, 2.x and 2.x+1 ARE major version differences. Minor versions are defined by the revision number.
The problem comes in where the Mod is partially converted, or the core, but not the modules. Check out the OneBag errors from a little bit back. The toc gets it's libs updated, but that breaks the parts that still use the old major version.
It also kinda flies in the face of letting the author choose what happens to their work. IF the author wants to upgrade a mod, let them do it. If you want to see it done; 1) Ask 2) Branch, code and test 3) Ask the author BEFORE merging to the trunk.
Shouldn't a new MINOR update from 2.x to 2.x+1 be downward compatible to 2.x? If it isn't then you'r right, this should be a new MAJOR version.
In the Ace world anything like 1.0, 2.0, 2.1, 2.5 are major versions, while the revision (14203) are minor versions. Major versions may break anything. Minor upgrades may not break anything (and changing the dependencies breaks stuff). What's currently happening is that someone is silently replacing the beef in a Big Mac by pork with the argument that its healthier, but not telling jews it's not kosher anymore. Err, might be a bad example. :) Or someone replacing the engine in YOUR car with a diesel engine without telling you. One day you wake up and see a diesel engine in your car - but you still have gasoline in the tank, and noone gave you diesel to replace the fuel. And noone asked you if you prefer using diesel in the future either.
Existing libraries that are currently used by lots of addons are altered without prior notice, and breaking all the addons that were using that library.
I haven't so much experience with the libs, but isn't it possible to have 2.x and 2.x+1 at the same time loaded?
Yes, major versions will stay loaded next to each other, while the latest minor revision will overwrite older minor revisions.
It also kinda flies in the face of letting the author choose what happens to their work. IF the author wants to upgrade a mod, let them do it. If you want to see it done; 1) Ask 2) Branch, code and test 3) Ask the author BEFORE merging to the trunk.
This is more about library authors upgrading their libs without telling the addon developers that they have to change something in their addons - and therefor destroying working addons. Not only addons can have (library) dependencies, but these libraries often have dependencies as well. And if something in that chain is changed, it'll break everything inside that chain.
Here's an example on how it should be done properly:
library Tourist-2.0 needs the library Babble-Zone-2.0 to work. So any addon using Tourist-2.0 will also add Babble-Zone-2.0 to their .toc. If the author of Tourist-2.0 decides to use Babble-Zone-2.2 in the future, he should simply release it as Tourist-2.1 (or 2.2, whatever). Then addons won't break, any if they want to upgrade to the new Tourist lib, then they'll change both Tourist-2.0 -> Tourist-2.2 AND Babble-Zone-2.0 -> Babble-Zone-2.2 at once in their toc. And if the addons devs dont want to upgrade instantly, it doesnt break anything either, as Tourist-2.0 and Babble-Zone-2.0 are still around.
I have to agree here, changing library (required) dependencies is a bad thing. If you can maintain compatibility, like say requires Babble-Zone-2.2 or 2.0, then that's all fine and dandy. But if the dependencies change that's effectively an API-breaking change and a new major version should be declared.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
- SpellStatusLib was changed to use AceHook-2.1
- Tourist-2.0 now requires Babble-Zone-2.2 instead of 2.0
- ...
if you alter the dependency of an existing embedded library, you'll BREAK addons that are using this library. This should NEVER happen. If you really want to have a library use a 2.1 or 2.2 version of a different library, release it WITH A NEW MAJOR VERSION.
Want to hear an example? Squishy was working fine. There was NO reason to change any library. Then someone made SpellStatusLib use AceHook-2.1. Of course Squishy didnt embed AH-2.1 in its /libs, so it was broken. Well, next thing that happenes is that someone replaces the external of AH-2.0 by AH2.1 in /libs. So Squishy is broken again, because AceTab still requires AceHook-2.0, which then wasnt embedded anymore (I don't even want to mention that not even all hooks have been replaced properly when "upgrading" either).
Sorry for capsing so much, but this bad habit has been around for like 3 weeks, and people still don't seem to learn how much trouble they are causing with their changes. The whole concept of embedded libs is that you use a new major version if you'd break something. Why do I have to keep watching my addons, why am I forced to repair them, just because someone messed with some libs? How shall I explain whats going on if I tell someone to use revision 12345 as I can confirm its working, just to find out that it's now broken because someone messed with the libs?
I'm really, really close to reverting all that stuff on the svn that affects my addons. I don't care if I'd break something - because you don't seem to care if you break my stuff either. The only thing you're causing is forcing more and more devs away from Ace2, and away from the wowace community. If you want to destroy the community and the reputation of Ace, well, you're doing a great job.
I haven't so much experience with the libs, but isn't it possible to have 2.x and 2.x+1 at the same time loaded? So Addon foo use 2.x and Addon bar use 2.x+1? Maybe its possible to mark old functions from 2.x as deprecated and shows that it will removed at some time so authors has the chance to edit there addons. It should be clarified about the libs like "A Minor update should be downward compatible".
Btw.: Is it possible to have 2 Libs of version 2.x and 2.y in the ram?
The problem comes in where the Mod is partially converted, or the core, but not the modules. Check out the OneBag errors from a little bit back. The toc gets it's libs updated, but that breaks the parts that still use the old major version.
It also kinda flies in the face of letting the author choose what happens to their work. IF the author wants to upgrade a mod, let them do it. If you want to see it done; 1) Ask 2) Branch, code and test 3) Ask the author BEFORE merging to the trunk.
Seems like common curtesy, but then I'm old...
In the Ace world anything like 1.0, 2.0, 2.1, 2.5 are major versions, while the revision (14203) are minor versions. Major versions may break anything. Minor upgrades may not break anything (and changing the dependencies breaks stuff). What's currently happening is that someone is silently replacing the beef in a Big Mac by pork with the argument that its healthier, but not telling jews it's not kosher anymore. Err, might be a bad example. :) Or someone replacing the engine in YOUR car with a diesel engine without telling you. One day you wake up and see a diesel engine in your car - but you still have gasoline in the tank, and noone gave you diesel to replace the fuel. And noone asked you if you prefer using diesel in the future either.
Existing libraries that are currently used by lots of addons are altered without prior notice, and breaking all the addons that were using that library.
Yes, major versions will stay loaded next to each other, while the latest minor revision will overwrite older minor revisions.
This is more about library authors upgrading their libs without telling the addon developers that they have to change something in their addons - and therefor destroying working addons. Not only addons can have (library) dependencies, but these libraries often have dependencies as well. And if something in that chain is changed, it'll break everything inside that chain.
Here's an example on how it should be done properly:
library Tourist-2.0 needs the library Babble-Zone-2.0 to work. So any addon using Tourist-2.0 will also add Babble-Zone-2.0 to their .toc. If the author of Tourist-2.0 decides to use Babble-Zone-2.2 in the future, he should simply release it as Tourist-2.1 (or 2.2, whatever). Then addons won't break, any if they want to upgrade to the new Tourist lib, then they'll change both Tourist-2.0 -> Tourist-2.2 AND Babble-Zone-2.0 -> Babble-Zone-2.2 at once in their toc. And if the addons devs dont want to upgrade instantly, it doesnt break anything either, as Tourist-2.0 and Babble-Zone-2.0 are still around.