[GH-ISSUE #2089] [FR] Create a v0.1 plugin marketplace for users to browse #848

Open
opened 2026-03-23 20:41:58 +00:00 by mirror · 8 comments
Owner

Originally created by @annieappflowy on GitHub (Mar 23, 2023).
Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/2089

Description

  • an entry Plugins in 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

Originally created by @annieappflowy on GitHub (Mar 23, 2023). Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/2089 ### Description - [ ] an entry `Plugins` in 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_
Author
Owner

@Xazin commented on GitHub (Mar 23, 2023):

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)

<!-- gh-comment-id:1480943822 --> @Xazin commented on GitHub (Mar 23, 2023): 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)_
Author
Owner

@annieappflowy commented on GitHub (Mar 23, 2023):

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.

<!-- gh-comment-id:1481070024 --> @annieappflowy commented on GitHub (Mar 23, 2023): 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.
Author
Owner

@rileyhawk1417 commented on GitHub (Apr 2, 2023):

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.

<!-- gh-comment-id:1493341368 --> @rileyhawk1417 commented on GitHub (Apr 2, 2023): 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](https://docs.flutter.dev/development/tools/hot-reload#how-it-works). So am just wondering on how the user will be able to load & use the plugins without the need of compiling them.
Author
Owner

@annieappflowy commented on GitHub (Apr 28, 2023):

@rileyhawk1417 , @a-wallen is working on dynamic loading.

<!-- gh-comment-id:1527564624 --> @annieappflowy commented on GitHub (Apr 28, 2023): @rileyhawk1417 , @a-wallen is working on dynamic loading.
Author
Owner

@a-wallen commented on GitHub (Apr 28, 2023):

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.

<!-- gh-comment-id:1527835171 --> @a-wallen commented on GitHub (Apr 28, 2023): > 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.
Author
Owner

@Xazin commented on GitHub (Apr 29, 2023):

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"?

<!-- gh-comment-id:1528691839 --> @Xazin commented on GitHub (Apr 29, 2023): > > 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"?
Author
Owner

@a-wallen commented on GitHub (Apr 30, 2023):

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.
<!-- gh-comment-id:1529137770 --> @a-wallen commented on GitHub (Apr 30, 2023): > > > 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.
Author
Owner

@tristanRW commented on GitHub (Sep 26, 2024):

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.)

<!-- gh-comment-id:2377655165 --> @tristanRW commented on GitHub (Sep 26, 2024): > 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.)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#848
No description provided.