Skip to content

Instantly share code, notes, and snippets.

@bgruening
Last active June 19, 2016 20:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgruening/7a79dcf13b8011f3cc66e75e03a50d7d to your computer and use it in GitHub Desktop.
Save bgruening/7a79dcf13b8011f3cc66e75e03a50d7d to your computer and use it in GitHub Desktop.
RFC: Galaxy Communication Server

Realtime communication server and its user-interface

Galaxy makes it very easy to analyse data but communicating with other researchers and sharing tricks or asking questions is too hard and a for many people big hurdle.

We should promote https://biostar.usegalaxy.org wherever we can, but I think there is also a need for quick, instant help ... like we (developers) do with IRC.

This PR integrates a realtime communication server and it's user-interface.

This is how it looks like:

It features a chat-application with a gloabl room where all users can communicate with each other. To offer more specilised rooms for bigger Galaxy instance we have integrated persistent communication rooms that can be configured by an admin via galaxy.ini. These additional global chat-rooms will stay even if no user is logged in and can be joined/followed by all interested users. Moreover, we included an option to create personal chat rooms. These rooms will not be listed to all users.

This is how you can use it:

At first you need to install a few requirements.

  • . GALAXY_ROOT/.venv/bin/activate # activate Galaxy's virtualenv
  • pip install flask flask-login flask-socketio eventlet # install the requirements

As a next step start the communication server with something like this:

  • ./scripts/communication/communication_server.py --port 7070 --host localhost

Please make sure the host and the port matches the ones in ./config/galaxy.ini and set the secret_id in galaxy.ini

We implemented this as an external implementation as we were not sure if everyone agrees that such a feature should be deeply integrated into Galaxy.

As a consequence and to protect user-privacy we disabled the communication server and the admin as well as the user needs to explicitly enable it.

The communication server can be controlled on three different levels:

  1. The admin can activate/deactivate the communication server via ./config/galaxy.ini. [off by default]
  2. The user can activate/deactivate it in their own personal-settings via Galaxy user preferences. [off by default]
  3. The user can activate/deactivate communications for a session directly in the communication window. [on by default]

Credits:

Thanks a lot to Anup Kumar (@anuprulez) a Galaxy first time contributor, Rémi Marenco (@remimarenco) and Eric Rasche (@erasche). It's always a pleasure to work with you guys!

Any comments welcome! What do you think about such a feature, any other way how we should integrate this. Thanks and see you all at GCC!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment