165 <text>Also configuration should have machine readable description and the user should be able to test it by executing a command (validator).</text> |
165 <text>Also configuration should have machine readable description and the user should be able to test it by executing a command (validator).</text> |
166 </item> |
166 </item> |
167 </chapter> |
167 </chapter> |
168 |
168 |
169 <chapter> |
169 <chapter> |
170 <name>Modular architecture</name> |
170 <name>Modular architecture and extensibility</name> |
171 <id>c56e7e86-e480-4a5d-8a47-ab155dcd59b1</id> |
171 <id>c56e7e86-e480-4a5d-8a47-ab155dcd59b1</id> |
172 <item> |
172 <item> |
173 <id>e50424e8-94f3-48aa-bf01-0ba984eb2349</id> |
173 <id>e50424e8-94f3-48aa-bf01-0ba984eb2349</id> |
174 <text>larger and multi-purpose software should be divided into smaller modules</text> |
174 <text>Larger and multi-purpose software must be divided into smaller modules.</text> |
175 </item> |
175 </item> |
176 <item> |
176 <item> |
177 <id>e752efae-75c9-4620-aa14-65c4949a3609</id> |
177 <id>e752efae-75c9-4620-aa14-65c4949a3609</id> |
178 <text>modules must have defined dependencies (less = better)</text> |
178 <text>The modules must have defined dependencies (less = better).</text> |
|
179 <note>Dependencies needed to write an extension/module (i.e. header files, API classes/interfaces) should be as small as possible (do not require large codebase to write a mere plug-in).</note> |
|
180 <note>The required dependency should contain just interfaces (method/function signatures) and data structures but no implementation (executable code).</note> |
179 </item> |
181 </item> |
180 <item> |
182 <item> |
181 <id>e9988ed0-d686-41a0-9f1e-3243ac5235d5</id> |
183 <id>e9988ed0-d686-41a0-9f1e-3243ac5235d5</id> |
182 <text>particular modules should be compilable and executable separately</text> |
184 <text>Particular modules should be compilable and executable (installable) independently.</text> |
183 </item> |
185 <text>It should not be necessary to recompile the core and other modules if only one module is changed.</text> |
184 <item> |
186 <note>Whole system should be compilable (buildable) with only selected modules – must not require compilation or even distribution of all modules, if they are not necessary.</note> |
185 <id>ac722cec-0734-4d80-9885-d70a97b6402b</id> |
187 <note>The goal is to reduce the complexity and the code footprint that comes into the play if the user needs only certain features.</note> |
186 <text>whole system should be compilable (buildable) with only selected modules – must not require compilation or even distribution of all modules, if they are not necessary</text> |
188 </item> |
187 </item> |
|
188 </chapter> |
|
189 |
|
190 <chapter> |
|
191 <name>Extensible</name> |
|
192 <id>d333af72-b5b5-432f-b564-a008d54a85d1</id> |
|
193 <item> |
189 <item> |
194 <id>a7bc51ba-9832-4f75-983c-e75dc0801113</id> |
190 <id>a7bc51ba-9832-4f75-983c-e75dc0801113</id> |
195 <text>able to be extended</text> |
191 <text>Another good ways to extend and customize the software are:</text> |
196 <item> |
192 <text>configuration (XML, INI, RegExp, SQL, XSLT, XPath etc.) and</text> |
197 <id>e190f58d-1c16-4198-94d6-fc1a99fa85a0</id> |
193 <text>scripting (Guile, Bash, Python, Lua, ECMA Script etc.)</text> |
198 <text>by configuration (RegExp, SQL, XSLT, XPath etc.)</text> |
|
199 </item> |
|
200 <item> |
|
201 <id>fde301e5-6e75-49a4-85c8-a231f6a63036</id> |
|
202 <text>by scripting (Guile, Bash, Python, Lua, ECMA Script etc.)</text> |
|
203 </item> |
|
204 <item> |
|
205 <id>a9c63cea-b9df-4bbd-bec1-84a047514667</id> |
|
206 <text>and/or third-party plugins/modules</text> |
|
207 <item> |
|
208 <id>de7270db-0410-4152-974f-4f0d74ff255b</id> |
|
209 <text>it should be easy to create a third-party module and plug it in an existing system</text> |
|
210 </item> |
|
211 <item> |
|
212 <id>fb4b07d1-6af7-44d9-8e6a-89ea63638652</id> |
|
213 <text>dependencies needed to write an extension (i.e. header files, API classes/interfaces) should be as small as possible (do not require large codebase to write a mere plug-in); the required dependency should contain just interfaces (method/function signatures) and data structures but no implementation (executable code)</text> |
|
214 </item> |
|
215 </item> |
|
216 </item> |
|
217 <item> |
|
218 <id>e41134a4-715c-4926-a7df-01ff3759eda1</id> |
|
219 <text>there should be public directory of extensions/scripts</text> |
|
220 </item> |
194 </item> |
221 </chapter> |
195 </chapter> |
222 |
196 |
223 <chapter> |
197 <chapter> |
224 <name>Testable</name> |
198 <name>Testable</name> |
556 </item> |
530 </item> |
557 <item> |
531 <item> |
558 <id>b6cf8d5f-0fc9-46f7-8e38-8342a1229037</id> |
532 <id>b6cf8d5f-0fc9-46f7-8e38-8342a1229037</id> |
559 <text>every security incident must be clearly documented and investigated – do not obscure it</text> |
533 <text>every security incident must be clearly documented and investigated – do not obscure it</text> |
560 </item> |
534 </item> |
|
535 <item> |
|
536 <id>e41134a4-715c-4926-a7df-01ff3759eda1</id> |
|
537 <text>There should be public directory of extensions/scripts.</text> |
|
538 </item> |
|
539 <item> |
|
540 <id>fed07648-106a-4b7c-9026-509c82109448</id> |
|
541 <text>Source code repository (versioning system) must be public. Do not publish just source code snapshots of released versions.</text> |
|
542 </item> |
561 </chapter> |
543 </chapter> |
562 |
544 |
563 <chapter> |
545 <chapter> |
564 <name>Accept contributions</name> |
546 <name>Accept contributions</name> |
565 <id>eae0f528-a5ce-4809-a25d-9f9ab6311f3d</id> |
547 <id>eae0f528-a5ce-4809-a25d-9f9ab6311f3d</id> |
588 </item> |
570 </item> |
589 <item> |
571 <item> |
590 <id>af6a589f-d419-483f-b7b2-07b6e9da3924</id> |
572 <id>af6a589f-d419-483f-b7b2-07b6e9da3924</id> |
591 <text>to sign any political, religious or other proclamation or agree with it</text> |
573 <text>to sign any political, religious or other proclamation or agree with it</text> |
592 </item> |
574 </item> |
|
575 <note>The term „contribution“ includes not only source code (patch) but also bugreports, feature specifications, documentation, assets (graphics, music etc.) or similar artifacts.</note> |
593 </item> |
576 </item> |
594 <item> |
577 <item> |
595 <id>b4319392-8d6a-4f07-8a94-7ae2ed97c787</id> |
578 <id>b4319392-8d6a-4f07-8a94-7ae2ed97c787</id> |
596 <text>in order to contribute, it might be required:</text> |
579 <text>in order to contribute, it might be required:</text> |
597 <item> |
580 <item> |
614 <item> |
597 <item> |
615 <id>b5a128a2-31d9-49df-890c-59a770f7afa9</id> |
598 <id>b5a128a2-31d9-49df-890c-59a770f7afa9</id> |
616 <text>the contributor must not loose the right to use or distribute the contributed code under any license (of his choice)</text> |
599 <text>the contributor must not loose the right to use or distribute the contributed code under any license (of his choice)</text> |
617 </item> |
600 </item> |
618 </chapter> |
601 </chapter> |
619 |
|
620 <chapter> |
|
621 <name>Open development – has public:</name> |
|
622 <id>b704bc25-d3c1-4481-98bf-54455c507f37</id> |
|
623 <item> |
|
624 <id>fed07648-106a-4b7c-9026-509c82109448</id> |
|
625 <text>source code repository (versioning system), not just source code snapshots of released versions</text> |
|
626 </item> |
|
627 <item> |
|
628 <id>d9934675-abbd-418f-abf6-dfeaaea6a544</id> |
|
629 <text>description of the process of accepting external patches</text> |
|
630 </item> |
|
631 <item> |
|
632 <id>e6d2175a-97ff-4fd5-9bc1-a3914c6dd719</id> |
|
633 <text>feature/bug tracking system</text> |
|
634 </item> |
|
635 <item> |
|
636 <id>ae430fee-4850-453f-9382-282d7eed27a4</id> |
|
637 <text>plan of supported versions/branches</text> |
|
638 </item> |
|
639 </chapter> |
|
640 </manifesto> |
602 </manifesto> |