Feature Wiki

Information about planned and released features

Tabs

ILIAS Resource Storage Service (Project)

This is a project page that bundles several feature wiki pages which belong to a larger development activity for the File component in ILIAS.

1 Aim of Project

«All user-uploaded files shall be stored centralized in one Service»

ILIAS uses in many components the possibility for users to upload their own files and to download or display them again at a later time. Some parts of this process are already centralized (FileUpload-Service, FileDelivery-Service). But not the central storage of files in the file system. Many components have implemented this part independently. Due to the different implementations, problems related to files occur again and again (see detailed description).

The "Resource Storage Service" project aims to have all files stored and managed centrally by a service. The components that use files from users in ILIAS should be able to use the service in a simple way.
The project includes various developments and changes in ILIAS. On the one hand the service is introduced as a central storage management in ILIAS. On the other hand, individual components that use files will have to be modified bit by bit.During these modifications files that have been stored for years have to be migrated to the Resource Storage Service.

Parallel to the migration of existing components, new features can be planned and implemented through centralisation.

The concrete objectives:

  • In ILIAS there is only one central place where uploaded files are stored
  • Existing components are converted so that they no longer have any dependencies on other objects (e.g. FileObject).
  • The implementation of features that include user uploads should become easier and cheaper.

 
 
 

Centralization and the Migration of Components to the Resource Storage Service is important because

  • Problems related to the storage of files can be solved centrally
  • Problems that occurred in the past, e.g. in connection with special characters in file names, are now a thing of the past
  • Features related to files will be easier to implement
  • Security is increased, security problems with files can be solved centrally
  • Whitelisting no longer needs to be done in the FileSystem but can be done when files are delivered
  • Storage options other than the web server hard disk will be possible in the future

1.1 Conceptual Summary

1.2 The ILIAS Resource Storage Service (IRSS)

The Resource Storage Service was introduced in a first version in ILIAS 6 where it was used to store icons for MainMenu entries. This allowed first experiences to be gathered and the service to be further expanded.
The principle of the service is simple. A file uploaded by a user is forwarded by a component (e.g. forum) to the storage service. In return, the components receive an identification (unique ID of the resource as a string). This ID is stored by the component. If the file is then needed again, the component with the ID can ask the Storage Service for a consumer (e.g. DownloadConsumer, InlineConsumer, ...) and execute it. In this way, the uploaded image is displayed, for example.

 

1.3 Migrations

Files were historically stored by the components in a directory in the iliasdata or data directory. If a component wants to use the Storage Service to manage files, all existing files of this component have to be moved to the Storage Service once.
This task can take a long time depending on the components and the size of the installation. To make this easy ILIAS 7 offers the possibility to perform migrations in the setup. A migration can be executed in many small parts, for example file by file. Such an implementation has already been done for ILIAS 7 for the file object. But since many other components use the FileObject internally as well this has been rewritten so that the old methods still work. In a further step all these components have to be rewritten so that they directly use the storage service and no longer the file object. In a further step, all other places that work with uploaded files should also be reprogrammed.

1.4 Features in Future

The central administration of all files will enable new features in the future.
For example, it will be possible to reintroduce a quota per user, which will then work globally for all uploaded files.
ILIAS will be able to perform regular actions on all files, e.g. checking for viruses or checking if files are orphaned and delete them automatically.

2 Involved Maintainers and Stakeholders

3 Timeline

Release

Objectives and developments

With ILIAS 6 the following topics were tackled and implemented:

  • Implementation of the first Version of the IRSS which was used to store Icons for MainMenu-Items

Status

With ILIAS 7 the following topics were tackled and implemented:

  • Migration from the initial Storage-Backend FSV1 to a new FSV2
  • The Resource Stoage Service has been implemented and is available via DIC The service is therefore usable for all components and offers all necessary functions to store and manage files. See Introduction of Resource Storage Service
  • Migrations are possible: The CLI setup of ILIAS 7 has been extended so that large migrations can be initiated and tracked after an update. See Setup - Add migrate Command
  • The first migration was the migration of the file object. Due to the large number of file objects in ILIAS the file object was converted to work with already migrated as well as with not yet migrated files. Thus an installation can be put back into operation immediately after the update. The migration of the file objects can then be done during operation. See IRSS: Migrate File-Object-Files to IRSS

With ILIAS 8 the following topics were tackled and implemented:

Due to the major refactoring work in the ILIAS 8 / PHP 8 project, there were unfortunately too few resources available to achieve further goals in the IRSS project.

With ILIAS 9 we accomplished to following steps:

If possible, completion of the project

4 Related Feature Requests and Status

Feature Request

Suggested by

Funding

Planned Release

Status

Splitting up File Object into Object and Service

Lorenz, Katharina [klorenz]

sr.solutions

7

implemented

Setup - Add migrate Command

Klees, Richard [rklees]

CaT Concepts and Training GmbHILIAS-Verein, sr.solutions

7

implemented

IRSS: Migrate File-Object-Files to IRSS

Schmid, Fabian [fschmid]

