GSoC/GCI Archive
Google Summer of Code 2015


License: GNU General Public License version 2.0 (GPLv2)

Web Page:

Mailing List:


The Subsurface project develops an open source dive log program that supports Linux, Mac, and Windows. It is targeting both technical and recreational scuba divers with solid support for open circuit divers and developing support for rebreather divers and even freedivers.

Subsurface is able to track single- and multi-tank dives using air, Nitrox or TriMix. It also allows logging of weights and exposure protection used, dive masters and dive buddies and enables the user to rate dives and provide additional dive notes.

With Subsurface the user can track dive locations including GPS coordinates (which can also conveniently be entered using a map interface or automatically tracked via mobile companion apps for Android and iPhone). Subsurface calculates a wide variety of statistics of the user’s diving and calculates and tracks information like the user’s SAC rate, partial pressures of O2, N2 and He, calculated deco information, and many more.

We are an all volunteer team of about 160 members, with more than 70 people contributing code and about 20 active developers. The project was started by Linus Torvalds and is now maintained by Dirk Hohndel.

Learn more about Subsurface at

Please also look at our Ideas Page.

There are two easy ways to contact us:


  • Customizable print formats Although Subsurface is a mature dive log application, it is missing good customized printing support. This projects aims to add customizable print support to Subsurface so the user can control which information is printed where and using which style and control over major style elements like font sizes and positioning of the data.
  • Native Bluetooth support for Linux and/or Windows Currently Subsurface and libdivecomputer uses the RFCOMM emulation to communicate with Bluetooth dive computers. The scope of the project is to replace this communication with a native one or with one which uses the Bluetooth module offered by Qt framework. In the end the user will no longer have to setup the virtual serial ports and will be able to discover and connect to dive computers which have support for Bluetooth.
  • Subsurface Android Port Subsurface in its current state is primarily designed to be used on a personal computer. Although it can be compiled for Android devices, the user interface is not really usable on mobile devices. Using QML, we can create a new user interface targeted at Android mobile phones and tablets. This QML based interface will maintain the C/C++ back-end, resulting in a unified code-base which will be easy to maintain, and new features will be easy to implement on both mobile and desktop devices.
  • VPM-B integration VPM-B is a scheduling algorithm for advanced divers, who seek more aggressive and yet safe ascending plans. My project will focus on this algorithms better understanding, writing it's clear description that can be used for other programmers and finally, implementing it as part of the Subsurface scheduling architecture. As a side effect, I will refactor Subsurface planner code, so it allows adding more scheduling algorithms in the future.