Pybuild2
This is very much a work in progress (which I did a month ago and haven't really touched since), but the idea was that instead of transparently introducing the new interface as in #280 (closed), we introduce an explicit new interface, and just write a script to convert packages in the repository (which should be easy enough to do, as it's just adding an import and changing the superclass).
This proposal for Pybuild2 is a stripped-down version of Pybuild1 which is designed to lean more heavily on repository-side installation code. Since this gets rid of the InstallDir/File objects (preserved for the purpose of compatibility with Pybuild1), this would require something I'd mentioned in #263 (closed): not storing metadata about things like OpenMW plugins and archives just in the package files themselves, but instead creating a separate repository-side construct (likely json files) which can exist without packages.
Similarly, the VFS will have to be entirely repo-side. However this leaves one issue I have yet to resolve: how to handle vfs-related rebuilds (like for atlased textures and omwllf/delta-plugin). Perhaps the best way to handle this would be as a module, exposing some way for modules to create and manage their own sets.