Feature: Systems and Modules Installer

Having a systems and modules installer is going to be important as most people are duplicating the same data over and over again. Being able to install the dnd5e system for everybody for example, which makes use of faster regionalized CDN data and doesn’t use up any of their data quotas, is going to make many people happy.

This would also allow the auto-upgrade of the system and some modules when a user changes their FVTT version or a new release comes out, giving less overhead for players to think about whether they need to update their systems and modules at every release.

How does it work with importing…

Say you have someone import their modules, do you currently ignore the contents and only import the module by the URL in the manifest? Or do you upload them to the world data?
I know zip files go straight to the modules folder no questions asked.

What if the user wants to partake in this space saving (and speed) measure, but imports their world (including modules)?

Perhaps it would be OK to simply use the manifest and import the module from the shared modules system, ignoring their own files.
But when someone uploads a zip, you would ask them what to do - use the zip or take advantage of the shared modules.

Just something I was wondering about.

Importing your data folder, a module (as a folder or as a single zip) would still do the same thing. The current plan is that it would check 4 things against the database :

  • type (system or module?)
  • name
  • version
  • manifest url

If all 4 match an existing system/module in the database, then it would suggest to the user to use that instead, so no need to upload and no need to use quota. If a user has a modified module, they’d need to either change the name/version/manifest url, or say “no, use the one I uploaded” during import.
I am currently trying to deal with the case (for the migration) of multiple people having the same module with the same version, but with different files, since often module devs just link to the master github, so downloading it at a different moment could yield a different content.
I think I’ll need to just download the latest of that version and simply use that.

What I want to avoid is someone submitting a zip/manifest which could be malicious and affecting others, so I’d be the only one to check the manifest urls before approving a module/system to the ‘bazaar’ (I guess that’s the name now?) and do the updates.

Lots to consider… but for now, I’m doing the installer infrastructure first, setting up the DB and filling it with content, and making sure symlinking works as expected, then I’ll do the installer (the UI/UX) then I’ll look into porting existing data and how to manage user config (auto-update or not, downgrade if FVTT version changed, and things like that), then I’ll move to integrating it with the importer itself.