Student Application Template
Name Samuel Clements
Contact/Email:
<samuel AT borntyping DOT co.uk>
borntyping on irc.debian.org
BST/GMT+1
Background: I'm a first year Open Source Computing student, studying at Aberystwyth University (UK), recently attaining firsts in all modules. I've been programming in Python for 2+ years - some examples of my work are located here github.com/ziaix. They include a IRC-bot library, as well as contributions to open source projects such as phenny, oh-my-zsh1 and Magnetite. I've been a Linux user for several years, hopping between Debian and Ubuntu distributions - currently using Linux Mint Debian Edition.
I've experience with running and maintaining websites using apache, lighttpd and nginx (as well as minor experience with IIS). My first experiences with programming employed a local WAMP stack and I've been running a personal website for the last 2+ years on various servers. I've good experience with both HTML and CSS — good examples are the static sites I currently maintain: a my homepage at borntyping.co.uk and a university assignment website, with which I am experimenting with a set of slides that can be navigated between on the same page, using only pure css and html, here: users.aber.ac.uk/sdc2/cs15020/2.
- I have a clear design for what wish to do with the project, which I believe will both be manageable for me to complete and will exceed the minimum project requirements. I'm also extremly familiar with git, and use it for both personal and team projects.
Project title: Improving Debian Team Activity Metrics
Synopsis: This project will involve writing a web frontend and an api to access information from the teammetrics project, using Python, Django and matplotlib.
Project details: The project will be created in two segments.
The first segment will develop an api capable of fetching the information collected by the teammetrics project, in a useful format, accessible though http requests. I plan to use matplotlib to plot the metrics, as it allows simple, customisable creation of graphs. For example: Mailing list metrics. This is generated by a python script using the example data - the code is availible on request.
- This api would aim to be able to display as much of the teammetrics data as possible, and show it in a useful, human-readable format. Minimally, the api will provide graphs displaying the information collected by the teammetrics project. The data should be able to be fetched with certain parameters, concerning selection of relevant data and customisation of the return format:
- A month, or range of months, to return the information from.
For example, the time range of information that should be included in the graph, such as "Febuary to March 2012". This would return a graph showing only data for the selected period of time.
- Selected people to show the data for.
For example, two of the people working on the requested project. This would return a graph showing only their contributions, or with their contributions highlighted.
- Options relevant to the formatting and style of the graphs.
For example, the colour scheme that the graph will use.
- A selected format to return the data in - I would like to make the data available in 'raw' formats such as xml/json/csv files, for use in other projects that may wish to display or process the data; as well as making it accessible in multiple image formats. If possible, images would be accessible in both vector and bitmap formats.
- Any other requested features/formats that the teammetrics project / project mentors wish to be added to the project.
- A month, or range of months, to return the information from.
The api would also cache generated graphs and data (as the teammetrics scripts are currently run only once monthly) instead of generating it each time it is accessed - I plan to use either stored files or Django's cache framework to accomplish this. While it would also be possible to create the graphs on the client side with js, having the images only generated once (seeing as most calls will be made though the web interface, which would have a set of graphs it frequently shows) and then stored would be much faster, and does not cut off access to users without javascript enabled. It is also inline with Debians philosophy on their websites3.
The second segment of the project will be a web interface for the teammetrics project - intended to be the primary interface for information, making use of the data returned by the api. It would list the projects watched by the teammetrics scripts, and display pages for each, with graphs fetched from the api, allowing users to easily access information on project. A simplified mockup.
- It would also allow the selection of parameters to be used in the api when presenting the information on a page, preferably in a manner that facilitating reloading of the data in place without affecting the remainder of the page, using AJAX to request the new data.
E.g. - a graph showing information on a project over time should have controls allowing the user to change the date range shown, which will replace the graph in place without affecting the rest of the page.
- The interface would also contain api documentation. It would preferably be able to degrade gracefully for users without javascript enabled.
Benefits to Debian: A completion of the teammetrics project would allow contributors and people involved with the Debian project to readily and easily access information that measuring the performance metrics of teams in the Debian community, via a web interface displaying the data and or through api providing access to raw data and images that may be integrated within other sites or projects.
Deliverables: A web interface displaying data from the teammetrics project, together with an api allowing data to be accessed directly, without using the interface. It will be written using Python, with Django and matplotlib (or a similar library), so that the project can be easily maintained by other contributors after GSoC - though I certainly intend to remain a contributor. If I finish earlier that expected, I plan to improve the number of raw data formats provided by the api - such as raw data in csv/json/xml formats and other image formats - and, or to add to the different ways of displaying this information via the web interface.
Project schedule: I intend to begin work as soon as possible, subject to exams timetables (see below). I anticipate completing the api by the halfway point and to spend the second half creating the web interface and continually improving on the project.
Exams and other co mmitments: My exams are scheduled between the 14th May and the 1st June, though I am expect to finish within the first week of this period.
Other summer plans: No other firm plans - SoC would be my first priority.
Why Debian?: It gives me a chance to contribute to a community that has provided me with a usable operating system over the last 4+ years (I have very rarely used an operating system that has not been a derivative of Debian). I also am interested in contributing to major open source projects and communities, as I am studying for a degree centered around Open Source computing.
Are you applying for other projects in SoC? No.
