On this page you find our ideas for the next step in our roadmap. Please use these ideas to define a project for collaborating with us in programs PSLab participates, e.g. for our organization applications for Seasons of Docs or, internships or in Google Summer of Code.

Google Summer of Code Ideas

Below is the list of ideas. At the end of the page you find application guidelines.

Add Pocket Science Lab Apps to Debian, Improve Feature Set and Provide Autobuilds for Packages of Linux Systems

The Pocket Science Lab is an Open Hardware that comes with a basic desktop application in an early stage version. There is a prototype Debian package available that was generated semi-automatically. The goal of the summer project is to further develop the application to make the hardware fully functional on the Debian desktop and to fully automate the package build. The frontend used for the application is Electron. The student should also collaborate with other Debian members in order to include Electron in Debian.

  • Confirmed Mentor: Norbert Preining
  • How to contact the mentor: Email, chat, Gitter, (In order to stay in aligned throughout the program, please submit daily scrum email, participate in weekly team meetings over video conferencing software, write 4 monthly blog posts about technical aspects and create a final project presentation with slides and a screencast)
  • Confirmed co-mentors: M. Padmal
  • Deliverables of the project: The outcome of this summer project should be a well-tested PSLab desktop version for Linux systems such as Debian that is automatically built using CI tools. In order to achieve this goal the student has to develop the missing bits and pieces including creating frontend and adding features to the Python backend of the project. 
  • Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI, Python, Electron, Web Technologies, Hardware knowledge
  • Related projects: PSLab Desktop

Add Datalogger and Connect Features to PSLab Firmware and Applications

The firmware of the PSLab device is already in a very stable state. The next goal in the project is to enable the PSLab to collect data without being connected to a phone or computer. We want to have a fully functional data logger in the project. It is your task do extend the existing data logger capabilities and make this feature fully functional. It should be possible controlling data logger functionalities externally through the Android app, desktop or iOS via USB, WiFi or Bluetooth also should be possible as well as advanced scheduling data logging and interval measurements.

Required Features to be Developed:

  • Implement use device as “data logger”
  • Add support for MiniSD card
  • Implement support for “record and play data”
  • Implement support for time and date
  • Implement record at certain times and interval
  • Implement “send data to device or net address using WiFi or Bluetooth”

Repository and Issue Tracker: https://github.com/fossasia/pslab-firmware

Prerequisite Knowledge: Technology C

Possible Mentors: Lorenz Gerber,M Padmal, Wei Tat Chung, Haggen So

Add Advanced Screen Support for LED Screens as Well as LED Badges to Firmware and Implement Controls in Android Application

The PSLab Firmware already has basic support for screens. In this summer project the goal is to extend the screen support for different kind of screens from fully colored LED displays to simple one colored pixel badges. Additionally support should be added to the Android app to display custom information on the added screen.

  • Confirmed Mentor: Wei Tat Chung
  • How to contact the mentor: Email, chat, Gitter, (In order to stay in aligned throughout the program, please submit daily scrum email, participate in weekly team meetings over video conferencing software, write 4 monthly blog posts about technical aspects and create a final project presentation with slides and a screencast)
  • Confirmed co-mentors: Kok Waigie
  • Deliverables of the project: At the end of the project users are able to use the screen on hardware easily as extensive functionalities are supported through the firmware. Users are furthermore able to use the screen as a display device for custom information or simply as a badge
  • Desirable skills: C, Make File, Shell, Electronics, Python, Firmware, Electron, Android, Java, Kotlin, Hardware knowledge
  • Related projects: https://github.com/fossasia/pslab-firmware

Add additionl Instruments to PSLab Android

Many instruments have been improved and new ones implemented. A number of additional instruments are still high on the wishlist of many users including ph meter, magnetometer and a distance measurement tool. Users also want to build experiments using different instruments at the same time and we need a section to be implemented for this new functionality. The Android app has seen big improvements and exciting features have been implemented over the last year, including recording, export and mapping features. These features have not been implemented in all instruments yet and there is work left here. Some areas also need improvements in regards to speed which are related to slower provision of map APIs of OSM for example. Furthermore we need more professional features like the ability to schedule experiments and to run them in intervals. Also exporting in other formats like JSON and Matlab, syncing and backup features are important. Finally the configuration of PSLab and the setup of the PSLab device via WiFi or Bluetooth as a data logger while unconnected needs to be developed.

Required Features to be Developed:

  • Implement connect to device via Bluetooth or WiFi
  • Implement setup device with ESP and provide all info on required steps in detail
  • Implement export, settings, maps in all instruments
  • Offer choice of Google Maps or OpenStreetMap in App settings
  • Provide API to login and connect to external service and sync data
  • Implement backup to Google Drive
  • Add section “build experiments with several instruments”
  • Add instruments: PH Meter, Magnetometer, Distance Measurements
  • Implement Interval Recording, e.g. record every 10 minutes for 10 seconds
  • Sensors: Provide a way to collect and store data
  • Add section “build experiments with several instruments” following existing approach
  • Implement configuration of device as independent data logger, e.g. device runs independently and records data in intervals, for a specific time etc.

