Any general tips on the construction of a great plugin system? I imagine most sort of follow the same principles
Consider that e.g. kubernetes has basically just one actual core component (the API server) and everything else is loosely-coupled plugins. Alternatively, consider any of the projects stuck for 15 years on Python 2 because that's what their plugin system was in 2009. These are two points on a spectrum.