Skip to content
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

Remove "addon" versus "plugin" inconsistencies by adopting a single name for both #118

Open
willnationsdev opened this issue Oct 2, 2019 · 4 comments

Comments

@willnationsdev
Copy link
Contributor

Describe the project you are working on:
I work on a lot of plugins.

Describe the problem or limitation you are having in your project:
The terms addon and plugin are terms that are often used interchangeably in the community (with good reason, since so many addons include plugins). However, not all addons are plugins. There are a couple places still where wires get crossed.

  1. The ability to toggle plugins on and off has long sufficed. However, now that we have script classes as an exposed API that does not rely on plugins. People can install addons, but may want to be able to toggle an addon's script classes on/off without the addon itself having a plugin. The ProjectSettings' Plugins tab only allows you to toggle plugins though.
  2. The defining configuration file that specifies that an addon exists is called plugin.cfg, not addon.cfg. This invites confusion to users who may be under the impression that the EditorPlugin is a necessary part of their addon.
  3. the PluginCreateDialog is specialized exclusively for creating plugins, but it should really support addons in general and keep plugins optional. Users should be able to easily create toggleable subsystems for their projects with the ability to redistribute them independently if desired (and without the expectation that it will be a plugin).

Describe how this feature / enhancement will help you overcome this problem or limitation:

  • Minimizes user confusion.
  • Improves the flexibility of the addon/plugin system to account for the currently global presence of script classes.
  • Remove clutter / improve the flexibility of the addon creation process (as distinct from the plugin creation process).

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:

plugin_tab_edited

Describe implementation detail for your proposal (in code), if possible:

I would just add a setting in PluginCreateDialog that allows users to leave the plugin script path empty (so that it doesn't generate one) and then update the Plugin tab to be the Addon tab instead and specifically flag whether an addon has a plugin (with all of them being toggleable).

If this enhancement will not be used often, can it be worked around with a few lines of script?:

It is an editor change and a breaking API change for the addon system. So no.

Is there a reason why this should be core and not an add-on in the asset library?:

See above.

@Calinou
Copy link
Member

Calinou commented Dec 24, 2020

Note that this can be worked around by creating an empty script as the main plugin script (example). This is the approach I recommend using.

As for naming inconsistencies, we should probably ensure that "add-ons" are always referred as "plugins" if they contain code that is meant to run within the editor. Otherwise, the term "add-on" should be used.

@Calinou Calinou changed the title Remove addon versus plugin inconsistencies. Remove "addon" versus "plugin" inconsistencies by adopting a single name for both Apr 9, 2021
@Calinou Calinou added this to the 4.0 milestone Dec 9, 2021
@theraot
Copy link

theraot commented Mar 31, 2022

Keep in mind that we have an asset library, which has addons (scripts, shaders, etc) and projects (demos and templates). So we have:

Asset
├ Projects    Must be deployed as a new project
└ Addons      Can be deployed anywhere in a project
   └ Plugins  Includes an EditorPlugin script in the "addons" folder

And there are already addons in the asset library that include files outside of the "addons" folder, or even don't have an "addons" folder at all. If these addons should be tracked in project settings then Godot needs to be able to track addons everywhere (which makes it even more clear that the "addons" folder is for "plugins"). Alternatively addons should be limted to the "addons" folder.


It appears to me that the simpler solution is to rename the "addons" to "plugins" (as the linked issue suggests). After all the editor will look for plugins (EditorPlugin) in the "addons" folder, and there are existing addons that deploy files outside of the "addons" folder.

So I believe it should be:

Asset
├ Projects    Must be deployed as a new project
└ Addons      Can be deployed anywhere in a project
   └ Plugins  Include an EditorPlugin script in the "plugins" folder

However, there are already addons for Godot 4 on the asset library that use the "addons" folder, so I'm not sure this should be changed at all (plus keeping the same name will make migrating project easier).

Perhaps a deprecation system where both folders are supported but the "addons" folder causes a warning? Although Godot 4 is meant to breaking compatibility so a deprecation system makes little sense. I fear that asking everybody to resubmit their Godot 4 assets is too much to ask.


Edit: After considering also #1205 and #3782 I think it is potentially better if Godot track addons anywhere (although it is not simpler).

@peterhoglund
Copy link

Huh, is there a difference between addons and plugins? I don't think that is widely understood by the community.

@Calinou
Copy link
Member

Calinou commented Oct 24, 2023

Huh, is there a difference between addons and plugins? I don't think that is widely understood by the community.

An add-on is generally understood as any third-party code/assets (this may be one or more editor plugins), while a plugin is specifically an editor plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants