Bundling more popular plugins with Discourse core

Over the next few weeks, we’ll be moving a number of popular Discourse plugins into the core repository. That means that Discourse will come with a larger number of plugins by default, and it’ll be easier for us to keep them all tested & up-to-date.

All these plugins will remain disabled by default, so this won’t have any visible impact on existing communities. If you use a managed hosting service like discourse.org, you don’t need to do anything.

Self-hosted communities

If you self-host Discourse, and are already using one of these plugins, you’ll be prompted to remove the relevant line from your app.yml file before your next rebuild.

Development Environment

If you already have one of the plugins installed locally, and then pull the latest version of Discourse core, one of two things will happen.

  1. If you use symlinks for your plugins, then you’ll get an error during git pull. To resolve the issue, delete the symlink, then run git pull again

  2. If you clone plugins directly, then the git pull of core will succeed, but you will have some surprising ‘unstaged changes’ caused by the nested git repositories. The best way to proceed is to delete the affected directory, and then restore it from main. For example:

    rm -rf plugins/discourse-reactions
    git restore plugins/discourse-reactions
    

Affected Plugins

49 Likes

Thanks for providing the full HINT line in the first post here, this helped me diagnose a failed rebuild this morning :blush:

12 Likes

Thanks. With my poor knowledge of development and programming, I would still like to ask you a question. Can these plugins, which are originally components intended to be added to a basic installation may one day lose their plug-in character and become a complete part of a basic installation, without being called plug-ins at all?

2 Likes

They might do, yes. In particular, the authentication plugins (e.g. apple-auth) are quite likely to be absorbed into core eventually, just like our other builtin authentication methods (e.g. Google, Facebook, etc.).

3 Likes

Interesting move that gears up discourse by default even more and facilitates new installs.

One question regarding :

you’ll be prompted to remove the relevant line from your app.yml file before your next rebuild.

Will there also be a prompt or a warning message before/when you click on the upgrade button from the admin upgrade page?

2 Likes

If I recall correctly from my experience, you will only be able to update docker at first. Once you’ve updated docker, you will be shown a message in the update UI explaining that you have to update via the command line, and how to do it.

Then when you update on the ocmmand line you’ll see the HINT for each plugin you need to remove from app.yml as explained in the first post above.

2 Likes

This is a good update but was this really necessary? Giving a rebuild failure seems a little bit harsh to me.. a UI warning or automated update (or just ignoring them entirely) would have been nicer than putting a gun to my head and saying “remove these now”

3 Likes

This caught me out last week when I tried to update via cmd line and it failed (reactions plugin).

It caught me out again when my cmd line update failed again this morning (data explorer plugin).

I would very much welcome a warning on the cmd line before the update process starts, and then inevitably fails.

Twice in two weeks now my updates have failed and this has meant my Discourse is offline for the duration of time it takes me to debug the issue, edit configs, try again, etc - all while in a mild state of panic because everything is broken.

3 Likes

There’s another problem.

Gem dependencies.

It’s not just a case of deleting redundant core plugin clones.

We also have the issue of gem version clashes as it significantly increases the amount of dependencies.

I’m just going through a process of downgrading a specific dependency in a couple of my own plugins because a core plugin is well behind.

So this move introduces some unnecessary extra dependencies imho and makes rebuilding more fragile.

In my particular case you are using multipart-post-2.2.3 where my plugins were already on multipart-post-2.4.0

That was two failed rebuilds and far more downtime than comfortable.

2 Likes

2 posts were split to a new topic: Suggested improvements to plugin page, now that more plugins are bundled with core,

A move we will follow up on shortly is getting rid of gem lines in core plugins and moving to the monolith gem file

2 Likes

I’m curious, did you get this list of plugins from Discourse installations in the wild? It matches almost 50% of my own main install!