I would like to leave some feedback about operations experience from past several years when I occasionally look after one pretty small Discourse installation:
- Single self-hosted VM
- Discourse installed via official docker setup
- 3 Official plugins
Every time it comes to updating from an older version (3-9 months old), it’s always a nightmare. I have never had a smooth upgrade that wouldn’t take days of head scratching, reading source code and forums, trying unconventional backup restore strategies, etc. So far, I have encountered these issues, some of them multiple times:
- Backup cannot be restored (into same version of Discourse backup was made from).
- updated discourse_docker incompatible with discourse, unable to rebuild
- Plugins randomly breaking after rebuild
Discourse is an ecosystem of main app, discourse_docker and plugins, and yet neither discourse_docker nor plugins have any tags in github, or versioning, that would say “Discourse version x.y.z will definitely work with discourse_docker version x.y.z and plugins that have version x.y.z”.
Proposed solutions:
- Have CI setup that tests backup / restore for each release.
- Start versioning and tagging discourse_docker and plugins in sync with discourse releases
- Have some CI to test interoperability of various ecosystem parts
- Have tests in plugins, and CI in pull requests
- Forbid committing directly to master without pull request reviews, so situations like this would not occur: Add frozen string literal comment to files. · discourse/discourse-oauth2-basic@5a459fb · GitHub
When developing, please remember that not everyone is a discourse developer who is always using latest master branch from all discourse/* repos. I hope this feedback proves to be useful.