• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

BackgroundTasks/H15-Dec-2021-6,0402,603

DI/H15-Dec-2021-810377

Data/H15-Dec-2021-2,4841,253

FileUpload/H15-Dec-2021-2,6141,099

Filesystem/H15-Dec-2021-6,2592,892

GlobalScreen/H15-Dec-2021-14,4736,797

HTTP/H15-Dec-2021-1,701602

KioskMode/H15-Dec-2021-425180

Refinery/H15-Dec-2021-4,2462,424

Setup/H15-Dec-2021-2,5551,544

UI/H15-Dec-2021-51,60627,474

README.mdH A D15-Dec-20213.5 KiB5551

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