[FR] Create a v0.1 plugin marketplace for users to browse
Description
- [ ] an entry
Pluginsin the left navigation panel of the application, right above the Trash icon - [ ] click on the
Plugins, the user should be able to browse a list of AppFlowy plugins in a popup large size window. - [ ] each plugin item is displayed in a card component
- [ ] each plugin should show metadata: name, by {GitHub profile}, the last update time, a one-liner description
- [ ] after clicking on a plugin card, the user should be able to see the plugin's guidebook, including its description, how-tos, etc
- [ ] encourage each plugin developer to set up a buy me a coffee account and link it to their plugin page
- [ ] add details to each plugin page
Impact
All the users
Additional Context
No response
I'm thinking about these "plugins", and how they should work for a "Workspace" kind of setting.
Is there a feature document describing this?
I'm just thinking if Plugins are locally installed, then how would it look for users that didn't have this plugin that is browsing a document created by another user, who used a plugin to insert eg. a special block? (The reason I'm posing this question is that the work just started on AppFlowy collaborate, and I'm wondering about the impact of work on that from this feature)
You've raised great questions! Thanks for asking. To be honest, I don't have an answer yet. There are already challenges we need to tackle to support the local installs, not to mention collaboration.
I have a question though any idea on how the plugins would be loaded into AppFlowy?
Flutter does use hot-reload while developing, but it writes the code directly to the kernel, they explained on how that works.
So am just wondering on how the user will be able to load & use the plugins without the need of compiling them.
@rileyhawk1417 , @a-wallen is working on dynamic loading.
I'm thinking about these "plugins", and how they should work for a "Workspace" kind of setting.
Is there a feature document describing this?
I'm just thinking if Plugins are locally installed, then how would it look for users that didn't have this plugin that is browsing a document created by another user, who used a plugin to insert eg. a special block? (The reason I'm posing this question is that the work just started on AppFlowy collaborate, and I'm wondering about the impact of work on that from this feature)
I was thinking about having plugins with two scopes, one with global scope (per user) and one with a workspace scope.
I'm thinking about these "plugins", and how they should work for a "Workspace" kind of setting.
Is there a feature document describing this?
I'm just thinking if Plugins are locally installed, then how would it look for users that didn't have this plugin that is browsing a document created by another user, who used a plugin to insert eg. a special block? (The reason I'm posing this question is that the work just started on AppFlowy collaborate, and I'm wondering about the impact of work on that from this feature)
I was thinking about having plugins with two scopes, one with global scope (per user) and one with a workspace scope.
Alright that makes sense, then is it wrong to assume that a user could not use their locally installed plugins in workspaces, only in their own "workspace"?
I'm thinking about these "plugins", and how they should work for a "Workspace" kind of setting. Is there a feature document describing this? I'm just thinking if Plugins are locally installed, then how would it look for users that didn't have this plugin that is browsing a document created by another user, who used a plugin to insert eg. a special block? (The reason I'm posing this question is that the work just started on AppFlowy collaborate, and I'm wondering about the impact of work on that from this feature)
I was thinking about having plugins with two scopes, one with global scope (per user) and one with a workspace scope.
Alright that makes sense, then is it wrong to assume that a user could not use their locally installed plugins in workspaces, only in their own "workspace"?
I think that users should be able to use their locally installed plugins (global/user-level). However, if the plugin edits the document or renders it in a specific way that requires it, then the plugin should be added to that workspace for correctness across devices.
For example,
- An AI summary plugin can modify the text of a document but is not required to view the document.
- A plugin that inserts a special kind of divider would need the plugin to know how to render the divider if the document is viewed on a device that does not have that plugin saved on the global/user level.
I'm thinking about these "plugins", and how they should work for a "Workspace" kind of setting.
I think that users should be able to use their locally installed plugins (global/user-level). However, if the plugin edits the document or renders it in a specific way that requires it, then the plugin should be added to that workspace for correctness across devices.
For example,
- An AI summary plugin can modify the text of a document but is not required to view the document.
- A plugin that inserts a special kind of divider would need the plugin to know how to render the divider if the document is viewed on a device that does not have that plugin saved on the global/user level.
From the user standpoint I want the workspaces I load to work even if they were created using plugins. So maybe the workspace can "remember the plugins it needs to work" and request the user install them in this workspaces scope.
i.e.: I open a workspace that uses plugin P for rendering flashcards. Since I don't have plugin P installed in my user-scope the workspace requests to install P in the workspace-scope so that the flashcards can be displayed as intended. After I open another workspace, Plugin P is not active since the scope changed.
I suppose it would be difficult to detect automatically which plugins are "needed for a workspace to work" and which are not. So maybe the plugin-devs would have to put that into plugin-metadata.
Edit: Sorry for bumping a year-old issue, but I think a Plugin-Marketplace would not only make Appflowy more enjoyable for the end user, but also promote its development. (Since plugin-devs may help the work on the main product.)