-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
1 changed file
with
56 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |