Skip to content

Commit 9b5ee1c

Browse files
authored
Merge pull request #7475 from alculquicondor/style-scheduling
Add style and technical guidelines for SIG Scheduling
2 parents 7e507ce + 89e9132 commit 9b5ee1c

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

sig-scheduling/CONTRIBUTING.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ also follow the requirements of `Bug Report`, it will help us a lot when analyzi
3737
* If there's any debate on the rationalities, you can bring it to the [SIG meeting](https://github.com/kubernetes/community/tree/master/sig-scheduling#meetings).
3838
* If there are multiple implementation options, consider creating a doc with Pros and Cons, and gather some feedback.
3939
You can do this by sharing the doc with the SIG's [mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-scheduling).
40-
* If necessary, open an issue in kubernetes/enhancements and write a [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling) for it.
40+
* Any feature that requires an API change or significant refactoring
41+
should be preceded by a [Kubernetes Enhancement Proposal (KEP)](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling).
4142

4243
* If you find any out-of-date documentation, please help the community correct that by either sending a PR to
4344
update the docs or open an issue if you are not sure about how to fix it.
@@ -72,6 +73,49 @@ to the issue/PR, which helps to preserve the context.
7273

7374
* Always open an issue for a TODO or a follow-up just in case you forget it.
7475

76+
### Technical and style guidelines
77+
78+
The following guidelines apply primarily to kube-scheduler, but some subprojects
79+
might also adhere to them.
80+
81+
When designing a feature, think about components that depend on kube-scheduler
82+
code, such as [cluster-autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler)
83+
or [scheduler-plugins](https://github.com/kubernetes-sigs/scheduler-plugins).
84+
Also consider interactions with other core components such as [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/).
85+
86+
When coding:
87+
- Follow [effective go](https://go.dev/doc/effective_go) guidelines.
88+
- Use [contextual logging](https://git.k8s.io/community/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#contextual-logging-in-kubernetes).
89+
Some packages might still be using [structured logging](https://git.k8s.io/community/contributors/devel/sig-instrumentation/logging.md).
90+
- When writing APIs, follow [k8s API conventions](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md)
91+
- Naming:
92+
- Length: As a rule-of-thumb, the length of a variable name should be
93+
proportional to the size of the scope where it is used and inversely
94+
proportional to the number of times that it is used.
95+
96+
Testing:
97+
- Unit tests: every change should have high coverage by unit tests.
98+
- Integration tests: should cover interactions between the different components
99+
of kube-scheduler (event handlers, queue, cache, scheduling cycles) and
100+
kube-apiserver.
101+
- E2E tests: should cover interactions with other components, such as kubelet,
102+
kube-controller-manager, etc.
103+
- [Perf tests](https://github.com/kubernetes/kubernetes/tree/master/test/integration/scheduler_perf):
104+
should be considered for critical and/or CPU intensive operations.
105+
- General guidelines:
106+
- Follow a [DAMP principle](https://stackoverflow.com/a/11837973).
107+
- Use `cmp.Diff` instead of `reflect.Equal`, to provide useful comparisons.
108+
- Compare errors using `errors.Is` (`cmpopts.EquateErrors` when using
109+
`cmp.Diff`) instead of comparing the error strings.
110+
- Leverage existing utility functions from `pkg/scheduler/testing`.
111+
- Avoid creating or using assertion libraries.
112+
Use standard `t.Error` or `t.Fatal`, as necessary.
113+
- `gomega` and `ginkgo` should only be used in E2E tests.
114+
115+
Note that some existing code might be in violation of these guidelines, as it
116+
might have been written before these guidelines were established. Feel free to
117+
open PRs to get the code up to the standard.
118+
75119
## Use of @mentions
76120

77121
* @kubernetes/sig-scheduling-api-reviews - API Changes and Reviews

0 commit comments

Comments
 (0)