Name: Grzegorz Kopeć
Background: I'm a student of final year master's degree in computer science at AGH in Cracow, Poland. I've been programming for about 8 years starting from C/C++. While studying I've learned variety of programming languages, but Python is my choice for most projects. I also have one year commercial experience in Python writing apps similar to this project. First time I used Debian was about 4 years ago and I've been using it (and Ubuntu) since then.
Project title: Debian metrics portal
Synopsis: This project aims to provide uniform declarative interface to define metrics as well as web application to display those metrics.
Project details (will be updated soon):
The project consists of two parts:
- Declarative interface which gives users possibility to easily add/edit metrics which would be fetched from variety of places. Fetching could be done in many ways using many protocols, from reading local files through accessing files with ftp to making queries to databases. Application must also deal with many output formats like csv, json or sql tables.
- Web application which display those metrics.
Benefits to Debian:
- single place for all Debian metrics
- easy way to define and manage metrics
- possibility of comparing many metrics in order to make better decisions
- database structure to store all historical data points of all metrics
- standardized declarative interface to add/remove metrics to be graphed. The interface should allow for both "local" metrics (e.g. data generated by scripts run on the machines hosting the metrics portal) and "remote" metrics (e.g. data generated by remote data sources which are then periodically gathered by the metrics portal)
- cron jobs to periodically fetch new data and generate graphs
- proof of concept: integration of (some of the) existing graphs in the metrics infrastructure
- web interface to show updated graphs of the various metrics
- client-side dynamic web interface to graph, on demand, specific metrics (possibly more than one at a time to look for correlations) over the desired time periods
- (optional) produce a Debian Package of the portal code to ease deployment on Debian-based machines
- database: PostgreSQL
- database orm: SQLAlchemy
- database migrations: Alembic
- web framework: Flask
- template framework: jinjia2
- static graphs library: matplotlib
- interactive graphs library: mpld3
- Community Bonding Period:
- Get on well with mentors
- Gather information about existing metrics (sources and formats)
- Discuss format of metrics declarations
- Get familiar with new or rarely used libraries/tools
- Coding period 1:
- Prepare database schema
- Metrics declarations parser
- Implement fetching scripts
- Simple web application to insight in gathered data
- Coding period 2:
- Add support for pushed metrics
- Fully featured web application
- Add more fetching protocols and output formats
- Profiling and optimization
- Community Bonding Period:
Exams and other commitments: I have two exams in the last week of June.
Other summer plans: I will probably need two days at the beginning of July to move back home.
Why Debian?: I used it for a long time and I found it very stable and convenient to use as server OS as well as day-to-day OS. I would like to contribute some code and be part of this community.
Are you applying for other projects in SoC?: No.
Code sample: GitHub