Google Summer of Code 2018 at GNOME

Brief Introduction

Hi! I am Aditya from Vienna [carpediem on gimp IRC]. Currently I am pursuing my bachelor’s thesis in Deep Learning at TU Wien. I am interested in software, operating systems and AI. Travel, hiking and swimming occupy rest of the time.

I started with Linux ~7 years ago when my Windows desktop failed to boot because of a curious experiment accident with system32 files. Looking back at that moment, I am glad for the few hours of initial pain which was worth several years of sanity. Since then I have been working with Linux as the primary platform. I like Open Source Software because it’s much more fun to break and fix something, which really helps understand what’s happening in the machine. I used to like C/ C++ quite a bit, but you can probably throw any language and I am happy to learn it.

Google Summer Of Code

I got selected for Google Summer of Code 2018 program as part of GNOME. A big thanks to my mentors, Felipe Borges and Christian Kellner for giving me this chance.


My project aims to implement the power panel in gnome-usage, which would inform users about how various hardware components and software applications are consuming power over different time periods. The major objectives include:

  1. Develop the infrastructure to determine and evaluate power consumption
  2. Develop D-Bus API for accessing the data from shared library
  3. Implement front-end panel for displaying data in Usage

I hope this project represents a solid contribution to the community. Looking forward to a great summer with GNOME!


Implementing power panel in Usage

The power panel in gnome-usage intends to inform users about how different applications and hardware components are consuming power in their systems. For instance, how much does the screen affect overall power consumption, and how much impact on battery life can be ascertained by lowering the screen brightness by as little as 10%.

In the first phase of the project, I focused on implementing the front end components in Usage in Vala. This was a lot of fun, and taught me many interesting things about object oriented programming. One of the problems faced initially was regarding how to switch data for the graph and changing graph rendering capabilities for accommodating very large datasets such as Battery levels over 5 days.
Another problem was how to fetch the Battery data inside Usage from UPower over DBus, and how to handle the data in Rg.Table for large time values, averaging and extrapolating missing values as well!