AppFlowy icon indicating copy to clipboard operation
AppFlowy copied to clipboard

[FR] Create a v0.1 plugin marketplace for users to browse

Open annieappflowy opened this issue 2 years ago • 8 comments

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

annieappflowy avatar Mar 23 '23 09:03 annieappflowy

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)

Xazin avatar Mar 23 '23 10:03 Xazin

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.

annieappflowy avatar Mar 23 '23 12:03 annieappflowy

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 avatar Apr 02 '23 13:04 rileyhawk1417

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

annieappflowy avatar Apr 28 '23 13:04 annieappflowy

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.

a-wallen avatar Apr 28 '23 16:04 a-wallen

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

Xazin avatar Apr 29 '23 06:04 Xazin

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.

a-wallen avatar Apr 30 '23 20:04 a-wallen

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

tristanRW avatar Sep 26 '24 18:09 tristanRW