Differences between revisions 11 and 12
Revision 11 as of 2014-03-18 14:44:19
Size: 8428
Editor: ?BharathMS
Revision 12 as of 2014-03-18 14:48:55
Size: 8429
Editor: ?BharathMS
Deletions are marked like this. Additions are marked like this.
Line 34: Line 34:
 * '''Code''': The requested code can be found on my [[http://www.github.com/bharathbrat/GSoC-Debian | Github]] account.  * '''Code''': The requested code can be found on my [[https://www.github.com/bharathbrat/GSoC-Debian | Github]] account.

Student Application Template

  • Name: Bharath M S

  • Contact/Email: brat.197@gmail.com IRC: brat197 on Freenode.

  • Background: I am a final year student studying CSE in BMSIT, Bangalore, India. I have used Debian in the past and am running Ubuntu at present. I have 3 years of experience in coding. I am comfortable with C, C++ and Python. The curriculum in my education stops at C++, I taught myself Python from the internet. Using python I wrote a script that parses a sports website, and sends a text message (I did not write this script though) when the live score of a game changes. I have also written a script that uses a simple substitution encryption algorithm and sends a mail. The mail can be read using another decryption script. I have implemented a "Cookbook of Skip List" in C. I have worked on matplotlib in the past during a 6 month internship at Campusdiaries. There the statistics were straightforward and hard coded to a certain extent. My responsibility on that project was to graph the metrics.(Can provide code privately.) I do know javascript but it is usually not my language of choice. I have also attended a 3 day Mini-Debian Conference held in Mangalore and attended the packaging session taught there. I have begun to get myself acquainted with jinja2 and flot.js.

  • Project title: Debian Metrics Portal

  • Project details:

    • At present the various statistics used under Debian are spread and there is no way in connecting them. As a result it is possible that different people are trying to graph the same metrics. This can result in waste of time and effort. The idea is to develop a Debian Metrics Portal that can be used to:
      • Add/remove metrics to be graphed. The metrics can be local or remote.
      • Web interface to view updated graphs where the updating is done by cron jobs.
      • Create a web interface that can graph a limited number of metrics on the client side that can be chosen dynamically.
      Also provide a standard design for the database that can be used to store metrics. The portal must decide whether a set of metrics can be plotted or not, as the user could sometimes make unusual graphs or graphs that cannot be plotted. Creating a new metric involves specifying:
      • the metrics that are being graphed (local or remote)
      • a script that gathers the data required for the graph and creates a .csv file
      • a script that reads the csv file and plots the graph
      At regular intervals the cron jobs execute, gather new data and plot graphs that will be updated on the portal. While adding the metrics to be graphed an option of whether cron job must update the graph or not could be given. If yes, then at what intervals should the updating be done, etc. The client-side web interface should be able to create dynamic graphs that are created on the go as and when the client chooses certain metrics that he/she wants to be graphed. Here the metrics are to be limited to some well known metrics as supervision is not possible. The one objective this project is trying to achieve is to show that the portal is easy to use which will lead to other users migrating to it on their own and this will be demonstrated by integrating a few graphs into the portal as a start.
  • Preferences:

    • Python Templating Engine - jinja2
    • Dynamic Graphing - flot
  • Code: The requested code can be found on my Github account.

  • Synopsis: In this project we are developing a portal that has a simple interface to make it easy to add/remove metrics to be graphed. The idea is to create an infrastructure that can be used to bring all the statistics used (needed) by various projects under Debian to be brought together and be accessible from this portal.

  • Benefits to Debian

    • An ordered and clean way of maintaining statistics needed by the whole Debian project.
    • The easy interface should help make others to keep updating this page to make it bigger and more useful as the trends change.
    • "One portal to add them all, One portal to remove them, One portal to update them all and in the darkness view them." (I am sorry. I could not resist.)
  • Deliverables: ( Given in the project description page - Copied)

    • 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
  • Project schedule:

    • 1. Community Bonding Period:

      • discuss details of the design information of the portal with the mentors and general template that can be used add/remove metrics
      • acquaint myself with Debian infrastructure and any previous work done in this field
      • get to know the mentors and their preferences with regard to the project
      • learn everything required from jinja2 and flot.

      2. Work Period 1:

      • May 19 - May 31: Create a database structure that can be used to store various metrics. (End of semester Exams could be during this phase.)
      • June 1 - 15:
        1. Design and Implement a simple interface to add/remove metrics that can be graphed.
        2. Test this interface with simple use cases.
        3. Provide support in this interface for adding and removing both local and remote metrics.
      • June 16 - 23: Write cron jobs that run within the infrastructure periodically fetch data and generate graphs.
      • June 23 - 26: (Room for error) Wrap up the work done so far. Submit mid-term evaluations.

      3. Work Period 2:

      • June 27 - July 7: Integrate existing graphs into the infrastructure.
      • July 8 - 18: Design and Implement a web interface to display various metrics.
      • July 19 - August 7: Build a client-side web interface that can be used dynamically to plot some specific metrics.
      • August 8 - 11: Fix bugs. Testing. Make additional modifications if required
      • August 11 - 17: (Room for Error) Wrap up the work. Package.
      • August 18 - 22: Submit final evaluations.
      • August 22: Submit required code samples to Google.
  • Exams and other commitments: I will have my end of semester exams around 10 days at the end of May. ( The time table is not yet out) During this period the time I work will reduce. But immediately after the exams I can work full time without any restrictions.

  • Other summer plans: I may be going for a short vacation (3 days) in June. But other than that I do not have any other summer plans.

  • Why me?:

    • I was part of the data analysis department at campusdiaries during my internship.
    • I can learn fast. I taught myself python and have also taken up various courses online. (can provide certificates)
    • To use flot it is required to know some amount of jQuery which I picked up in a few hours and can now graph using flot.
    • I have already begun graphing a few basic metrics using matplotlib and flot (see link provided on melange) to improve my understanding of what is required to design the portal. I have tried various methods of transferring data to figure out which is better and also discussed with the mentors which format they would prefer.
    • I have been looking for projects to contribute to in my free time after I graduate. I will be contributing to this project even after the GSoC is over.
  • Why Debian?: Debian was the first distribution I used. Call it a sentiment of wanting to give back something. Also I have some experience in the area with which the project deals with.

  • Are you applying for other projects in SoC? Yes.