Skip to content

Commit 68a5e76

Browse files
committed
added agreed on "additional OSS contributing rules" for Eclipse Ditto to existing CONTRIBUTING.md
Signed-off-by: Thomas Jaeckle <[email protected]>
1 parent f47d440 commit 68a5e76

File tree

1 file changed

+127
-10
lines changed

1 file changed

+127
-10
lines changed

CONTRIBUTING.md

+127-10
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Please make sure any file you newly create contains a proper license header. Fin
5656
Adjusted for Java classes:
5757
```java
5858
/*
59-
* Copyright (c) 2019 Contributors to the Eclipse Foundation
59+
* Copyright (c) 2023 Contributors to the Eclipse Foundation
6060
*
6161
* See the NOTICE file(s) distributed with this work for additional
6262
* information regarding copyright ownership.
@@ -72,7 +72,7 @@ Adjusted for Java classes:
7272
Adjusted for XML files:
7373
```xml
7474
<!--
75-
~ Copyright (c) 2019 Contributors to the Eclipse Foundation
75+
~ Copyright (c) 2023 Contributors to the Eclipse Foundation
7676
~
7777
~ See the NOTICE file(s) distributed with this work for additional
7878
~ information regarding copyright ownership.
@@ -85,18 +85,135 @@ Adjusted for XML files:
8585
-->
8686
```
8787

88-
### Important
89-
90-
Please do not forget to add your name/organization to the [legal/NOTICE.md](legal/NOTICE.md) file's Copyright Holders
91-
section. If this is not the first contribution you make, then simply update the time period contained in the copyright
92-
entry to use the year of your first contribution as the lower boundary and the current year as the upper boundary, e.g.
93-
94-
Copyright 2018-2019 ACME Corporation
95-
9688
## Submitting the Changes
9789

9890
Submit a pull request via the normal GitHub UI.
9991

10092
## After Submitting
10193

10294
* Do not use your branch for any other development, otherwise further changes that you make will be visible in the PR.
95+
96+
97+
# OSS development process - rules
98+
99+
As of 02/2023, the following additional "rules" regarding the open OSS development process were agreed on.
100+
101+
## Addition of new features via feature toggles
102+
103+
Goals:
104+
* Reduce the risk for other Ditto users that a new feature have an impact on existing functionality and stability
105+
* Whenever possible (and feasible), added functionality shall be added using a "feature toggle".
106+
107+
Ditto already has a class `FeatureToggle.java` where feature toggles are contained and providing functionality to
108+
"secure" a feature with a method in there which throws an `UnsupportedSignalException` once a feature is used which
109+
is disabled via feature toggle.
110+
111+
The toggles are then configured in `ditto-devops.conf` file and can be enabled/disabled via the contained environment variables.
112+
113+
## Creating GitHub issues before starting to work on code
114+
115+
Goals:
116+
* Improve transparency on what is currently happening
117+
* Openly discuss new features and whether they are a good fit for Ditto
118+
* Reduce "time waste"
119+
120+
Whenever a new feature or a bugfix is being worked on, we want to create an issue in Ditto's GitHub project **beforehand**:
121+
https://github.com/eclipse-ditto/ditto/issues
122+
123+
This provides the needed transparency for other contributors before much effort is put into a new topic in order to:
124+
* Get input on the background (e.g. use case behind / "the need") of the feature/bugfix
125+
* Provide feedback, maybe even suggesting alternatives instead
126+
* Provide suggestions of how to implement it the most efficient way
127+
* Maybe even find synergies when more than 1 contributing companies currently have the same topic to work on
128+
129+
The following situation shall be prevented:
130+
* If no issue is created upfront, a contributing company e.g. invests 2 months of work in a new feature
131+
* Then a PR is created with this new functionality
132+
* Only then, a discussion with other contributors can start
133+
* At this point, when there e.g. is a big flaw in the architecture or security or API stability of the added functionality,
134+
the invested 2 months could - in the worst case - be a complete waste of time
135+
* This could easily be resolved by discussing it beforehand
136+
137+
## Create PullRequests early
138+
139+
Goals:
140+
* Get early feedback on implementation details of new features / bugfixes
141+
* Prevent that an implementation goes "into the wrong direction" (e.g. performance or security wise)
142+
143+
PullRequests should be created quite early and publicly on the Ditto project.
144+
If they are not yet "ready" to review/merge, they must be marked as "DRAFT" - once they are ready, they can be marked
145+
as such and a review can be performed.
146+
147+
## Make use of GitHub "Projects" for showing current work for next release
148+
149+
Goals:
150+
* Make transparent "who" currently works on "what"
151+
* Make transparent what the current agenda for the next Ditto release is
152+
153+
The new "Projects" capabilities of GitHub look more than sufficient of what we want to achieve here:
154+
* https://github.com/orgs/eclipse-ditto/projects/1
155+
* https://github.com/orgs/eclipse-ditto/projects/1/views/2 (table view is especially useful, as grouping by "Milestone" is necessary)
156+
157+
## Establish system-tests in the OpenSource codebase
158+
159+
Goals:
160+
* Provide means to run automated tests for future enhancements to Ditto
161+
* Secure existing functionality, avoid breaking APIs and existing functionality when changes to the Ditto OSS codebase are done
162+
163+
The system tests for Eclipse Ditto were initiated here:
164+
https://github.com/eclipse-ditto/ditto-testing
165+
166+
The tests should be part of the validations done in a PR before a PR is approved and merged.
167+
In order to be able to do that, we want to clarify if the Eclipse Foundation can provide enough resources in order to
168+
run the system-tests in a stable way.
169+
170+
Currently, that seems to be quite difficult, as projects only have very limited resources in order to run their builds.
171+
In addition, the CI runs in an OpenShift cluster with additional restrictions, e.g. regarding the kind of Docker images
172+
which can be run, exposing of the Docker socket, etc.
173+
174+
## Regular community meetings
175+
176+
Goals:
177+
178+
* Discuss upcoming topics/problems in advance
179+
* Stay in touch via audio/video
180+
* Build up a (contributor and adopter) community who can help each other
181+
182+
We want to re-establish regular community meetings/call, e.g. a meeting every 2 weeks for 1 hour.
183+
We can utilize the Zoom account from the Eclipse Foundation to have a "neutral" one .. or just use "Google Meet".
184+
185+
## Chat for (internal) exchanges
186+
187+
Goals:
188+
* Have a direct channel where to reach other Ditto committers and contributors
189+
* In order to get timely responses if e.g. a bugfix release has to be scheduled/done quickly
190+
191+
We can use "Gitter.IM" communities to add different rooms of which some also can be private:
192+
https://gitter.im/EclipseDitto/community
193+
194+
## Release strategy
195+
196+
Goals:
197+
* Have rules of how often to do "planned feature releases"
198+
* Have options for contributing companies to prioritize a release (e.g. if urgent bugfix or urgent feature release)
199+
200+
The suggestion would be to have approximately 4 planned minor releases per year, 1 each quarter (e.g. 03 / 06 / 09 / 12).
201+
If needed and all contributing companies agree minor releases can also happen earlier/more often.
202+
203+
Bugfix releases should be done immediately if a critical bug was fixed and either the contributors or the community need a quick fix release.
204+
205+
## Approving / merging PRs
206+
207+
Goals:
208+
* PullRequests - once they are ready - shall not stay unmerged for a long time as this leads to the risk they are not
209+
mergable or get outdated quickly
210+
211+
Approach:
212+
213+
* Before merging a PR at least 1 approval is required
214+
* Approvals shall only be issued after a code review
215+
* Preferably that would be 1 approval from an existing Ditto committer
216+
* But could also be the approval of an active contributor who does not yet have committer status
217+
* If no approval is given for a PR within a duration of 4 weeks after declaring it "ready", a PR can also be merged without other approvals
218+
* Before doing so, the reasons for not approving must be found out (e.g. via the Chat / community call)
219+
* If the reason simply is "no time" and there are no objections against that PR, the PR can be merged without other approvals

0 commit comments

Comments
 (0)