CaT Concepts and Training GmbHDHBWHochschule LuzernILIAS-Vereinsr.solutionsUniversität Bern

7

implemented

IRSS: General Overview of Components to Migrate (ongoing)

Schmid, Fabian [fschmid]

8 + 9

ongoing

IRSS: Migrate Bibliografic-Files to IRSS

Schmid, Fabian [fschmid]

sr.solutions

8

implemented

IRSS: Decouple DataCollection from ilObjFile (and use IRSS)

Schmid, Fabian [fschmid]

Hochschule Luzern

9

implemented

IRSS: Migrate Forum-Files to IRSS

Lorenz, Katharina [klorenz]

Hochschule Luzern

9

implemented (Forum posting files), Draft files still need to be migrated by Michael Jansen

IRSS: Migrate Profile-Files to IRSS

Lorenz, Katharina [klorenz]

DHBW

9

implemented

IRSS: Resource Overview

Schmid, Fabian [fschmid]

Universität Bern, sr.solutions

9

implemented

IRSS: Migrate Exercise to IRSS (Instruction Files)

Schmid, Fabian [fschmid]

Universität Bern, sr.solutions

9

implemented

IRSS: Migrate Profile-Files to IRSS

Kergomard, Stephan [skergomard]

DHBW

9

implemented

IRSS: Flavours

Schmid, Fabian [fschmid]

Universität Bern

9

implemented

IRSS: Container-Storage

Schmid, Fabian [fschmid]

Technische Hochschule OWL

9

implemented

IRSS: Resource-Collection User-Interface

Schmid, Fabian [fschmid]

Universität Bern

9

implemented

IRSS: Draft-Revisions

Schmid, Fabian [fschmid]

FernUniversität in Hagen, Erziehungsdepartement Basel-Stadt

9

implemented

IRSS: Migrate HTML-Learning-Modules to ContainerResources

Schmid, Fabian [fschmid]

sr.solutions

10

5 Further Results

6 Additional Information

7 General Discussion

Please discuss specific questions of feature requests on the related feature wiki pages. This discussion section is only for a general discussion of the project and its realisation.

Schmid, Fabian [fschmid] 2019-03-01: A basic version of a File-Storage-Service should be implemented for the feature Customisable Main Bar - Icon Upload. The service won't be rolled out to the whole ILIAS base with 6.0. 

JourFixe, ILIAS [jourfixe], 11 MAY 2020 : We highly appreciate the suggested project. The project manager will provide a template for such project pages, soon. And he will help to adapt the content to this structure. All related feature requests and pull requests should be listed here but discussed separately. (Done in the meantime.)

JourFixe, ILIAS [jourfixe], 21 FEB 2022: Schmid, Fabian [fschmid] presented the project at the Big Projects Jour Fixe and answered questions.

  • Relevance for strategic ILIAS development: Important continuation of the conversion to IRSS in many other components.
  • Plan for ILIAS 9: Convert other components to IRSS
  • Chance of realisation: Conversion in components can also be done by the respective maintainers themselves
  • Dependencies: Cooperation of other maintainers
  • Impact on other development activities: No impact

Statement Technical Board, 2022 Apr 6: The TB believes this effort to be on a good track. First components are already migrated, and the infrastructure is ready. The remaining effort mostly lies in migrating the various components using file storage functionality. To complete this project soon, we assign a high priority to it. We ask every collaborator to focus on this effort or include according changes into other efforts. If we all pull together, we can move our system to the IRSS soon. To achieve this, we feel that Fabian will mostly need to do some further marketing and dissemination, and we will happily support him as Technical Board to convince everyone to finally use the IRSS.

JourFixe, ILIAS [jourfixe], 23 NOV 2023: Fabian presented the project at the Big Projects Jour Fixe. No additional comments.

The aims of the project "IRSS" are in line with our strategic goals, especially regarding "Reliable Learning Management", as outlined in our "Strategy of the Technical Board - July 2023" → see here. We are looking forward to the future improvements and developments that can be based on the new facilities. We also appreciate and support to finally remove the legacy Services/Filesystem with ILIAS 10.

We do not see much need to dedicate resources from the TB for final steps in this project, but we indeed expect that some maintainers and parts of the community will need to put in some effort here if changes are required in their components. Please priorise according activities so we can finalise the project soon. Please note that the change will impact core and plugin developers alike, details what should be done could be found here. We kindly ask to abstain from workarounds via PHP standard file functionality and but instead the new ILIAS filesystem implementation.

Statement UX/UI/A11y-Experts, 6 DEC 2023

A modern and stable code architecture is necessary to enable and tackle improvements in UI/UX/accessibility. The project has already brought significant improvements in the past. We therefore welcome this Big Development Project and would give this a prioritization level 2.

11 DEC 2023: The product manager sees this as a very important project for ILIAS, and not just for improving the security of the software. It would be very pleasing if the project that started with ILIAS 6 could be largely completed with ILIAS 10. I would therefore ask all developers involved to help with the planned conversion work.

Last edited: 21. Mar 2024, 08:33, Schmid, Fabian [fschmid]