Meer populaire plugins bundelen met 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

66 likes

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

17 likes

Bedankt. Met mijn beperkte kennis van ontwikkeling en programmering wil ik u toch een vraag stellen. Kunnen deze plug-ins, die oorspronkelijk componenten zijn die aan een basisinstallatie worden toegevoegd, op een dag hun plug-in-karakter verliezen en een volledig onderdeel van een basisinstallatie worden, zonder dat ze überhaupt plug-ins worden genoemd?

3 likes

Dat zou kunnen, ja. Met name de authenticatie-plugins (bijv. apple-auth) zullen waarschijnlijk uiteindelijk in de kern worden opgenomen, net als onze andere ingebouwde authenticatiemethoden (bijv. Google, Facebook, etc.).

3 likes

Interessante zet die de discussie standaard nog meer aanwakkert en nieuwe installaties vergemakkelijkt.

Eén vraag over:

u wordt gevraagd de relevante regel uit uw app.yml-bestand te verwijderen voordat u opnieuw bouwt.

Zal er ook een prompt of waarschuwing zijn voordat/wanneer u op de upgradeknop klikt op de admin-upgradepagina?

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

4 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”

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

8 likes

Er is nog een probleem.

Gem-afhankelijkheden.

Het is niet alleen een kwestie van overbodige kernplugincopieën verwijderen.

We hebben ook het probleem van conflicterende gem-versies, omdat dit de hoeveelheid afhankelijkheden aanzienlijk vergroot.

Ik ben bezig met het downgraden van een specifieke afhankelijkheid in een paar van mijn eigen plug-ins, omdat een kernplug-in ver achterloopt.

Deze wijziging introduceert dus naar mijn mening enkele onnodige extra afhankelijkheden en maakt het herbouwen fragieler.

In mijn specifieke geval gebruikt u multipart-post-2.2.3, terwijl mijn plug-ins al op multipart-post-2.4.0 stonden.

Dat waren twee mislukte herbouwprocessen en veel meer downtime dan comfortabel was.

3 likes

2 berichten zijn naar een nieuw onderwerp gesplitst: Voorgestelde verbeteringen aan de pluginpagina, nu er meer plugins gebundeld zijn met de 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

3 likes

Ik ben benieuwd, heb je deze lijst met plugins verkregen uit Discourse-installaties in het wild? Het komt bijna overeen met 50% van mijn eigen hoofdinstallatie!

2 likes

Ik vraag me af, zou het bundelen van al deze plugins in de kern de forums opblazen? Er zullen waarschijnlijk een paar plugins zijn die beheerders niet op hun forum willen hebben (bijv. Discourse AI), maar geen andere keuze hebben dan deze toe te voegen. Het kan natuurlijk worden uitgeschakeld, maar ik vraag me af of de toegevoegde bestanden en dergelijke de forums zullen vertragen?

2 likes

On the client side, Discourse does not serve any javascript assets for disabled plugins, so there won’t be any impact there.

On the server side, for properly implemented plugins (which all of these are), customizations from plugins are bypassed when they’re disabled. So yes technically there might be a slight overhead to check for enabled/disabled state, but it should be miniscule.

The plugins we’re merging here are the ones which we run on every single instance of Discourse on our discourse.org hosting. So they’re all very well-tested at scale.

15 likes

Oké. Bedankt voor de verduidelijking!

2 likes

Is er een reden waarom jullie dit allemaal tegelijk doen kort voor de release? Voor vertalers die dit in hun vrije tijd doen, is 3.000 extra strings binnen twee weken veel. En zelfs in talen waar de plugins eerder vertaald waren, moeten alle 3.000 teksten opnieuw worden proefgelezen. Af en toe zou 300 waarschijnlijk beter beheersbaar zijn dan 1.500 per week.

6 likes

For self-hosted communities already running one or more of these plugins, will the plugins lose config data when removed from app.yml and folded into core?

I’ve got the AI plugin set up exactly how I want it; if I need to reconfigure it (or at least write down the config options so I can re-add them), it’d be nice to know now. :+1:

6 likes

We’ve been trying to make this as smooth as possible for translators by making use of the translation memory in crowdin, so that translations don’t have to be re-made from scratch. But still, I agree, there are a lot to proofread.

I wonder if there’s more we can automate here, e.g. maybe we can “auto approve” any strings from these plugins, instead of requiring a proofread :eyes:

All config/data will be maintained

10 likes

Een bericht in de UI dat een rebuild aanmoedigt die gedoemd is te mislukken, voelde erg onbeholpen.

Was er geen manier om dit onderwerp ten minste te markeren voor sites die een minimale docker manager versie draaien?

2 likes

Dit meta-onderwerp is niet echt wat je zou willen zien.

De moeilijkheid ligt in het weten welke plugins je uit je app.yml moet verwijderen en welke plugins je niet moet verwijderen.