CollaboraOnline / richdocumentscode

Built-in CODE Server app
https://apps.nextcloud.com/apps/richdocumentscode
Apache License 2.0
111 stars 26 forks source link

Faster Download of RichdocumentsCode #197

Open gokaysatir opened 1 year ago

gokaysatir commented 1 year ago

Is either of below improvements possible?

This way it may be easier to set it up.

Thanks.

gokaysatir commented 1 year ago

@juliushaertl @pedropintosilva fyi :)

mmeeks commented 1 year ago

Well - we could manage the download process in richdocuments itself. Perhaps with a background curl process on the webserver (run like we do CODE) - and/or get a single/simple richdocuments plugin to manage that download + stitching that all together - rather than having two richdocuments plugins. That might keep the PHP piece small and easier to download - at some cost of having to have manual downloading code that can pause and/or resume downloads.

I would expect Nextcloud has a truck-load of code to do incremental / resuming downloads though =) is there not something we can do here to improve download reliability - which also affects upgrade-ability when richdocumentscode is installed.

juliushaertl commented 1 year ago

There is probably nothing that we can do to make it faster, as we mainly use a wrapper around curl, however I totally see that we could improve the reliability of the download process.

Currently the app downloading is somewhat error prone to webserver timeouts, which is why it is usually a good idea to install the app through the occ command, where those timeouts do not apply.

We don't have any logic in place for that but I could imagine this should be fairly straight forward to implement by doing chunked download requests based on the content-length header. The only tricky part is that apps may be deployed in a way where the app directory is not writable and the data directory might not be present in all cases (e.g. if S3 is used as a primary storage). I'll probably need to think about that a bit more.

The benefit of all of that would be of course that we could have one app release (or even ship the download logic+proxy.php in richdocuments itself) and then download the app image on the fly depending on the architecture). On the other hand this will be an extra step that would need to be taken after installation, so out of the box usage of office might not be there anymore.

mmeeks commented 1 year ago

Yep - another advantage is that the "online up-date" where you click 'update' in the web UI to move to a new version can get fouled up by that download timeout which is bad. So anything we can do to make the experience slicker for the user would be awesome. Thanks ! =)