Name
- Divyanshu Verma
Contact/Email
- IRC: dev1010
Email: dev.verma1010@gmail.com
Background
I am a second year student studying Information and Communication Technology at Manipal Institute Of Technology. I have been using Debian for the past three-four months. In these three months, I learned the importance of how an open source operating system helps developers. I like to programme in Python and haven't programmed in any other language since i learned it, owing to its simplicity of use coupled with power. I have also learnt Django recently and also feel comfortable in it, as it is based on Python. I have a good knowledge of web development using HTML5, CSS3, ?JavaScript and jQuery and have been learning and programming for about 1 year. I am also currently an IAESTE [International Association for the Exchange of Students for Technical Experience] Media Team web developer/designer and I'm contributing in the development of their website. Apart from these, I have a strong foundation in core Java and J2EE and have been programming with them for about 2 years now. I also know core C/C++. Some of my projects are located here:
https://github.com/DivyanshuVerma
Past Projects:
DuplicateFinder: An application which takes a path to search for duplicate files in it. Once the duplicate files are found, they are displayed and the user can then select and delete the files. It also features a restore option, to restore the file if it is deleted by mistake. It also has a nice GUI.
PicExtractor: An application which downloads images from www.carwalls.com When you start the program, it crawls the pages of the site, and simultaneously, it downloads the images that are not on the computer. Once you have crawled the whole website, then it downloads and crawls only those images that are not downloaded previously.
JTester:This application allows you to write and edit your java code directly on the GUI interface. When you are done, you can compile it just by the press of a button. The errors after compilation or the output is displayed there itself.
MobileSync:This application controls your desktop remotely through bluetooth. For this, a mobile handset with bluetooth functionality is needed. You can send a command through your mobile to your PC to shut it down, restart, play songs, start any application or close it, all that through a bluetooth connection.
PicSecure:Basically, a form of Steganography. It basically hides the data in the image and then restores it back from the image file. The image is not hampered and can be viewed the same as it was before. But, the data is hidden.
Project title
- Improving Debian Team Activity Metrics
Project details
- This project deals with the development of two deliverables, consisting of an API and a web interface. The Debian Team Metrics [1] has already implemented the way to get the data which measures the performance and activity of the teams in the Debian community by inspecting their postings on the different mailing lists, commit statistics from project repositories and package upload records from the Ultimate Debian Database. This data is regularly updated by running Cron jobs. The important thing to note is that data is ready, but we have to design an API which acts on the data provided by these metrics and the user input through the web interface and produce the results accordingly which can be implemented and viewed on the web interface.
- The technology to be used for the development of the API is Python which is a simple and robust language. The development of the API should be done keeping in mind that the data is ready. The API just has to deal with this data and produce useful information out of it. The development of the API will allow the user to customize the data on which it acts and produce meaningful graphs out of it which will be focussed on the attributes provided by him/her on the web interface.
The technology used for the database is ?PostGre SQL which helps in managing the data extracted from the various sources described above. The API and the web interface to be developed will query the database and get the desired information, which will then be presented on the web interface, and will also be used for the creation of the graphs.
- The Graphs will be created by using R-scripts, which create a png image file from the data available to it. The data, as described above will be fetched by querying the database using different technologies described above.
The technology used for developing the web interface is Django. The web interface to be developed should be in compliance with the Debian Website Layout [2]. As such, the web interface should have a unified look and feel, a layout which is not designed for a specific browser and should be independant of ?JavaScript as far as possible. Django is a web framework which helps in the development of customized web pages, which can be modified for the end user based on the data provided by him/her. It can also be used for querying the available database and retrieving the resulting information, as it includes support for ?PostGre SQL. Thus, the values will be taken from the user which will act upon the database and extract relevant data, which will then create the graphs and display in the web interface.
- Once the API and the web interface are developed, they will be tested, updated, modified and corrected if any bugs are found. Once they are final, they will be documented appropriately for future references. The main motive behind the development of the interface would be simplicity of the website. Stress would also be given to reduce the load on the servers.
- An working example would have the following steps:
- First, the user interacts with the web interface and provides some input for the information and graphs that he wants to access. A possible input includes:
- name of the mailing list.
- value of n, where n is the total number of names of top commiters.
- absolute year/year duration. 2011, 2012, last 2 years, etc. are some examples.
- This will lead to the creation of a graph as shown here [3]
- Then, this data reaches the server, where the database is queried for the data by either the API or Django. This gives us the information which we need to process, and create a graph.
- This information is processed using R scripts which creates the graph. Any lacking information may be supplied by the default values for the creation of the graph.
- Finally, this graph is sent to the client in an interface which is customized by Django. The images may be cached, so that the server does not have to do the processing all over again. This will help in reducing the load on the server.
- I have read the code available in the git repository [4] and also all the discussions on the mailing list [5]
Synopsis
- The project consists of the development of an API to get the data from the metrics and the development of a web front-end which would present the data obtained in a nice format.
Benefits to Debian
- After the completion of the project, the Debian community would be able to check and evaluate the performances of the various teams and individual members. It is also beneficial to an individual, as he would be able to view all the hard work he has done throughout at a glance. This all would be presented in a nice web interface integrated with different functions to customize the view.
Deliverables
- A tested and documented API written in Python which would be applied to get the data from the metrics. It will also include the development of a simple web interface which will act upon the data made available through the API, customize it for the end user and then display it. My commitment to the Debian community does not end here and with the help of this project, I would like to become a permanent contributor to the community.
Project schedule
16th - 25th April:
- Reading the Team Activity Metrics Code, understanding how the metrics is generated and data obtained.
- Communicating with the mentors, and taking their help whenever required. Getting their views on how they want it to be done. Getting to know about the Debian community and their coding style.
26th April - 13th May:
- Talking with my mentors about the development of the API. Deciding all the functions to be incorporated. Discussing about the pros and cons a particular way to be followed while writing the code so that the code developed is efficient.
- Studying Django in detail.
14th - 27th May:
- Getting to know about the Debian community, mailing-lists, ways to interact with them, understanding the philosophy.
- Continuing studying Django.
28th May - 17th June:
- Start writing the code for the development of the API, focussing on the points discussed with my mentor.
- Communicating with my mentor on a regular basis and updating him about the progress of the code.
18th June - 1st July:
- Testing the code written with various test cases, looking for any bugs in the code and removing them.
- Documenting the API.
- Communicating with the mentor about the various styles of documentation, and discussing about which one to adopt.
2nd - 8th July:
- Testing and finalizing the code written for the API before the Mid Term Evaluations.
- Communicating with my mentor about the next step, which is the development of the web interface.
- Discussing and planning the way to implement the functionalities provided throught the API in the web interface.
- Getting to know about R scripts
9th - 15th July:
- Mid Term Evaluations
Discussing more about the web interface, pros and cons of ?JavaScript vs providing graphs generated on the server side through R scripts.
- Finalizing a plan, and starting to code for the web interface using Django.
- Primary objective to be kept in mind while coding in Django would be the Debian Website Style as described above.
16th - 29th July:
- Writing code for the web interface.
- Informing the mentors about my progress on a regular basis.
- Continuously testing the developed interface, as the API is already ready
30th July - 8th August:
- Testing the developed interface and the API. Bugs found in the code would be fixed.
- Documentation would be finalized.
- Any modifications to improve or optimize the code would be done in this period.
9th - 12th August:
- Ensuring that the project is working as it should be.
Exams and other commitments
- I will be having exams from (15-26th) May, regardless, I will start with the coding.
Other summer plans
- No
Why Debian?
- I have been using Debian for the past three-four months and I really like the concept of open source software. I wanted to contibute to the development of this OS and this project seems to be a good opportunity.
Are you applying for other projects in SoC?
- No.
Important Links:
[1] - http://teammetrics.alioth.debian.org/
[2] - http://wiki.debian.org/DebianWebsiteDiscussion#Step_1:_identify_needs
[3] - http://i.imgur.com/804Du.png
[4] - http://teammetrics.alioth.debian.org/
[5] - http://lists.alioth.debian.org/pipermail/teammetrics-discuss/
