New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add dependency installation to ContentDB #8891
Comments
I think that user should not be able to edit dependencies. How exactly you will solve problem with following dependency constraints?
In case of 2 level depth of dependencies, your algorithm, informational window in step 4 will be shown multiple times. I think it will be very annoying. I think you should build list of all required dependencies recursively and only show informational window only once. |
Why do you want to implement new dependency manager from scratch if there are 2 alternatives? |
We have special requirements which the alternatives don't provide. What alternatives are you specifically suggesting? Users should be able to edit dependency installation so they can opt into installing optional dependencies or alternatives |
What requirements do you mean? |
|
I think that it's a good idea to just not allow installing optional dependencies to begin with, and to just preselect the packages to install with no option to edit. This makes the initial implementation a lot easier Added two more requirements |
Is this UI supposed to be used by advanced users or by some regular players? Regarding the requirements you wrote. |
All users.
Games cannot have dependencies (well, contentdb ignores them) so this form won't be shown
The problems with the existing mod system, and the fact that you can get the same dependency fulfilled in multiple ways - for example, farming is in minetest game and as farming redo
A package is installable and updatable content. Content is a game, mod, modpack, or texture pack. Content can contain content - for example, games contains mods - but packages cannot contain packages. ContentDB deals only in packages, where it flattens the hierarchy into one thing. Ie: with a modpack, you get a list of provided modnames and a list of dependencies, but you don't know where each dependency came from - it's one entity
A mod depends on a list of modnames. A package shows this by having a list of modnames which need to be fulfilled
This is a flaw with the current dependency system of mods depending on modnames. ContentDB attempts to get around this by strictly prohibiting mods to share the same name unless they are compatible (ie: farming redo is a fork of farming, so it allowed) |
I would like to use an existing package manager, but I haven't found any that are exactly right. Perhaps I could simplify things by requiring all packages to be in a single folder, but heh |
Why do you want to make solution for all users? One size doesn't always fits all. UI usually used to simplify things for new users. Advanced users are skillful enough to manage dependencies with file operations on the file system.
Which problems, exactly?
Can one package depend on other package? Can package depend on mod/modpack/texture pack?
How exactly you will check that mods with same name are compatible? |
You probably won't find any with requirements you previously stated. All modern dependency managers share some basic concepts like:
I assume there is some issue with texture packs which should be loaded before other mods and other mods should not depend on texture packs to make them replaceable. |
Automatically install dependencies for a mod when installing it.
Alternative to #8661
How it works
User decides to install Technic
A request is made to a ContentDB API to determine the dependencies.
The API returns a list of dependencies and the packages which fulfil it.
Example: https://content.minetest.net/api/packages/RealBadAngel/technic/dependencies/
Minetest works out what should be installed, based on the currently installed mods. Minetest will check in both the global mod location and the mod location of the currently selected game. It will prefer to use local content, and it will prefer to not install full games from ContentDB.
A simple dependency information dialog is shown, to tell the user what will be installed.
(optional) The user may click "Edit" to change which mods are to be installed
For each mod to be installed, start again from step 1.
Add all mods to the download manager
Download
Milestones
/api/packages/<author>/<name>/dependencies/
from ContentDBMock Ups
Simple mode
Advanced mode
The text was updated successfully, but these errors were encountered: