Enabling RCC Shared Holotree on multi-user machines

What are you talking about?

"The shared what now?" ๐Ÿ˜‰
As we like to say: "90% of software development is naming", so a short explanation of Holotree is in place.

The term comes from Star Trek Holodeck, but as we are already getting constant references to the Robocop movies, we decided to at least try to avoid another one. In Star Trek, when the content of the Holodeck is updated, you can usually see only parts of the scene change: For example, a table changes into a chair.

The idea in our Holotree is the same but for Python or just about any execution environment. If one robot needs Python version X and another needs version Y, usually only a few files need to change, so there is no sense in storing them multiple times.

The Shared -part extends this so that all the users on the same machine can "load their assets" from the same common source. This also means that the unique environment (conda.yaml) needs to be built only once per machine. Also, this enables the pre-building and validation of environments.

๐Ÿ‘‰ For the latest documentation, you should checkout the RCC documentation

How to enable Shared Holotree

The Shared Holotree needs to be enabled once on each machine. This depends on the operating system, so the commands below are OS-specific and require elevated rights from the user who runs them. If you are using Robocorp tools like VSCode extensions, they have probably prompted you on this and done the initial setups. The enabling steps are also needed for cases where you only use RCC. On Windows machines with only one user and Mac machines, the Shared Holotree will start to work, but when you add users, the setup steps are needed.

Windows

Enable with the command: rcc holotree shared --enable --once
The Shared Holotree location is: C:\ProgramData\robocorp\ht

The command sets modify permissions to the standard BUILTIN\Users user group, but the user group does not have to be that exact group.
The users who use the Shared Holotree just need the modify -permissions to the shared folder.

macOS

Enable with the command: sudo rcc holotree shared --enable --once
The Shared Holotree location is: /Users/Shared/robocorp/ht

Linux

Enable with the command: sudo rcc holotree shared --enable --once
The Shared Holotree location is: /opt/robocorp/ht

Move existing user to Shared Holotree

The user needs to run one command in their user session (this does not require admin rights):
rcc holotree init

Clear out the old caches

This step is optional but will probably free up a significant amount of disk space if you used Robocorp tooling before the Shared Holotree. You can just delete the old cache folders at the following locations:

  • Windows:
    • %localappdata%\robocorp\holotree
    • %localappdata%\robocorp\hololib
  • macOS & Linux:
    • ~/.robocorp/holotree
    • ~/.robocorp/hololib
Last edit: August 18, 2022