Repository and Issue Tracker: https://github.com/fossasia/pslab-android
Google Play: https://play.google.com/store/apps/details?id=io.pslab
Fdroid: https://f-droid.org/packages/io.pslab/

Prerequisite Technology: Java and Kotlin

Possible Mentors: Wong Wan Leung, Lorenz Gerber,M Padmal, Wei Tat Chung

PSLab Desktop App

The goal of the next steps in the development of the desktop app is to follow the design approach of the Android app, implement export capabilities, the ability to connect it with the web app and reach feature parity with Android. Furthermore the goal is to enable building experiments with several instruments and accessing functionalities through the terminal. The desktop was developed firstly for Linux systems. It is rather complex to setup and using outdated versions of Python and libraries resulting on unexpected crashes. A main objective is therefore also to enhance stability and to automatically build packages for Linux, Windows and MacOS.

Required Features to be Developed:

  • Adjust and implement architecture to enable the build of cross desktop desktop application for: Linux, Windows, MacOS
  • Automatically build deb and other Linux packages on each merged PR
  • Automatically build Windows exe or msi file on each merged PR
  • Automatically build a Mac dmg file on each merged PR
  • Design app according to instruments similar to Android app
  • Add section “build experiments with several instruments” following existing approach
  • Provide an external repository to add to Linux systems
  • Provide documentation to make experiments with the application
  • Add export capabilities, e.g. Matlab, CSV, JSON etc.
  • Add terminal access (terminal in graphical UI)

Repository and Issue Tracker:

Prerequisite Knowledge: Python, APIs

Possible Mentors: M Padmal, Wong Wan Leung

PSLab Web App

The goal of the web app project is to enable different people to store their data independently of the device they use, to enable them to collect data from external devices (connected to a network via WiFi/Bluetooth) in the field and to collect and share data of groups. Sharing of data should be done through tables and spreadsheets and visualized on maps and charts/diagrams.

Required Features to be Developed:

  • Implement Backend (API centric) and Frontend
  • Convert Frontend to ReactJS
  • Enhance account features, signup, login, passwords, store personal info, connect to social media accounts
  • Implement “add device to your account”
  • Implement API to store app settings (Android)
  • Implement API to store and sync instrument data
  • Implement Export to Google Docs
  • Implement backup to Google Drive
  • Implement group features: Group Admin, show data of all groups
  • Implement show data on maps, take inspiration at http://aqicn.org
  • Implement visualization of data on charts and diagrams
  • Implement labeling of data, e.g. PH data etc.
  • Implement storing data according to instruments of Android app
  • Add export capabilities, e.g. Matlab, CSV, JSON etc.
  • Implement Interval Recording, e.g. record every 10 minutes for 10 seconds
  • Implement configuration of device as independent data logger, e.g. device runs independently and records data in intervals, for a specific time etc.
  • Implement “Admin section” to store system configurations and system data, e.g. users, experiments (including deleted experiments), media storage, email service etc. (compare to open event admin)
  • Implement private area where users can store data that is not public

Repository and Issue Tracker: https://github.com/fossasia/pslab-webapp

Prerequisite Knowledge/Technology: Python, Flask, ReactJS

Possible Mentors: Lorenz Gerber, M Padmal, Wei Tat Chung

Set of PSLab experiments and walk through

PSLab is a project meant for experimentation, the lack of experiments and walkthroughs will prevent people in the community to get involved in the project. By creating new experiments and developing the necessary tools for it the student will enable other community members to understand the usefulness of PSLab and spark their interest. 

Develop Continuous Integration System Set Up and Develop Advanced Automated Tests to Maintain Quality of PSLab Apps

Quality of the software and hardware is very important in order to maintain the usability of the project. PSLab needs a Continuous Integration system that can help guarantee the quality of the software and as much of the hardware as possible. In this task the student will do a research on the possible CI systems that can be integrated with PSLab and its application. Then a full setup will be done and different unit tests will be integrated in order to keep the software from PSLab being continuously tested.

  • Confirmed Mentor: Marco A. Gutierrez
  • How to contact the mentor: [email protected]
  • Confirmed co-mentors: Wei Tat
  • Deliverables of the project: A CI system for the software applications of PSLab, should contain as many unit tests of the system as possible
  • Desirable skills: Electronics, Python, Electron, Web Technologies, Hardware knowledge
  • Application tasks: Selection and Implementation of a CI System, create unit tests and build tests on top of these
  • Related projects: Jenkins, Github Actions, Travis, Circle CI

PSLab iOS

The goal of the iOS app development is to reach feature parity with the Android app.

Repository and Issue Tracker: https://github.com/fossasia/pslab-iOS

Prerequisite Knowledge/Technology: Swift

Possible Mentors: Jogendra, Lorenz Gerber, M Padmal, Wei Tat Chung

PSLab Hardware

