Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Google Colab integration #24

Open
padreati opened this issue May 7, 2023 · 2 comments
Open

Google Colab integration #24

padreati opened this issue May 7, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@padreati
Copy link
Owner

padreati commented May 7, 2023

Provide a clean way to integrate RJK into Google Colab.

@padreati padreati added the enhancement New feature or request label May 7, 2023
@padreati
Copy link
Owner Author

The problem with Google Colab is not the verbosity of the installer. That can be handled with ease. There is an additional problem which is that since 2022, Google decided to use ipc (inter process protocol - Unix sockets) instead of standard tcp.

Unix sockets were not supported in Java until 16. However, the java library jeromq, which is the java version of zero mq library, which notebook relies on to communicate does not support it. Yet. There are some issues opened on this topic, but one of them looks promising:

zeromq/jeromq#927
zeromq/jeromq#953

There is another alternative, that during the installation process on colab host to create some proxies to bind the ipc ports to some tcp ports. This looks ugly, since anyway, there are already some commands for installing jdk and the kernel.

This will be postponed for now and give priority to other issues in the meantime.

@padreati
Copy link
Owner Author

Searching more on this path I think there is a way to may implement that, but I have to put some work to test it:

  • since jupyter is there, that python should be also
  • the zeromq python is a wrapper over c implementation
  • c implementation is complete and contains a proxy
  • if ipc is detected in connection file, a temporary file could be created by kernel runner, that file could contain a python script which could be launched to bind ipc to tcp on the same ports, for all 5 channels
  • the python script could be launched as an process
  • when kernel is closing, the process connected with script is killed and the temp file is deleted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant