Nexus is hard, reva is easy ... or it should be!

So what have you been up to these past weeks? It has been a while since I last found the time to give an update on nexus and reva. Let mo do that now before I start my vacation :wink:

Apart from a few excited exceptions, most of the feedback I got for nexus was that it wasn’t working. Ok, that was to be expected. Nexus is meant to document how to configure the different services so we have a documentation of how to bring all the services together. That is also the reason why we spawn multiple instances of revad: you can then trace in the logs which revad is handling which request. Is it GRPC or HTTP? Did the LDAP server have to be queried? Those things are crucial to know when working with distributed systems.

The bigger challenge arises when trying to really debug some of the problems. Now we need to look inside the process that might be hidden in one of the containers. All the containerization is interfering with the developers needs. So I spent a lot of time bringing functionality to reva that allows us to start a development environment without the need for docker compose.

First, I added an OpenID connect provider that brings just enough functionality to the table, so that phoenix can be used as a web frontend. The oidc provider PR contains an example config for phoenix, as well as more details on how to get it up and running. Keep in mind that the users are hard coded and it is intended for development only. Feel free to jump in and implement a proper user backend … or you dive into nexus to check out how to use an existing OpenID Connect Provider.

Afterwards, I worked on adding roles to the sharing implementation, because Phoenix will present share types like that in the future.

However, the share meta data needs to be stored somewhere. And while the EOS storage driver implements the sharing APIs I did not want to force developers to run an EOS service locally. Furthermore, we will need a storage driver that can work with existing ownCloud data directories, anyway. The owncloud storage driver for reva is not done yet. Trash and Versions are still missing, but it allows developers to set up a test environment without nexus.

Finally, I prototyped a reva import command that can be used to import file metadata like shares, tags and comments. Details for the file format for a migration from OC10 to OCIS can be found in this data_exporter issue.

That is quite a bit. But there is more: Hugo has refactored a lot of revas internal data structures to get rid of an extra layer. He and Diogo will focus on sharing functionality in the next weeks. Ilja and Michael will flesh out the migration. Deepdiver and Lukáš are working on making Phoenix feature complete. Tboerger and Robert have an eye on the way reva and revad will be configured to make sure DevOps can manage it properly. Michael is bringing client tests on the way …

What will you be doing? We could use a hand or two!

:rocket: :cloud:

Cheers! And I’m out for the next two weeks!