PSLab V1

  • Define: What enhancements can be done with the current layout?
  • Implement play, stop/record buttons
  • Add MiniSD card slot
  • Implement support for USB-C and increase measurement range
    • What can USB-C provide additionally
    • Define what ranges / features will be improved
  • Include additional sensor/components, e.g.
    • Temperature
    • Motion Sensor (what technology)
    • Infrared Sensor to measure distance
    • Magnetometer
    • Light sensor
    • LED module
    • Humidity sensor
  • Implement support for digital sensors: What is specifically missing in the UART implementation? E.g. why can’t we use digital humidity sensor using the serial port.
  • Add RTC – use phone to synchronize
  • Add GPS module for timing – synchronous timing

PSLab V2

  • Develop the next version of PSLab using an ARM chip, possibly: LPC43S70FET256: 32-bit ARM Cortex-M4 + 2 x M0 MCU; 282 kB SRAM; Ethernet; two HS USBs; 80 Msps 12-bit ADC; configurable peripherals, AES engine (Issue)
  • Define: What can we achieve additionally?

Repository and Issue Tracker: https://github.com/fossasia/pslab-hardware

Prerequisite Knowledge: C, Firmware Development

Possible Mentors: Mitch Altman, Lorenz Gerber, M Padmal, Wei Tat Chung

Neurolab

The goal of the Neurolab project is to develop an easy to use open hardware measurement headset device for brain waves that can be plugged into an Android smartphone and a software application and enables us to understand our brains better.

Our brains communicate through neurotransmitters and their activity emits electricity. The neuroheadset measures that electricity on the skin of the forehead and the software processes the signal so that it can translated into a visual or auditory representation. The data that can be collected can be analysed to identify mental health, stress, relaxation and even diseases like Alzheimer.

Current devices in the medical industry are usually not accessible by doctors due to their high pricing. They are also complicated to use. The idea of the device is to integrate it into a headband and focus on signals that can be obtained through the frontal lobe.

A difference to existing projects like OpenBCI is that it will not be necessary to 3D print large headsets. Instead we are focusing on creating a device that collects as much data as possible through the forehead. To achieve this goal we are using high-grade sensors and flexible electronics.

Required Features to be Developed:

  • Implement a firmware for alternative ICs to AD7173 and OPA2111
  • Implement Neurolab visual feedback in Android app
  • Implement Neurolab audio feedback in Android app
  • Update Neurolab desktop app to using latest libraries and Java version
  • Provide Neurolab desktop packages for Linux, Windows and Mac
  • Automatically build desktop packages on each merged PR for all major platforms

Repositories and Issue Tracker:

Neurolab Android https://github.com/fossasia/neurolab-android
Neurolab Desktop https://github.com/fossasia/neurolab-desktop
Neurolab Firmware https://github.com/fossasia/neurolab-firmware
Neurolab Hardware https://github.com/fossasia/neurolab-hardware

Prerequisite Knowledge: Java, Kotlin, Desktop technologies, C

Possible Mentors: Mitch Altman, Lorenz Gerber, M Padmal, Wei Tat Chung

Developer Program Application Guidelines

In your proposal please tell us about your coding project. Keep it simple. We prefer people who rather solve some issues to show their dedication than super long proposals. The following information is relevant for us:

  1. About Yourself: Tell us about yourself, your activities in Open Source projects, university, your blog and background. Tell us why you picked this project, how do you use it?
  2. Project title and possible mentors (if you know)
  3. Abstract: Please provide a short abstract. What is the project you want to do? 
  4. Previously Solved Issues/PRs: Which relevant pull requests, real features and bugs in the project repository did you solve already? (This is one of the most important points to decide who gets the stipend)
  5. List of Features/Bugs you plan to solve: What needs to be done for the project? It is very important to list quantifiable results and a list of features. Lists with bullet points are sufficient. If there are existing issues, please add the link behind the feature or bug you plan to solve. Please write the features/bugs in a way that you can post it on the issue tracker.
  6. Design Samples: If relevant include designs that help us to understand your idea. If you have samples, please add them below the proposal.
  7. Timeline Table/List:  Create a timeline for your work. Which features are most important – put them at the beginning. A simple list or table is sufficient. No need for charts.
  8. Test Cases: Outline test cases and add information on unit tests.
  9. Documentation is important and part of the development process. We keep documentation in repositories in the docs folder usually.
  10. Communication: To keep communication flowing in the project we require people to be a member and all project channels. Please also include a list of channels you are participating in (chat, mailing list, Twitter etc.) and add your ID or Email to ensure we can find you.
  11. Daily Scrum: During programs we expect people to submit scrum reports. Please tell us what questions are asked in a daily scrum!
  12. Other Expectations:  During the program please submit a weekly technical blog article with screenshots, media and share it on social media, provide three webcasts, provide two presentations and organize a small outreach meetup each month. What is your plan?
  13. Availability: We want to avoid disappointments and ensure that people are available for the program full time. Students who are not available to contribute continuously during the program will be failed by admins without exception. Please don’t ask for exceptions in your application. If you are not available full-time in the program, don’t apply. Please confirm in your application, that you don’t have any other job or internship during the program, no extended travel or any other commitments or family obligation that could prevent you from participating in the program full-time.