From Fedora Project Wiki

< GSOC 2014

Revision as of 22:18, 16 March 2014 by Charul (talk | contribs)

Project Title : Shumgrepper

Personal Information

  • Name: charul
  • University: Indian Institute of Information Technology, Allahabad, India
  • E-mail: charul.agrl@gmail.com
  • Field of Study: Information Technology
  • IRC nick: charul at irc.freenode.net
  • Phone: 91-7505014697
  • Fedora Profile: charul
  • GitHub: charulagrl
  • Location: Allahabad, India, UTC +5:30

Goal

Shumgrepper is a web app built on the top of Summershum. Summershum is a project that collects md5sum, sha1sum and sha521sum of every file present in every package. This can be used to check how many packages have the full GPL license, how many files contains a particular hash sum in all Fedora or to check the database in taskotron test, etc.

I will develop web-frontend and json/api for the data generated by summershum. It will integrate most of the features of datagrepper. It will involve UI improvement to it in order to display the data generated by summershum. Apart from this the website will be vulnerable to DDoS attack, thus it will involve taking appropriate preventive measures. Also it contains secure hash values which needs to be protected.

Project Details

The project will mainly be divided into 5 phases.

Phase 1: Query building for Database

In this phase of development I will enable shumgrepper to query the database of summershum, and return results according to the request made.

  • Adding various arguments that will request data from the database according to it.

-- One of the filtering arguments can be ‘filename’ which takes filename as value.
-- Some other arguments can be ‘pkgname’ (takes package_name as value), tarfile, date,md5sum, sha256sum, sha1sum.

  • Add methods in summershum that will return data according to query made.
  • Format returned data in machine readable output like csv, json.

Phase 2: Web API Wrapper of the app

The development in this part is involved with defining the web API wrapper which involves defining the directory structure of the app. It also involves defining various end-points of the app. This can be implemented using flask framework.

Sample directory structure would be:

shumgrepper\
     shumgrepper\
       static\
           css\
               views.css
       templates\
           index.html
       docs\
       __init__.py
       views.py
       util.py
     summershum\
     fedmsg.d\
     run.py
     setup.py
     requirements.txt
     test-requirements.txt

Although it does not have model but has great similarity with MVC architecture as it contains view (templates) and the controller (views.py). views.py contain definition for various end-points.

Phase 3: Web-Frontend

In this part of development my aim is to build user-friendly web interface. For this, I will use mako template library to build the web-front end for end-points defined in the earlier phase. Apart from this I will also design and build the front page of the app.

As discussed earlier the website is suspected to various attack. One of the prominent can be DDoS attack. In order to prevent it, it is important to distinguish between legitimate website visitors and automated or malicious clients.

The above mentioned strategies can be implemented in the following steps:

  • Designing the front-end of the page and deciding what information to be displayed.
  • Converting json data into human readable strings using fedmsg.meta functions.
  • Improving styling(css) of the page as per design.
  • Front page may contain an odometer for count of different GPL Licence.
  • Front page may also contain a graph (package name v/s number of times it is bundled).
  • Embed a login system that ensures only authenticated users can use it.
  • Embed a challenge response(C/R) mechanism in the form of CAPTCHA.

Phase 4: Cross-platform testing

It involves integrating the app on other applications and testing it

  • This may require making amendments in the app.

Phase 5: Deployment

In this phase i will deploy the package Shumgrepper in fedora production environment. This will enable users to install it in other machines through yum.

It involves the following steps:

  • Packaging of Shumgrepper as rpm
  • Deploy the rpm file in fedora staging infrastructure to check if it works there.
  • Push everything out to the fedora production environment.

Deriverables

  • JSON/API of summershum
  • Web-front end of summershum
  • Testing the app on other applications
  • Manual and Documentation

Timeline

Period Task
April 22 - May 5 Community bonding, reading documentation and getting familiar with all the codes.
May 6 - May 18 Designing Phase - Work on Designing of the entire application.
May 19 Official GSoC coding period begins.
May 19 - June 9 (3 weeks) This time would be utilized for Phase I of the project i.e. Query building for Database.
June 10 - June 14 (2 weeks) Working on Phase II of the project.
June 15 - June 23 (9 days) Begin working on Phase III.
June 24 - June 27 Mid term evaluation period.
June 28 - July 7 (2 weeks) Continue Phase III which involve improving the index page and embedding security features.
July 7 - July 23 (2 weeks) Working on Phase IV which involves cross platform testing.
July 24 - August 4 (1 week) Working on Phase V which i.e. Deployment phase
August 5 - August 12 (1 week) Final phase of the project i.e. cleaning codes, documenting everything, reviewing all the functionalities

and fixing bugs.

August 12 - August 18 Pencils down period. Submitting the project for final evaluation.

About Me

  • I’m a Junior student at Indian Institute of Information Technology, Allahabad majoring in Information Technology.
  • I have worked on various projects in C/C++, Java and Python. I am also comfortable with Javascript, PHP, CSS and HTML and other python web development frameworks.
  • I have been using Open Source Softwares from many years but got the chance the contribute to these when I got selected in the Outreach Program for Women internship(Round 7) for a Fedora project Datagrepper.


Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?

In early May our summer vacation of college will start and ends by late of July; I can give my full time commitment to this project,. I assure dedication of at least 40 hours per week to the work and that I do not have any other obligations from early May till mid August.

Past Experience

I am Firefox Student Ambassador of my college and is involved in raising awareness about Open Source Software, FOSS organisation, Mozilla and its various products. I have always been involved in inspiring friends and juniors to contribute to open source projects. I have also given a talk in my institute to motivate people to apply for 'GSoc and OPW'. Besides this I have also organized many other coding events.

Apart from this, I am always interested to get more and more women involved in free and open source software.

OPW internship: Fedora-Datagrepper

  • Worked on the front-end of Datagrepper i.e. made html cards, improvement in CSS.1
  • Added an odometer on the front-page that displays the total number of messages. 2
  • Integrated datagrepper-messages into fedora-packages. 3
  • Made a Mediawiki extension that enables user to add datagrepper-messages on his/her fedora wiki user page.4

Link to pull requests:

Blog: http://honeycoding.wordpress.com