|
|
|
@@ -32,17 +32,17 @@ For more information on developing for the backend:
|
|
|
|
|
|
|
|
|
|
## Dependency management
|
|
|
|
|
|
|
|
|
|
Refer to [UPGRADING_DEPENDENCIES.md](https://github.com/grafana/grafana/blob/master/UPGRADING_DEPENDENCIES.md).
|
|
|
|
|
Refer to [UPGRADING_DEPENDENCIES.md](https://github.com/grafana/grafana/blob/main/UPGRADING_DEPENDENCIES.md).
|
|
|
|
|
|
|
|
|
|
## Ongoing refactoring
|
|
|
|
|
|
|
|
|
|
These issues are not something we want to address all at once but something we will improve incrementally. Since Grafana is released at a regular schedule the preferred approach is to do this in batches. Not only is it easier to review, but it also reduces the risk of conflicts when cherry-picking fixes from master to release branches. Please try to submit changes that span multiple locations at the end of the release cycle. We prefer to wait until the end because we make fewer patch releases at the end of the release cycle, so there are fewer opportunities for complications.
|
|
|
|
|
These issues are not something we want to address all at once but something we will improve incrementally. Since Grafana is released at a regular schedule the preferred approach is to do this in batches. Not only is it easier to review, but it also reduces the risk of conflicts when cherry-picking fixes from main to release branches. Please try to submit changes that span multiple locations at the end of the release cycle. We prefer to wait until the end because we make fewer patch releases at the end of the release cycle, so there are fewer opportunities for complications.
|
|
|
|
|
|
|
|
|
|
### Global state
|
|
|
|
|
|
|
|
|
|
Global state makes testing and debugging software harder and it's something we want to avoid when possible. Unfortunately, there is quite a lot of global state in Grafana.
|
|
|
|
|
|
|
|
|
|
We want to migrate away from this by using the `inject` package to wire up all dependencies either in `pkg/cmd/grafana-server/main.go` or self-registering using `registry.RegisterService` ex https://github.com/grafana/grafana/blob/master/pkg/services/cleanup/cleanup.go#L25.
|
|
|
|
|
We want to migrate away from this by using the `inject` package to wire up all dependencies either in `pkg/cmd/grafana-server/main.go` or self-registering using `registry.RegisterService` ex https://github.com/grafana/grafana/blob/main/pkg/services/cleanup/cleanup.go#L25.
|
|
|
|
|
|
|
|
|
|
### Limit the use of the init() function
|
|
|
|
|
|
|
|
|
@@ -79,8 +79,8 @@ Use of the `simplejson` package (`pkg/components/simplejson`) in place of types
|
|
|
|
|
|
|
|
|
|
All new features that require state should be possible to configure using config files. For example:
|
|
|
|
|
|
|
|
|
|
- [Data sources](https://github.com/grafana/grafana/tree/master/pkg/services/provisioning/datasources)
|
|
|
|
|
- [Alert notifiers](https://github.com/grafana/grafana/tree/master/pkg/services/provisioning/notifiers)
|
|
|
|
|
- [Dashboards](https://github.com/grafana/grafana/tree/master/pkg/services/provisioning/dashboards)
|
|
|
|
|
- [Data sources](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/datasources)
|
|
|
|
|
- [Alert notifiers](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/notifiers)
|
|
|
|
|
- [Dashboards](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/dashboards)
|
|
|
|
|
|
|
|
|
|
Today its only possible to provision data sources and dashboards but this is something we want to support all over Grafana.
|
|
|
|
|