Skip to content

Commit

Permalink
Add RFC: Plugin Manager
Browse files Browse the repository at this point in the history
updated rfc
  • Loading branch information
Programatic committed Dec 31, 2019
1 parent 0259688 commit 8884abb
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions accepted/0004-plugin-manager.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
- Start Date: 2019-12-30
- RFC PR: #4
- Mantis Issue: N/A

# Summary
Create a plugin manager that is capable of configuring the loading of plugins as
well as providing an easier means of installing plugins. Perhaps - later down
the line - creating a online database that individuals can search and seamlessly
install plugins.

# Motivation
Varying from plugin to plugin, there are a variety of different intallation
methods for each plugin. On top of that, once installed, there is no easy way to
disable, or even configure, each individual plugin. In addition, if one plugin
doesn't behave correctly because of another, it can become difficult to diagnose
which plugins are causing the error. By implementing a plugin manager, it allows
users to seamlessly install plugins and have finer control over the loading of
their plugins. Furthermore, having a plugin manager opens up many more
possibilties for both users and developers.

# Design
## User UX
1. In OBS, under "File", select "Settings" or under controls, select "Settings"
2. In the window that opens, select "Plugins" from the sidebar
3. Configure plugins - split into 64 and 32 bit - determining which plugins are to be loaded
4. Install any new plugins if there are any with an "Import Plugins" button
5. Hit "Ok" or "Cancel"

## Functionality
### Loading
On OBS startup while the plugins are being loaded, check the plugin name against
the configuration settings to see if the plugin is disabled. If it is disabled,
continue loading all other plugins. If the plugin is not mentioned, then
continue loading to preserve allowing previous version plugins to load.

### Installation
With the plugin manager, installing plugins becomes much easier. When installing
a plugin, the user selects the plugin with a file explorer. Once selected, the
plugin would be copied to the correct location. If the plugin comes pre-packaged
in a zip with a 'manifest' file, then the manifest will be analyzed and the
plugin uncompressed before being moved to the correct directory. Information
analyzed from the manifest could then be displayed to the user. Such information
would include version numbers, author, website, and custom configuration options that the
plugin would have access to.

### Future Considerations
To further simplify the process for users, the plugin manager could also connect
to a server/database that stores (or at least references) plugins to be easily
and seamlessly installed from the server. It would have all the manifest
information ready for installation and could even be updated automatically when
out of date.

# How We Teach This
It would be provided in the documentation. However, the bare functionality would
hopefully be designed well enough that it can become plainly clear to the user
how it works.

0 comments on commit 8884abb

Please sign in to comment.