At Hack24 in Nottingham this March, we challenged 150 developers to produce a prototype tool to improve the discovery, sharing, consumption or evaluation of scientific research. The eLife challenge prize was awarded to a team of four physicists, who created CoLab, a tool to enhance scientific collaboration via the medium of instant messaging. While still only a proof-of-concept, the team would welcome feedback about the idea and suggestions for ongoing development, via email@example.com.
The winning teammates were:
- Matt Jones – Scientific Software Developer, Tessella
- Asaf Paris-Mandoki – Postdoctoral Researcher, Physics Institute, National Autonomous University of Mexico
- Anton Piccardo-Selg – Scientific Software Developer, Tessella
- Sonali Warriar – Data Analyst, PricewaterhouseCoopers
Wind back the clock to when Matt, Sonali, Anton and Asaf were PhD students in the same group at the University of Nottingham. They recollect gathering around a whiteboard to discuss important research questions and work together to iteratively improve analyses and equations. However, the whiteboard is not an option for distributed collaborators. There’s also not a simple way to keep a permanent record of these discussions. This got them thinking. How can important contributions be captured in a way that retains the critical edit as well as the name of the contributor to credit for this?
Inspired by the myriad of ways in which scientists have begun to use Slack — the team messaging app replete with useful integrations — Matt had the initial inspiration to transfer these ideas to the realm of science and together with Asaf, Sonali and Anton created CoLab, a collaborative editing and messaging platform for scientists.
CoLab offers multi-channel instant messaging, similarly to Slack, Gitter and Hipchat, but with added features that specifically support scientific collaboration. By incorporating an executable code editor into a chat room messaging app, CoLab adds read/write functionality to real-time conversations. This enables users to interact with, modify and repost code snippets for data visualisation and analysis. Thus, as research progresses from data collection to analysis and presentation, the researchers involved can collaboratively edit each other’s work using a medium that retains the history of the conversation.
Demonstration of CoLab on the local machine. Source: https://youtu.be/TD3FUoyO5UY.
Both Python and R are directly executable within the app, and the code editor supports syntax highlighting. Coming from a physics background, the team also integrated support for mathematical equations using MathJax. The conversation history in CoLab can be exported as a Jupyter notebook, providing a convenient way to make everyday research conversations reproducible, not to mention that contributions can be documented and thus recognised.
One of the benefits of exploiting instant messaging applications to collaborate on a research project is the ease-of-use and immediacy that these tools bring to conversations. For instance, Slack has become a popular means of sharing thoughts and comments with a group without needing to keep up with an email thread. Including read/writability removes the need to continually download and upload new versions of scripts from repositories or even via email attachment. The editor function also avoids switching into another local executable environment in order to test a new script.
The proof-of-concept application was implemented using Python’s Flask web framework, with Apache Kafka providing message streaming and persistence. Other components were CodeMirror for code editing with syntax highlighting, MathJax for equation rendering, the Bootstrap framework for creating the front end interface, Jupyter tools for creating HTML output from the Python and R code and for creating notebook files.
CoLab remains a proof-of-concept only, but the team have a clear vision for developing a prototype. In addition to the features they showcased at the hackathon, they would like to see the tool become a stable web service, with user-access controls, security, version control and a notifications feature. One of the larger hurdles to jump will be deciding on whether to host the execution of scripts via a web service, or whether to make local computations hassle-free for the user.
The source code is available at https://github.com/colab-chat.
This article was updated on August 14 to amend the source code location, previously at https://github.com/asam-hack24/CoLab.