learningequality / kolibri

Kolibri Learning Platform: the offline app for universal education
https://learningequality.org/kolibri/
MIT License
784 stars 650 forks source link

Allow importing content by file uploads #3911

Open pzduniak opened 6 years ago

pzduniak commented 6 years ago

Observed behavior

It's only possible to either download the content from an online server or from a USB plugged into the server.

Expected behavior

It might be worth it to introduce a 3rd option, where users would be able to upload an archive with the content from the client devices. This way Kolibri will be way more usable on devices that don't have a USB port available for a drive.

User-facing consequences

Irrelevant

Errors and logs

Irrelevant

Steps to reproduce

Irrelevant

Context

This is somewhat specific to the devices that we are deploying in Zimbabwe / India. We can work around it by providing an integration of our utilities installed on devices with Kolibri's disk discovery on OS-level, but given the UX flow, it might make more sense to implement this feature in the project itself.

indirectlylit commented 6 years ago

Thanks for the feedback! I'll add your use case to our internal tracker and we'll consider it for the roadmap.

The main challenge is that the content is stored as many files in a directory structure, which makes it difficult to do through the browser. We also can't necessarily zip everything into a single file because some channels are many GB. However for smaller channels this could be an option.

indirectlylit commented 6 years ago

This is somewhat specific to the devices that we are deploying in Zimbabwe / India. We can work around it by providing an integration of our utilities installed on devices with Kolibri's disk discovery on OS-level, but given the UX flow, it might make more sense to implement this feature in the project itself.

Would you mind sharing a bit more about your setup and deployment process? We may have other solutions in the pipeline that could be adapted to your case. Feel free to share here or email me devon at learningequality.org

thanks!

pzduniak commented 6 years ago

Our platform is a custom OS deployed on lightweight servers (think embedded low-TDP Celerons with batteries). So far we've been using KA Lite to provide our users with Khan Academy content, but more recently some users have been asking us to implement sneakernet functionality - thus our interest in Kolibri.

The app itself is sandboxed using Docker - downloaded from an app store that we created and running inside of a single container. We're using the default settings. Every app in our system gets its own domain that might be encrypted using SSL. Most of the interaction with the device is performed from the clients, who connect to the servers (devices in our terminology) using either a LAN connection (some of the devices have LTE modems and can provide internet) or WiFi (which is an option nearly every user takes).

If you think that compressing (or packing, .tar files might be OK too, not sure how generation of them would work from modern JS?) the content is too intensive, we will look into providing USB mount access functionality to the sandbox.

rtibbles commented 5 years ago

There is now an alternative to this, whereby a Kolibri instance can import content from another Kolibri instance it can reach on the network.