[Soc-coordination] Report 1 - Improving Team Activity Metrics

Vipin Nair swvist at gmail.com
Fri Jun 1 12:06:01 UTC 2012


Hi,

This is the first report on the GSoC project 'Improving Team Activity
Metrics' with Sukhbir Singh and Andreas Tille as the mentors.

The goal of this project is to develop a web interface and a data
access API to present the various stats collected from different
sources in the Debian that can help understand the performance of
various teams in Debian. Performance of each team can be analyzed
using different metrics like the number discussions on the mailing
list, number of commits/line changes and number of bugs closed. These
numbers when analyzed over a period of time gives us an insight into
the team activity.

Over the past month, not much code has been produced but I have had
extensive discussions[1] with mentors and other developers who have
been very helpful and I have learned a lot of new things. Since this
project is all about metrics, just for the record, we have exchanged
sixty six emails in past one month discussing various aspect of the
project :) This mail is divided into two sections. One section
exclusively deals with all the discussions we have had and the various
decisions that we have arrived at and the other section deals with the
actual progress in terms of code.


[Discussions]

Andreas created an account for me in the blends.d.n server and gave me
access to the relevant data in the database. Sukhbir asked me to
create an account in Alioth and gave me push access to the project
repository[2]. I created a blog[3] and submitted it to Ana who put my
feeds into planet.d.o though I do not write frequently.

The first task was to finalize a python web framework for the project.
The mentors were pretty flexible and asked me select a framework of my
choice, the only condition being the selected web framework must be
acceptable on a debian.org host for which Andreas suggested that I ask
the DSA. I got some good response from Enrico Zini and Raphaël Hertzog
on the DSA mailing list and I was told that any framework packaged in
stable+backports is acceptable. Enrico gave a detailed reply and a
link to his custom django app with the default site layout of the
Debian website[4]. After some research, we fixed Django as our web
framework.

I was playing with the Django web framework for sometime as I am
completely new to this. I found it a bit strange and not very easy to
use as compared to the other web frameworks that I have used before. I
am fairly comfortable with Django now.

The data collected by the project needs to be presented graphically on
the web interface. There are two ways to do this, one could be either
render an interactive visualization on the client side browser using
javascript or render it as an image on the server side and send it to
the client. I pushed for the client side rendering for various reasons
but we are yet to arrive on a decision regarding this as we first need
to analyze all pro's and con's of the available options and the pick
the best one.

For over a week, I played around with different javascript charting
libraries like D3, jqPlot, g.rapheal. jqPlot is easy to use but
customization is difficult. D3 is extremely powerful library with an
equally steep learning curve but gives pixel level precision of the
visual output. g.rapheal comes somewhere in between. After some quick
experimentation, I decided to learn more about D3. I have had my own
share of difficulties when I started out with D3 but after reading
some good tutorials and blogs[5], I was finally able to create some
basic visual forms like bar chart and line charts. The library is
promising and I hope to use this in the project.

Mentors asked me to focus on 'what-to-present' part initially as
'how-to-present' part of the project will be the natural consequence
of our initial decision. It made more sense and we had a good
discussion on the 'what-to-present' part of the project. I laid out a
clearly defined vocabulary for our discussions and presented my point
of view[6].

In an earlier discussion I proposed that we link different metrics of
a particular team together, i.e., different metrics like mailing list
discussions, project commits and other metrics for a team be linked
together which can give us 'the big picture' of the working of the
team. Sukhbir suggested we use a simple config file to link them
together and showed me a sample config file.

I was also reading about unit testing and had initially decided to
follow TDD methodology but since it is completely new to testing, I
believe it'll take me some more time to get used to this hence I have
not started with the testing part yet.


[CODE]

All the code is accessible in our project repository[2]

I have started two branches for the project called 'web' and
'web-devel'. All the experimental and in-progress code is pushed to
'web-devel' branch and its refined and documented before it is pushed
to the mainline branch 'web'.

I cherry picked Enrico's reusable django app that has the base layout
of Debian website from code base of nm.d.o to the current project
repository.

I have written code to parse the config file to get the necessary data
out of it. For a given team, we can get the names of the metrics that
we need by looking at the config file.

I wrote some sql to extract relevant data out of the database. I had
fun writing this as I had to think quiet hard to come with a good
solution.

Some python code has been written that manipulates the result set from
the database and produces a JSON output. This output could be an
endpoint to the API that will be developed in the near future.



I have had good fun while working on the project. Everyone I have
interacted with in the Debian community were welcoming and helped me
whenever I needed anything. My mentors Sukhbir and Andreas deserve a
special mention. They are very responsive to the countless mails I
send, give me a enough freedom to work the way I want and guide me
wherever required. Thank you guys :)

If you have some questions or need any further clarification, Please
send a mail to our project mailing list[7].

Thanks.


[1] : http://lists.alioth.debian.org/pipermail/teammetrics-discuss/2012-May/thread.html
[2] : http://swvist.github.com/
[3] : http://teammetrics.alioth.debian.org/
[4] : http://lists.alioth.debian.org/pipermail/teammetrics-discuss/2012-May/000894.html
[5] : https://github.com/mbostock/d3/wiki
[6] : http://lists.alioth.debian.org/pipermail/teammetrics-discuss/2012-May/000872.html
[7] : teammetrics-discuss at lists.alioth.debian.org



-- 
Regards,
Vipin Nair
National Institute of Technology, Calicut
http://swvist.github.com



More information about the Soc-coordination mailing list