Skip to content

Commit 2f65097

Browse files
committed
docs: add DR-002-strat for Eclipse project structure decision
1 parent 4a899cb commit 2f65097

1 file changed

Lines changed: 172 additions & 0 deletions

File tree

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
..
2+
Copyright (c) 2026 Contributors to the Eclipse Foundation
3+
4+
See the NOTICE file(s) distributed with this work for additional
5+
information regarding copyright ownership.
6+
7+
This program and the accompanying materials are made available under the
8+
terms of the Apache License Version 2.0 which is available at
9+
https://www.apache.org/licenses/LICENSE-2.0
10+
11+
SPDX-License-Identifier: Apache-2.0
12+
13+
DR-002-Strat: Eclipse Project Structure for S-Core
14+
===================================================
15+
16+
- **Date:** 2026-05-22
17+
18+
.. dec_rec:: Eclipse Project Structure for S-Core
19+
:id: dec_rec__strat__eclipse_project_structure
20+
:status: accepted
21+
:context: Strategy
22+
:decision: Option 1
23+
24+
Context / Problem
25+
-----------------
26+
27+
S-Core needs to decide how its modules are structured within the Eclipse Foundation and GitHub.
28+
Two organisational models are under consideration: keeping all modules within one Eclipse project
29+
(the current approach), or splitting each module into a separate Eclipse project.
30+
31+
The choice has implications for community governance, Committer nomination processes, GitHub
32+
organisation management, and the long-term risk to the S-Core v1.0 release.
33+
34+
Options Considered
35+
------------------
36+
37+
Option 1: One Eclipse Project (currently used)
38+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39+
40+
*Supports the idea: "S-Core is a platform"* (e.g. same as Android)
41+
42+
All S-Core relevant modules reside together in one GitHub organisation under one Eclipse project.
43+
44+
.. uml::
45+
:align: center
46+
:caption: Option 1 – One Eclipse project containing all S-Core repositories
47+
48+
skinparam componentStyle rectangle
49+
50+
component "eclipse" as ef <<Eclipse Foundation>> {
51+
component "eclipse-score" as org <<GitHub Organisation>> {
52+
component "score" as score
53+
component "feo" as feo
54+
component "baselibs" as baselibs
55+
component "logging" as logging
56+
component "persistence" as persistence
57+
component "process_description" as proc
58+
component "docs-as-code" as dac
59+
}
60+
}
61+
62+
score -[hidden]right- feo
63+
feo -[hidden]right- baselibs
64+
baselibs -[hidden]right- logging
65+
score -[hidden]down- persistence
66+
persistence -[hidden]right- proc
67+
proc -[hidden]right- dac
68+
69+
**Pros**
70+
71+
- All S-Core relevant modules are together in one GitHub organisation → it is immediately visible
72+
what belongs to the S-Core project.
73+
- One infrastructure, one timeline, one community → things are kept together.
74+
- One authority (PLs) for all modules that can ensure the same behaviour for all modules.
75+
76+
**Cons**
77+
78+
- Eclipse Foundation project handbook rules were not designed for such big projects. This leads
79+
among others to the following problems:
80+
81+
- It is typically not possible to nominate initial Committers for newly contributed modules.
82+
- The Committer model does not completely scale for such big projects. Having a large number of
83+
modules in one Eclipse project leads to the necessity of having a big number of Committers
84+
with various areas of responsibility.
85+
86+
- Community management and building is more complicated due to the size of the project.
87+
88+
**Possible mitigation**
89+
90+
- Eclipse Foundation and PMC must acknowledge and agree that new modules in S-Core are treated
91+
as new Eclipse projects for the purpose of initial Committer nomination.
92+
- Mapping/restricting of Committer responsibilities in the project to dedicated areas is done
93+
using the CODEOWNERS file in GitHub (already in place).
94+
95+
Option 2: Multiple Eclipse Projects
96+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97+
98+
*Supports the idea: "S-Core is a pure integration project"* (e.g. same as Yocto)
99+
100+
Every module becomes its own Eclipse project; a central S-Core project serves as the integration
101+
project.
102+
103+
.. uml::
104+
:align: center
105+
:caption: Option 2 – Multiple Eclipse projects, S-Core as the central integration project
106+
107+
top to bottom direction
108+
skinparam componentStyle rectangle
109+
110+
component "eclipse (parent)" as ef_parent <<Eclipse Foundation>> {
111+
component "eclipse-score / score\n(integration project)" as score_central
112+
}
113+
114+
component "eclipse A" as ef_a <<Eclipse Foundation>> {
115+
component "... / baselibs" as baselibs
116+
}
117+
118+
component "eclipse B" as ef_b <<Eclipse Foundation>> {
119+
component "... / logging" as logging
120+
}
121+
122+
component "eclipse ..." as ef_n <<Eclipse Foundation>> {
123+
component "..." as more
124+
}
125+
126+
score_central <.. baselibs : sub-project
127+
score_central <.. logging : sub-project
128+
score_central <.. more : sub-project
129+
130+
**Pros**
131+
132+
- Every module is a "small" Eclipse project, which is exactly what the Eclipse Foundation project
133+
handbook is built for → Clear Committer/Contributor/PL management.
134+
135+
**Cons**
136+
137+
- Every project is a completely standalone project. The S-Core project PLs do not have tools to
138+
manage the separate Eclipse projects with implementation modules, which creates a significant
139+
risk that the S-Core community could fracture.
140+
- Every module/project has its own GitHub Organisation → enforcing the same rules and processes
141+
is complicated; belonging to S-Core project is not obvious.
142+
143+
**Possible mitigation**
144+
145+
- S-Core becomes a "parent project" and all other S-Core relevant modules become sub-projects.
146+
This would make it clear that the modules are part of the S-Core project and it would still
147+
be easily possible to follow Eclipse project handbook rules for every sub-project, e.g. for
148+
initial Committer nomination.
149+
- The Eclipse Foundation technically enables S-Core and all sub-projects/modules to be located
150+
within the same GitHub organisation.
151+
152+
Conclusion
153+
----------
154+
155+
**We proceed with Option 1 and initiate a Proof of Concept for Option 2.**
156+
157+
Rationale
158+
^^^^^^^^^
159+
160+
- There are currently no major blockers that would make the switch to Option 2 obligatory.
161+
- Switching the structure of the project and module repositories poses a high risk for the
162+
S-Core v1.0 release, which is planned for the end of the year.
163+
164+
Follow-up Actions
165+
^^^^^^^^^^^^^^^^^
166+
167+
- **X-Core approaches Eclipse Foundation**: Eclipse Foundation and PMC must acknowledge and agree
168+
that new modules in S-Core are treated as new Eclipse projects for the purpose of initial
169+
Committer nomination.
170+
- **POC for Option 2**: The OpenSOVD project and its integration into S-Core will be used as a
171+
Proof of Concept (POC) for Option 2.
172+
- The topic should be revisited after the S-Core v1.0 release is delivered.

0 commit comments

Comments
 (0)