@@ -56,7 +56,7 @@ Please make sure any file you newly create contains a proper license header. Fin
56
56
Adjusted for Java classes:
57
57
``` java
58
58
/*
59
- * Copyright (c) 2019 Contributors to the Eclipse Foundation
59
+ * Copyright (c) 2023 Contributors to the Eclipse Foundation
60
60
*
61
61
* See the NOTICE file(s) distributed with this work for additional
62
62
* information regarding copyright ownership.
@@ -72,7 +72,7 @@ Adjusted for Java classes:
72
72
Adjusted for XML files:
73
73
``` xml
74
74
<!--
75
- ~ Copyright (c) 2019 Contributors to the Eclipse Foundation
75
+ ~ Copyright (c) 2023 Contributors to the Eclipse Foundation
76
76
~
77
77
~ See the NOTICE file(s) distributed with this work for additional
78
78
~ information regarding copyright ownership.
@@ -85,18 +85,135 @@ Adjusted for XML files:
85
85
-->
86
86
```
87
87
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
-
96
88
## Submitting the Changes
97
89
98
90
Submit a pull request via the normal GitHub UI.
99
91
100
92
## After Submitting
101
93
102
94
* 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