GSoC 2021 Project Idea 24.2: LAB.JS Laboratory Hardware Support for lab.js via the Lab Streaming Layer

lab.js is an open-source JavaScript library and GUI for building experiments in the neuro- and behavioral sciences ( Researchers worldwide use it to construct and run experiments online and in the laboratory, as well as for teaching research methods and experimental design.

In this project, our goal will be to expand the library’s reach to laboratory equipment such as EEG and eye-tracking hardware, biosensors, and potentially neuroimaging systems. This will allow for the integration of further data sources in studies built with lab.js, and more types of research to benefit from the project. The technical conduit for this work will be the Lab Streaming Layer (LSL, GitHub - sccn/labstreaminglayer: LabStreamingLayer super repository comprising submodules for LSL and associated apps.), which provides a widely supported standard for communication between different instruments, and a framework for collecting time series from a multitude of sensors. Your task in this project (as we envision it) will be to establish communication between a study running in lab.js, and the LSL. We are open to your ideas and suggestions, but one way of achieving this would be to expose the LSL through

Electron (, a framework for creating desktop applications with JavaScript that provides wide-ranging capabilities for low-level access to the operating system.

As a stretch goal, we hope to benchmark the result with you, and establish the temporal resolution and alignment the system provides. To work with lab.js and Electron, ideally you’re ready to develop in JavaScript, but we would be thrilled to introduce you to the project, and of course support you in your work.

Please do not hesitate to get in touch – we would be glad to answer any questions you have, and help sketch out a formal proposal. You’re warmly invited to say hello in our community (lab.js · Support) – we’d love to hear from you!

Lead mentor: Felix Henninger @felixhenninger (University of Mannheim / Helmholtz AI / LMU Munich)

Backup/Co-mentor: Yury Shevchenko (iScience group, University of Konstanz)

Skills: Intermediate JavaScript, ideally some Electron (or interest in picking it up)

Hi everyone, thanks a lot for checking out our project! I just wanted to invite you to ping me if I can help, I’d be thrilled to answer questions and help out as best as I can. Looking forward to hearing from you!

hello @felixhenninger ,
I am Santam, currently doing my major in computational biology. I am proficient in javascript and python and comfortable using frameworks like Electron, React and Nodejs. I find this project quite interesting and would like to contribute to it. How do I get started and what is the preferred mode of communication?

Hi @SantamRC, thanks so much for reaching out, it’s great to hear from you! I’m psyched that you’re interested – I’m guessing you’ve already seen our website already, so if you’d like to learn more about everything that’s happening in the project, let me invite you to join our community. I’d suggest that we keep general questions regarding GSoC in this thread, and I’d be happy to answer your technical questions over in our community if that’s ok for you.

As for the technical aspects, one place to start might be our (currently dormant) electron application, which exists only as a rough prototype so far. Besides that, we maintain a (much more stable) React-based UI for building experiments and a JavaScript library for running them – based on your experience, I hope you’d feel right at home in both!

Ok, so much for now – I hope that helps you get started! I’d be glad to show you around and answer any questions that come up, feel free to ping me anytime. Kind regards, and thanks again for your interest,