-
-
Notifications
You must be signed in to change notification settings - Fork 314
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
[GSoC 2024] Plugin Manager Dialog #3358
Comments
I suggest to add at least two more metadata to plugin description:
|
@rodolforg , thanks for the suggestion. I am running a little later than my schedule. I will cover it up within this week. Defining a Plugin (from docs) Structure of pluginPlugin directory structure:
A new file format: .sipz (Synfig Plugin Zipped) Here's an overview of how the installation will work. Community: Give me guidance and suggestions regarding this. Questions that I need feedback from the community. Where to access Plugin Manager Dialog?
I think we should go with the Plug-Ins menu. |
Is this necessary, or can we skip this step for now? |
The intent here is to ease other developers to release their plugins without it being in synfig source code, for example. |
Synfig already has support for executing plugins through Python Scripts. But the users are required to manually place the scripts in the plugin directory and thus increases friction for adoption of plugins.
A plugin manager dialog would allow the users to install, uninstall and hide/show the plugins. Through this interface the user need not to manually place the Python script, but instead just choose a Plugin installation file and let Synfig take care of it.
Benefits
Benefits for end users:
Benefits for Plugin Developers:
Deliverables
GUI Deliverables:
A GUI for listing and managing plugins in Synfig (as shown below)
![image](https://private-user-images.githubusercontent.com/37113369/330339127-8c6d7b22-0879-4705-9e6d-7e150f70ae66.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwNTQ2NzIsIm5iZiI6MTcxOTA1NDM3MiwicGF0aCI6Ii8zNzExMzM2OS8zMzAzMzkxMjctOGM2ZDdiMjItMDg3OS00NzA1LTllNmQtN2UxNTBmNzBhZTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIyVDExMDYxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVhZWJhOTExM2ZiMGU0ZTE4MTAwODRiZjFkMjk1ZjY1MzM4ZGU2OWE2ZTAyOTIwMzBlZjk5ODlhZmE0NjE1MjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7zFa-wEXd9XLlaAPZepC2NbE4KXFwx4QNO3ZmmmCASE)
![image](https://private-user-images.githubusercontent.com/37113369/330339214-5db9bca9-3f0f-49aa-a690-cbfa36e3a47b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwNTQ2NzIsIm5iZiI6MTcxOTA1NDM3MiwicGF0aCI6Ii8zNzExMzM2OS8zMzAzMzkyMTQtNWRiOWJjYTktM2YwZi00OWFhLWE2OTAtY2JmYTM2ZTNhNDdiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIyVDExMDYxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzZDExZmJiM2M0NjdkZjBlODE1NzRmOTczYjBkYTZhMDBjODBlMjc2NDA1YWMyMzgxZjQwZTJmZTk0NmNjM2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.sio3XZ5O-ZICkrGUGtkVzt4PY4XetxhG-JISIFMuqYA)
A GUI for managing Plugin Configuration
![image](https://private-user-images.githubusercontent.com/37113369/330339376-2880a193-bc13-4af4-9665-7c01eddb1cff.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwNTQ2NzIsIm5iZiI6MTcxOTA1NDM3MiwicGF0aCI6Ii8zNzExMzM2OS8zMzAzMzkzNzYtMjg4MGExOTMtYmMxMy00YWY0LTk2NjUtN2MwMWVkZGIxY2ZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIyVDExMDYxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg2NzJkZDUyNjA0MjkwYTJkZjM5YTI5ZTNkZGQ0YjJkODJhZmFjYjU0OTI4YmVlZTA4ZGQwMTgxZGI3YTE0MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Ys8RHp_jWuLtz76a8EimqDN0QZBt4AKwVr9gpn9qWe8)
Based on the information in the image, here is the markdown format for the documentation for developers:
Documentation for developers
Documentation for users
Project Details:
Plugin Manager
Project Implementation
The main part of the project implementation is to build a Plugin Manager interface where users have a GUI through which they will install and uninstall plugins, and be able to set any configuration for the plugin. This includes adding a Dialog Box with multiple tabs.
It will have 2 parts:
1. Plugin Manager
With this a user should be able to perform following operations:
2. Plugin Configuration Window
With the configuration management window a user should be able to modify the configuration file of a plugin.
What is a configuration file?
This will be a XML/JSON defined file where developers could define preferences which user can choose from. Those chosen preferences will then be passed to the plugin through command line arguments.
Note: This feature might seem same as #2996, though they are very much similar in nature. The difference would be these preferences/configurations are choices that the user doesn't often change or in other words it should be used to define the behaviour of a plugin, rather than getting input for that one time execution.
This feature isn't replacement for #2996, but an additional feature for Plugin.
Defining the specifications for zip file
Right now the plugin is located in the Plugins Directory. Each plugin has a separate directory with a plugin.xml file which gives information about the plugin (plugin’s metadata). Containing name and which python program to execute. Also metadata about the plugin become possible due to #2996.
After discussing with the community we could come to a final file format specification for Synfig. Here are my ideas regarding specifications for Synfig Plugin
Use a new file extension .sipz (Synfig Plugin Zip)
Which would be just a zip file but giving it would be better to give it a new file name extension so that we can uniquely identify this as a Synfig Plugin and not just any ordinary zip file. Doing this will be beneficial for the security of users too. If it were just a zip file people would easily figure it out and they may set up and distribute malicious plugins. Thus using a new file extension would increase friction.
Defining the structure of plugins
We would need to define proper structure for the Plugin Directory
These rules will be checked while installation of a plugin, if a ‘sipz’ doesn’t
meet the requirements Synfig should reject the plugin and discard the installation.
Plugin Repository
This is a repository on a trusted server (maintained by Synfig). The idea for implementing the Plugin Repository is to maintain a list of plugins (in XML/JSON format) on a trusted server. This would contain following things:
Here, “Path to plugin” can be either of below
availability of the file)
be production ready)
All the validation should also be performed on plugins downloaded from Plugin Repository. If required we could also add more security measures like adding “SHA256” to the plugin repository and once downloaded from the link we could verify its integrity.
References:
Proposal: Proposal for Plugin Manager Dialog (350 hrs)
#2996
https://forums.synfig.org/t/how-to-distribute-plugins/13907
Ideas List — Synfig developers docs documentation
The above content is from my proposal. Soon, I will create a task list and share additional resources, which I will keep updating. Thank you Synfig community for this giving me this opportunity.
The text was updated successfully, but these errors were encountered: