|
| 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