|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| BackgroundTasks/ | H | 15-Dec-2021 | - | 6,040 | 2,603 |
| DI/ | H | 15-Dec-2021 | - | 810 | 377 |
| Data/ | H | 15-Dec-2021 | - | 2,484 | 1,253 |
| FileUpload/ | H | 15-Dec-2021 | - | 2,614 | 1,099 |
| Filesystem/ | H | 15-Dec-2021 | - | 6,259 | 2,892 |
| GlobalScreen/ | H | 15-Dec-2021 | - | 14,473 | 6,797 |
| HTTP/ | H | 15-Dec-2021 | - | 1,701 | 602 |
| KioskMode/ | H | 15-Dec-2021 | - | 425 | 180 |
| Refinery/ | H | 15-Dec-2021 | - | 4,246 | 2,424 |
| Setup/ | H | 15-Dec-2021 | - | 2,555 | 1,544 |
| UI/ | H | 15-Dec-2021 | - | 51,606 | 27,474 |
| README.md | H A D | 15-Dec-2021 | 3.5 KiB | 55 | 51 |
README.md
1# Rules for the ILIAS namespace and the ./src-Folder
2
3This rules are to be understood according to [RFC2119](https://www.ietf.org/rfc/rfc2119.txt).
4
51. The ILIAS-namespace is meant to contain library-like functionality with clear
6 boundaries and purpose. This means:
7 1. All code in the ILIAS-namespace MUST provide cross sectional functionality.
8 There might be some change in this rules later on to port component specific
9 code to the ILIAS namespace as well, but for the moment the component
10 specific code resides in the Services- and Modules directories. This means
11 that the code for a hypothetical general notification system would be going
12 to the ILIAS-namespace, while implementation specifics for the notifications
13 of a course should go to Modules/Course.
14 2. Every subnamespace of ILIAS is considered to represent one library of ILIAS.
152. The ./src-Directory is the root of the ILIAS-namespace. All directories and
16 files in the ./src-Directory MUST comply to PSR-4, where the vendor-namespace
17 is ILIAS.
183. Classes, interfaces and traits MUST NOT have an il-Prefix like the classes in
19 Services and Modules have.
204. Library-like code SHOULD be added to the src-Folder and not to the Modules- or
21 Service-directory.
225. Anyone who wants to make additions to the ./src-folder SHOULD discuss them with
23 the Technical Board in advance.
246. Libraries SHOULD contain a README.md on the top-level, that explains the purpose
25 and design of the library and gives usage examples.
267. All libraries MUST expose a clear public interface to their consumers. Every
27 class, interface or trait on the top level of the library is considered to be a
28 part of the public interface, as well as all entities that are reachable via
29 entities on the top level.
308. The public interface of the libraries MUST be documented with Doc-Blocks.
31 Classes, interfaces or traits SHOULD be documented with at least one sentence
32 telling the purpose of the entity - repeating the class's name is not enough.
33 Functions and Methods MUST at least be documented with one sentence giving
34 the semantics and the in- and outputs in PHP-Doc-format.
35 This MAY be ommited (in the respective parts) if the docs would not further
36 clarify information given by the functions's name or explicitly distinguishable
37 typehinting.
38 Example: "public function withTitle(string $title): myObject" does not need
39 a Doc-Block, but "public function calculate(array $params)" does!
409. Libraries MUST NOT be subject to a breaking change in an ILIAS release-branch.
4110. Breaking changes to a library MUST be announced at least one month in advance
42 on the Jour Fixe. Breaking changes to a library MUST be made in the trunk.
4311. Libraries SHOULD contain a CHANGELOG.md on the top-level, that informs about
44 the history of the library. The file should enable users of the library to
45 incorporate the changes.
4612. Libraries SHOULD provide automated tests for PHPUnit, where the tests MUST be
47 put in a subdirectory of ./tests, which has the same name as the library.
4813. Libraries SHOULD be parametrized on their IO-operations. That means, e.g., that
49 libraries should not use `echo` directly or retrieve a database from a global but
50 instead get dependencies like that via injection.
5114. Libraries SHOULD NOT maintain an implicit internal state. All internal states
52 SHOULD be made explicit. This means, e.g., that the usage of globals, static
53 variables and the Singleton-pattern are prohibited.
54
55