Feature Wiki
Information about planned and released features
Tabs
Dependencies in ILIAS 11
The policy of dependency handling in ILIAS is documented in this document. It explains how we handle dependencies like third-party libraries and frameworks in ILIAS from now on.
1 Pending Decisions
A final decision about the following dependiencies is still pending but needs to made until Conding Completed:
- PR 8563 • Chatroom: Add `mysql2`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
mysql2
is actively maintained and regularly updated (The latest release is from 28.11.2024). - Used by:
components/ILIAS/Chatroom/chat/Persistence/Database.js
- Decision: We would kindly ask Scharmer, Lukas [lscharmer] and Jansen, Michael [mjansen] to see if https://www.npmjs.com/package/mariadb would be a valid solution. If possible we would prefer this solution. If not, we accept this dependency for ILIAS 11.
- PR 8615 • NPM: Add MathJax (Updated PR #8262)
- Suggested by: Neumann, Fred [fneumann]
- Status of maintenance: MathJax is the de-facto standard for rendering LaTeX on web pages. It is supported by strong partners (IEEE, Elsevier). It is actively developed. In the last month, 24 pull requests have been merged to the source repository.
- Used by:
- Page editor: text content
- Forum: thread, post, reply
- Survey: introductory message, final statement
- Test Questions: question text, feedback, hints
- Cloze Question: cloze text
- Kprim Question: answers
- Matching Question: terms, definitions
- SC Question: answers
- MC Question: answers
- Ordering Question: answers
- Decision: Maintainer missing.
- PR 8630 • Add
@uppy/core
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance:
- Regular releases, last one 3 weeks ago.
- Active commit history, almost daily.
- Has over 25K usages.
- Used by:
components/ILIAS/UI/resources/js/Input/Field/file.js
(to be refactored) - Decision: Dependency is decision postponed for ILIAS 11.
- PR 8662 • Add
@uppy/tus
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance:
- Regular releases, last one 3 weeks ago.
- Active commit history, almost daily.
- Used by:
components/ILIAS/UI/resources/js/Input/Field/file.js
(to be refactored) - Decision: Dependency is decision postponed for ILIAS 11.
- PR 8666 • Add
@rollup/plugin-node-resolve
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: Has commits this year. The package may not be required to be actively maintained because its small.
- Used by: components/ILIAS/UI/resources/js/Input/Field/file.js` (to be refactored)
- Decision: Dependency is decision postponed for ILIAS 11.
2 Accepted Dependencies
The following dependencies have been discussed in the Jour Fixe and accepted for the use in ILIAS 11:
- PR 8531 • Add `PHPOffice/PhpSpreadsheet` as dependency
- The following pull requests in the ILIAS repository on GitHub are related to trunk and labeled with 'dependencies'.Suggested by: Kergomard, Stephan [skergomard]
- Status of maintenance: Mostly one maintainer. Not much information about him available. Occasional contributions by others. Part of PHPOffice with more contributors. Regular updates (~1 commit per day).
- Used by: Booking Pool, Data Collection, Exercise, MyStaff, OrgUnits, Polls, Category, SCORM, Study Programme, Survey, Test, Learning Progress, Tracking, Wiki and possibly more
- Decision: Dependency is accepted for ILIAS 11.
- PR 8539 • NPM: Add @yaireo/tagify as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance:
The library has 66 contributors and got its last release in November '24. It seems to be feature complete. - Used by: Provides functionality for the Tag Input Field of the UI framework.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8540 • Composer: Add friendsofphp/php-cs-fixer as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library is under active maintenance.
- Used by: Used in CI and dev processes to check and correct coding style.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8541 • Composer: Add mustache/mustache as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library is widely used by many PHP projects. It has 41 contributors, but most contributions have been made by one person. There is no visible backing from any organisation. There haven't been any releases for over a year.
- Used by: Provides templating mechanism for mails, to replace the native search and replace we have used until now.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8542 • Composer: Add ifsnop/mysqldump-php as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The last release of the library was in March '23. There are 45 contributors although most contributions are from two people.
- Used by: Provides engine to dump database in standard sql for an export.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8543 • Composer: Add seld/jsonlint as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library received its last update in July '24. It seems to be feature complete, though.
- Used by: Allows the setup to give more informative error messages regarding the json that is used for config.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8544 • Composer: add symfony/console as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library is under active development. 7.1.8 has been released in November '24.
- Used by: Provides the TUI for the setup console application.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8545 • Composer: add pimple/pimple as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library has been stable for a long time and didn't receive updates since 2021. The actual code is only about 150 LOC and hence could be easily maintained by us, if necessary.
- Used by: Provides the dependency injection container that is used as a service locator throughout the system. Will most likely be used as the DIC solution for the new initialisation scheme introduced with the component revision.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8546 • Composer: add filp/whoops as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: The library is stable for a long time now. Major version hasn't been bumped for > 7 years now.
- Used by: Used for formatting error messages for consumation by developers via browser and for error reports.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8547 • Composer: Add `ezyang/htmlpurifier` as dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
HTMLPurifier
is actively maintained by multiple contributors. There is recent activity (even last week, see: https://github.com/ezyang/htmlpurifier/commits/master). - Used by:
components/ILIAS/Html
- Decision: Dependency is accepted for ILIAS 11.
- PR 8548 • Composer: add phpunit/phpunit as dependency
- Suggested by: Haagen, Nils [nlz]
- Status of maintenance: Won't go away any time soon.
- Used by: We use it to run unit tests.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8549 • Composer: Add `phpmailer/phpmailer` as dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
PHPMailer
is actively maintained by multiple contributors. There is recent activity (even today, see: https://github.com/PHPMailer/PHPMailer/commits/master). - Used by:
components/ILIAS/Mail
- Decision: Dependency is accepted for ILIAS 11.
- PR 8550 • Composer: Add `simplesamlphp/simplesamlphp` as dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
SimpleSAMLphp
is actively maintained by multiple contributors (see: https://simplesamlphp.org/contrib/). There is recent activity (even this week, see: https://github.com/simplesamlphp/simplesamlphp/commits/master). - Used by:
components/ILIAS/Saml
- Decision: Dependency is accepted for ILIAS 11.
- PR 8551 • Composer: Add `captainhook/captainhook` and `captainhook/plugin-composer as dev dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
CaptainHook
is well maintained (see: https://github.com/captainhookphp/captainhook/commits/main) and widely used in the PHP community. - Used by: Executed during multiple
Composer
andGit
actions (depending on our shared and possible individual configuration files) - Decision: `Captainhook/captainhook` is accepted for ILIAS 11. Plugin-composer seems to be unmaintained. @mjansenDatabay will have a closer look at it and propose an alternative procedure.
- PR 8556 • Composer: Add `mikey179/vfsstream` as dev dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance: There is not much development activity (see: https://github.com/bovigo/vfsStream/graphs/commit-activity), so it might occur that there will be issues with upcoming PHP versions.
- Used by: Used when executing the ILIAS unit test suite.
- Decision: Dependency is accepted for ILIAS 11.
- PR 8557 • Composer: Add `phpstan/phpstan` as dev dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
PHPStan
is a very active project (see: https://github.com/phpstan/phpstan/graphs/commit-activity), code was committed even this week (see: https://github.com/phpstan/phpstan/commits/1.11.x). There is one main contributor (ondrejmirtes) supported by other open source enthusiasts (and financially by some well known organizations). - Used by:
PHPStan
finds issues in the ILIAS code without writing tests. It detects architectural smells in our application based on rule definitions (see: scripts/PHPStan/Rules). It is used in the GitHub CI pipeline (see: .github/workflows/legacy-ui.yml).PHPStan
makes use of theAST
(abstract syntax tree) and is capable to analyze our ILIAS PHP code statically. - Decision: Dependency is accepted for ILIAS 11. We try to support version 2.0, if @mjansenDatabay finds too many issues with migrating scripts, also the most current 1.* version is accepted.
- PR 8559 • Composer: Add `ramsey/uuid` as dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
ramsey/uuid
is actively maintained by multiple contributors. There is recent activity in past weeks: https://github.com/ramsey/uuid/commits/4.x. - Used by:
component/ILIAS/Certificate
,component/ILIAS/CoPage
,component/ILIAS/ResourceStorage
- Decision: Dependency is accepted for ILIAS 11.
- PR 8561 • Chatroom: Add `express`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
- Used by:
components/ILIAS/Chatroom/chat/Bootstrap/index.js
,components/ILIAS/Chatroom/chat/api.js
,components/ILIAS/Chatroom/chat/Bootstrap/SetupExpressApi.js
- Decision: Dependency is accepted for ILIAS 11. Please use the version 5.* if it can be used.
- PR 8562 • Composer: Add firebase/php-jwt as dependency
- Suggested by: Cazalla Vázquez, Daniel [Zallax]
- Status of maintenance: The
php-jwt
dependency, maintained by Google's Firebase team, provides robust support for JWT handling with regular updates, ensuring reliability and alignment with current security standards. - Used by:
LTIConsumer
<IProvider
components and wrapped bycomponents/ILIAS/LTIConsumer
andcomponents/ILIAS/LTIProvider
- Decision: Dependency is accepted for ILIAS 11.
- PR 8564 • Chatroom: Add `node-schedule`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
- Used by:
components/ILIAS/Chatroom/chat/Bootstrap/SetupClearMessagesProcess.js
andcomponents/ILIAS/Chatroom/chat/Bootstrap/UserSettingsProcess.js
- Decision: Dependency is accepted for ILIAS 11. The transitive dependencies of this library have not been updated for a while. Please keep a close eye on this.
- PR 8565 • Composer: Add celtic/lti as dependency
- Suggested by: Cazalla Vázquez, Daniel [Zallax]
- Status of maintenance: Actively maintained with 49 releases and a recent update (v5.1.4) released 2 weeks ago. The library is developed by a dedicated team of contributors and has consistent updates to align with evolving LTI standards.
- Used by:
LTIConsumer
<IProvider
components and wrapped bycomponents/ILIAS/LTIConsumer
andcomponents/ILIAS/LTIProvider
- Decision: Dependency is accepted for ILIAS 11.
- PR 8566 • Chatroom: Add `uuid`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
uuid
is a well maintained package with a lot of contributions. It is an active project, the latest release is from 04.11.2024. - Used by:
components/ILIAS/Chatroom/chat/Persistence/Conversation.js, components/ILIAS/Chatroom/chat/Persistence/ConversationAddUser.js, components/ILIAS/Chatroom/chat/Persistence/ConversationMessage.js
- Decision: Dependency is accepted for ILIAS 11.
- PR 8567 • Chatroom: Add `socket.io` and `socket.io-client`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
socket.io
is a well maintained package with major releases every few years and recent activities. - Used by:
components/ILIAS/Chatroom
andcomponents/ILIAS/OnScreenChat
- Decision: Dependency is accepted for ILIAS 11.
- PR 8569 • Chatroom: Add `winston`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
winston
is a well maintained package with major releases every few years. It is an active project, the latest release is from the 10.11.2024. - Used by:
components/ILIAS/Chatroom/chat/Bootstrap/SetupEnvironment.js
(instance creation and configuration) andcomponents/ILIAS/Chatroom/chat/*
(the logger instance is used in many JS files.) - Decision: Dependency is accepted for ILIAS 11.
- PR 8572 • NPM: Add `linkifyjs` and `linkify-element`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
linkifyjs
is actively maintained, although it is feature-complete. In the last months a few bug fixes and improvements have been committed. - Used by:
- CoPage: used in paragraphs
- LearningModule: used for export
- OnScreenChat:
components/ILIAS/OnScreenChat/js/onscreenchat.js
- Chatroom:
components/ILIAS/Chatroom/resources/js/src/ChatMessageArea.js
- Decision: Dependency is accepted for ILIAS 11.
- PR 8573 • Add `league/commonmark` as composer Dependency for ILIAS 11
- Suggested by: Schmid, Fabian [fschmid]
- Status of maintenance: last update of the library at 2024-08-16, PHP Version: ^7.4 || ^8.0
- Used by:
\ILIAS\UI\Implementation\Component\Input\Field\Markdown
- Decision: Dependency is accepted for ILIAS 11.
- PR 8576 • Add `guzzlehttp/psr7` as composer Dependency for ILIAS 11
- Suggested by: Schmid, Fabian [fschmid]
- Status of maintenance: last update of the library at 2024-07-18, PHP Version: ^7.2.5 || ^8.0
- Used by:
ILIAS\HTTP\Services
- Decision: Dependency is accepted for ILIAS 11.
- PR 8577 • Add `league/flysystem` as composer Dependency for ILIAS 11
- Suggested by: Schmid, Fabian [fschmid]
- Status of maintenance: last update of the library at 2024-05-22, PHP Version: ^8.0.2
- Used by:
ILIAS\Filesystem
- Decision: Dependency is accepted for ILIAS 11.
- PR 8578 • Add `sabre/dav` as composer Dependency for ILIAS 11
- Suggested by: Schmid, Fabian [fschmid]
- Status of maintenance: last update of the library at 2023-12-11, PHP Version: ^7.1.0 || ^8.0
- Used by:
ILIAS\WebDAV
- Decision: Dependency is accepted for ILIAS 11.
- PR 8579 • Add `dflydev/fig-cookies` as composer Dependency for ILIAS 11
- Suggested by: Schmid, Fabian [fschmid]
- Status of maintenance: last update of the library at 2023-07-18, PHP Version: ^7.2 || ^8.0
- Used by:
ILIAS\HTTP\Services
- Decision: Dependency is accepted for ILIAS 11.
- PR 8646 • NPM: Add chart.js as dependency
- Suggested by: Famula, Thomas [tfamula]
- Status of maintenance:
chart.js
is actively maintained by multiple contributors. New releases are published every few weeks/months.Status of maintenance: - Used by:
components/ILIAS/Poll
components/ILIAS/Skill
- Decision: Dependency is accepted for ILIAS 11.
- PR 8659 • Composer: Add getid3 lib
- Suggested by: Killing, Alexander [alex]
- Status of maintenance: The lib is on github since > 10 years, always got maintenance (last changes two weeks ago), has around 50 contributors, James Heinrich is still the main contributor
- Used by: components/ILIAS/MediaObjects (used internally)
- Decision: Dependency is accepted for ILIAS 11.
- PR 8661 • NPM: Add tinymc
- Suggested by: Killing, Alexander [alex]
- Status of maintenance: Well maintained, commercial background, still widely used and integrated.
- Used by:
- Page editor: text content
- ...
- Decision: Dependency is accepted for ILIAS 11.
- PR 8664 • Add
rollup
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance:
- The package is actively maintained.
- The package has an active commit history.
- The package is used by 15Mil.
- Used by:
components/ILIAS/UI/resources/js/*
(many usages) - Decision: Dependency is accepted for ILIAS 11.
- PR 8665 • Add
@rollup/plugin-terser
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: The package received its last commits in 2023. The package may not be required to be actively maintained because its small.
- Used by:
components/ILIAS/UI/resources/js/*
(many usages) - Decision: Dependency is accepted for ILIAS 11.
- PR 8667 • Add
eslint
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: The package is actively maintained. The package has an active commit histroy. The package has 23Mil+ usages.
- Used by:
components/ILIAS/*
(all components should use this) - Decision: Dependency is accepted for ILIAS 11.
- PR 8668 • Add
eslint-plugin-import
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: The package is actively maintained. The package has an active commit history.
- Used by:
.eslintrc.json
- Decision: Dependency is accepted for ILIAS 11.
- PR 8669 • Add
eslint-config-airbnb-base
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: The package is not actively maintained (last release 2021). The package does not need much maintenance, as it only provides the configuration for the
eslint
package - Used by:
.eslintrc.json
- Decision: Dependency is accepted for ILIAS 11.
3 Rejected Dependencies
- PR 8552 • Composer: Add `cweagans/composer-patches` as dependency
- Suggested by: Jansen, Michael [mjansen]
- Status of maintenance:
Composer Patches
is still maintained, mostly by "cweagans (Cameron Eagans)" and supported by other contributors. There is not much activity in general, but the plugin is so to speak "feature-complete". There is activity if there are security vulnerabilities (Dependabot
pull requests are merged) and if changes were made inComposer
itself which require the plugin to adapt. - Used by: During
composer install
andcomposer upgrade
- Decision: Dependency is rejected for ILIAS 11. We kindly ask @mjansenDatabay to try to push the patch we need for
phpmailer\phpmailer
-upstream, if this does not work, we ask @mjansenDatabay to add the dependency again.
- PR 8570 • NPM: Add `moment`
- Suggested by: Scharmer, Lukas [lscharmer]
- Status of maintenance:
- Used by:
- Calendar:
./components/ILIAS/Calendar/classes/class.ilCalendarUtil.php
- Legacy Forms: implicitly by
ilCalendarUtil
in theilDateTimeInputGUI
field type - OnScreenChat:
./components/ILIAS/OnScreenChat/js/moment.js
It is mainly (but not only) used to display relative dates and especially times (locale aware) in the conversation windows. These date/time presentations are dynamically updated (without expensive server round-trips) every 60 seconds.
- Calendar:
- Decision: Dependency is rejected for ILIAS 11 as there seems to be only one usage in the chat and the library is not well maintained.
- PR 8615 • Composer: Add geshi lib
- Suggested by: Killing, Alexander [alex]
- Status of maintenance: Almost 20 years on gitub, little maintenance in the last years, has around 50 contributors, there is a reported PHP 8.1 issue that we did not experience so far. If there will be no maintenance, we might use a fork, create a fork, get into contact with one of the contributors, switch to an alternative like https://github.com/scrivo/highlight.php or abandon the feature.
- Used by: components/ILIAS/COPage (internally)
- Decision: Dependency is rejected for ILIAS 11. We kindly ask @alex40724 to see, if one of the other options would give us more security for the future as this library is not well maintained and the license is also not clear.
- PR 8670 • Add
@rollup/plugin-commonjs
as npm Dependency for ILIAS 11- Suggested by: Fuhrer, Thibeau [tfuhrer]
- Status of maintenance: The package is part of Rollup.js' plugin repository, which is actively maintained and receives yearly major releases and ~monthly to ~weekly minor/patch updates.
- Used by:
components/ILIAS/UI/resources/js/Input/Field/file.js (to be refactored)
- Decision: Dependency is rejected for ILIAS 11, as this would open the door to include code that doesn't conform to our coding standards. If it should be absolutely necessary to use this, don't hesitate to propose it again.
- PR •
- Status of maintenance:
- Used by:
- Decision: Dependency is rejected for ILIAS 11
Last edited: 31. Dec 2024, 13:59, Kunkel, Matthias [mkunkel]