ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   Site help, bugs, suggestions/questions (https://www.esoui.com/forums/forumdisplay.php?f=18)
-   -   Addon dependencies (https://www.esoui.com/forums/showthread.php?t=8069)

sirinsidiator 09/22/18 01:04 PM

Addon dependencies
 
Since more and more authors are now finally switching to move libraries out of their addons and have users install them as separate addons, it would be great if we could have some way to specify these dependencies on the addon page and have minion install them together with the addon (I wouldn't mind creating a pull request, but minion is still not on github ;) )
A panel for authors to show which addons depend on their library would also be nice.

zgwortz 09/22/18 01:16 PM

When I first heard of this practice, I had a similar idea. Now I think it would be a terrible idea.

As I pointed out in a different thread towards one of these authors, since the libraries are rarely updated and their stand alone versions are almost always Out of Date, it's a VERY BAD idea to force people to use stand-alone libraries.

Enabling Minion to download out of date standalone libraries to support a non-compliant addon would simply encourage a very bad programming practice. Instead, we should be strongly objecting to anyone who is releasing addons without their needed libraries and doing everything we can to discourage that practice.

IMHO.

SilverWF 09/22/18 01:40 PM

Just let's Minion would check if required Libs are already installed and suggest to install it if not.

Kyoma 09/22/18 01:50 PM

Quote:

Originally Posted by zgwortz (Post 36092)
When I first heard of this practice, I had a similar idea. Now I think it would be a terrible idea.

As I pointed out in a different thread towards one of these authors, since the libraries are rarely updated and their stand alone versions are almost always Out of Date, it's a VERY BAD idea to force people to use stand-alone libraries.

Enabling Minion to download out of date standalone libraries to support a non-compliant addon would simply encourage a very bad programming practice. Instead, we should be strongly objecting to anyone who is releasing addons without their needed libraries and doing everything we can to discourage that practice.

IMHO.

The problem is, libraries for ESO need to be updated rather frequently due to changes made by ZOS. And what standalone libraries are we talking about that are 'almost always Out of Date'?

zgwortz 09/22/18 02:21 PM

Quote:

Originally Posted by Kyoma (Post 36096)
The problem is, libraries for ESO need to be updated rather frequently due to changes made by ZOS. And what standalone libraries are we talking about that are 'almost always Out of Date'?

Um... LibStub? LibAddonMenu? LibFilters? You know... the ones nearly every addon uses? LibStub alone causes other libraries to not load as well because it's standalone version is woefully out of date.

And how frequently are we talking about for the other libraries, really? How many of them change, and how often? There really shouldn't be a need to update most of them all that often.

sirinsidiator 09/22/18 03:35 PM

I can tell you two things. The benefits of making libraries into separate addons far outweigh small issues like this and some libraries simply don't need updates on every new game version (like LibStub or LibAddonMenu).

If we don't move forward, we will never see what has to be changed in order to make it "right". You bringing up this issue is just one more argument to just do it. ;)

Baertram 09/23/18 06:49 AM

If you still refuse to enable the checkbox "use out of date" addons:
You are totally able to update the api version in the standalone libs txt files after a major patch.
This will maybe force you, if you want the libs not to appear "out of date" for you, to change the txt files of 3-5 libraries.
As the standalone libs got their own folder you'll find them quickly, and its easy to change the files then at teh entry ##APIVersion.

Think about this:
If you would need to change them inside the addon folders as well, where you would need to find the most up2date version first and then check dependencies and understand how the game loads the libraries and addons, in which order etc,...
It wouln'd be possible for you to find the correct library loaded! Or you'd need to increase the library version locally so you force the game to load this folder.

Shadowfen 09/24/18 06:44 PM

Quote:

Originally Posted by sirinsidiator (Post 36090)
Since more and more authors are now finally switching to move libraries out of their addons and have users install them as separate addons, it would be great if we could have some way to specify these dependencies on the addon page and have minion install them together with the addon (I wouldn't mind creating a pull request, but minion is still not on github ;) )
A panel for authors to show which addons depend on their library would also be nice.


What are the benefits of not including libraries in the client addons, aside from a smaller install package?

SilverWF 09/24/18 08:18 PM

Quote:

Originally Posted by Shadowfen (Post 36131)
What are the benefits of not including libraries in the client addons, aside from a smaller install package?

The same as using libs and not including a typical functions inside a main code of your addon :banana:

Standardization.

Shadowfen 09/24/18 09:39 PM

Quote:

Originally Posted by SilverWF (Post 36134)
The same as using libs and not including a typical functions inside a main code of your addon :banana:

Standardization.

Standardization is provided by using libraries.
Including the libraries with your addon ensures that you never have to try to run with a library whose version is older than YOU require.
LibStub ensures that you run with the best (well, newest) version that is available.

So, I do not understand why I would not want to package libraries I rely on with my addons?

Kyoma 09/25/18 03:42 PM

Quote:

Originally Posted by Shadowfen (Post 36135)
Standardization is provided by using libraries.
Including the libraries with your addon ensures that you never have to try to run with a library whose version is older than YOU require.
LibStub ensures that you run with the best (well, newest) version that is available.

So, I do not understand why I would not want to package libraries I rely on with my addons?

Due to the nature of (many) libraries containing code that somewhat "hacks" the ZOS code it may require updating after alot of API updates. As such, all addons containing the library will need to be updated by each of their author just to include a "fixed" version of the library. Even when the actual addon code didn't need any changes. While this may be manageable for some, it can quickly become a maintainance nightmare.

Baertram 09/26/18 08:41 AM

Quote:

Originally Posted by Kyoma (Post 36152)
Even when the actual addon code didn't need any changes. While this may be manageable for some, it can quickly become a maintainance nightmare.

Bundled libraries need updates every single small patch or change which ZOs does.
This will take so much time we could simply invest intot the addons. And even if you only got 1-5 addons to maintain there are ppl who got about 30+. Think about this time "nightmare" (liky Kyoma wrote about).
You don't must follow my rules or decision! I never said that. But I decided that I won't invest this time into updating libraries anymore if the base design of libraries is another one and it got so many advantanges. Way more then disadvantages (and please don't count peoples time to update libraries and instal lthem as standalone as an disadvantage. It only has to be done once and afterwards Minion will handle it. And if you decided to install/update them manually it's the same like updating addons.).


Putting a piece of code "redundantly" in each addon just to have to remove or update those again after a while because it is non-functional again, makes no sense. Libraries are not designed to be put in each addon's folder construct. They should be put once into the game and used by all addons then.
There might be some which behave differently (LibGroupSocket e.g.) if you ship them bundled or as standalone.
But about 90% are designed to be used 1 time, standardized.

You can simply keep it divided from the addon, put it in an extra folder where you can easily find and maintain (the txt file e.g. if you want the API version raised) it, debug error messages etc.
-> Imagine you want to update the txt file of a library but do not know which of the 25 addons subfolders was the one which loaded the library for you now? You'd need to check each txt file to see the Version and compare which is the newest version. Then you'd need to check dependencies in the txt files between all of those addons or you might not see what is the load order and which library was loaded when. A nightmare to debug and to check imo.

Bundled libraries point to an addon where they got loaded if an error message happens. This will misslead you to the addon as the error raiser (maybe).

Plus you have more free space on your harddrive and the loading time of addons increases as well.

Dolby 09/30/18 10:20 AM

I see both sides and I agree that a way for authors to define dependencies would be a great feature for the site. Maybe even something added to the addon.txt that Minion could read with the dependency name and addon id.

This still leaves things a little messy for those that download AddOns by hand. I guess we could have the site auto include any dependency in the zip when downloading from the site?

Baertram 09/30/18 10:31 AM

The txt files already got the entries for the dependencies:
Code:

##DependsOn: LibStub Library1 Library2
##OptionallyDependsOn: Addon1 Addon2 Library3

I do not know if Minion would be able to read those, split it at the space character and build a lookup addon/library table which will be checked against www.esoui.com database for addonname = addonId then?

Having the website download marked dependent addon/libraries automatically would be great.
But I guess this would need to be all in one zip file which simply needs to be extracted to the Elder Scrolls Online/live/AddOns folder then, or there will be several .zip files and the user might not know which one to extract? Not sure how this could work at best.

sirinsidiator 09/30/18 11:30 AM

Matching the addons just by the name in the manifest may end up with an incorrect file as we already have seen with some language patches etc in minion. On the other hand, specifying the addon id could be too restrictive in case some dependency gets abandoned and reuploaded by someone else under a new id. It may be necessary to allow addon authors to specify how the ids are related to each other (language patch, continued version, extension, beta) and also give authors control so they can "block" an id from being considered in case the continued version gets abandoned and the original returns.

Zipping up all dependencies in one archive would be very convenient, but depending on how you do it, it could also produce some broken results. Maybe just put the separate zip files into one big archive instead of their individual content and let the user figure out where to put what, because an author who forgot to structure it correctly or already uses the same folder as one of the other dependencies could end up breaking the downloaded version. If you change the download button to work that way, it might also be nice to have a smaller button that downloads just the addon itself without the dependencies.

Draxinusom 10/01/18 12:00 PM

esoui.com could create a "inclusive" zip file with the declared dependencies in their own folder. Probably the easisest way imho.

Not manually done, you declare dependency and there's an optional download that includes those folders in a big zip.

Shadowfen 10/01/18 06:42 PM

I think better would probably be an esoui-specific manifest-type file where authors can specify the library links or ids or something that their addon depends on so that esoui/minion can parse to see what else may need downloading. Authors that don't participate in the new paradigm yet, don't include this file.

@DeadSoon 01/05/19 09:13 AM

Does anyone have any information about whether this feature is being worked on? I did not find any posts here or notes on the Minion website about active development of new features (e.g. Minion 4).

Dolby 01/05/19 09:41 AM

Yep, but just slowly. Right now I'm working on getting some needed information into the web api for Minion to support the feature. Then sirinsidiator has stepped up to help on the Minion java end of things. I really can't give an eta but its being worked on still.

@DeadSoon 01/06/19 10:41 AM

Quote:

Originally Posted by Dolby (Post 36769)
Yep, but just slowly. Right now I'm working on getting some needed information into the web api for Minion to support the feature. Then sirinsidiator has stepped up to help on the Minion java end of things. I really can't give an eta but its being worked on still.

Nice to hear! Thank you for your work. I'm looking forward to the new feature :D


All times are GMT -6. The time now is 10:25 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI