Skip to content
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

Improve User Experience and Discoverability with 3rd Party Plugins #1275

Open
skybaks opened this issue Aug 30, 2023 · 6 comments
Open

Improve User Experience and Discoverability with 3rd Party Plugins #1275

skybaks opened this issue Aug 30, 2023 · 6 comments

Comments

@skybaks
Copy link
Contributor

skybaks commented Aug 30, 2023

I think there is an opportunity to improve the experience of a user in both discovery and installation of a 3rd-party plugin.

Something fancy might include a addition to the CLI that installs from pip and configures the settings to load the plugin.

Another fancy idea might be a GUI inside the game that allows a server admin to browse plugins from a "shop" or something. Consider like how Openplanet manages its plugins on its website and then provides the in-game plugin manager to handle installation as well as discoverability.
The plugin code hosting could still be done through pypi but maybe developers could submit their package to be added to a list of plugins that would be maintained on a website or even more simply, in the source code.

The simplest possible implementation could just be another page in the online documentation that talks about some of the existing plugins with links to their repos/pypi package.

@TheMaximum
Copy link
Member

It would indeed be cool to have an in-game app manager, where you can install third-party apps, enable/disable them, possibly also configure them. Hosting might be best to do via pypi, but we could Git-host a simple json file containing the available apps - on which an app author can make a PR to request their app to be added.

@tomvlk
Copy link
Member

tomvlk commented Aug 30, 2023

@skybaks
Copy link
Contributor Author

skybaks commented Sep 1, 2023

Yeah, that looks like a cool way to manage it. Off the top of my head for the specs it might be nice to include:

  • path to add to apps.py
  • documentation link or file
  • source code link
  • issue report link
  • version

@TheMaximum
Copy link
Member

Made a small start with gathering information from an index JSON, pypi and pip.
Might be interesting as a starting point for this implementation.

master...sandbox/app-manager

@skybaks
Copy link
Contributor Author

skybaks commented Sep 3, 2023

Yeah, that looks nice. I didnt know we could get all that data from pypi so easily, that really simplifies what we would need to store in the index file.

In terms of installing or uninstalling plugins, do you think manipulating the apps.py file is the way to handle it or is there possibly a better solution? Do you think it could be possible to add new apps during runtime? Also, what about removing apps at runtime? That might be tricky due to callback registrations

@TheMaximum
Copy link
Member

It's pretty cool that you can get all that data from PyPi, it was indeed my intention to keep the amount of data needed in the index-file as low as possible.

I know that @tomvlk is looking to change the way PyPlanet is configurated for 1.0.0, so I don't know whether there will be an apps.py file by then. I would've gone the apps.py route. I'd think adding new apps during runtime should be possible, but I haven't tried that yet. Removing apps might be a bit harder, they should at least all properly implement the on stop method, but I'm not 100% sure you can actually unregister commands/signals and such.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants