No edit summary |
No edit summary |
||
(11 intermediate revisions by the same user not shown) | |||
Line 34: | Line 34: | ||
<br/> | <br/> | ||
;Why do you want to work with the Fedora Project? | ;Why do you want to work with the Fedora Project? | ||
Fedora is my favorite Linux distro because I love its user friendly interface, support forums and best suited for my web application development environment. Recently I have worked | Fedora is my favorite Linux distro because I love its user friendly interface, support forums and best suited for my web application development environment. Recently I have worked on fedora-infra project for three months and I must say "it was an awesome experience". I also enjoy fedora community a lot, find everyone helping and always encouraging. Till now, I have contributed to only one project and I am looking forward to work more, contribute more and support more community projects. | ||
;Do you have any past involvement with the Fedora project or another open source project as a contributor? | ;Do you have any past involvement with the Fedora project or another open source project as a contributor? | ||
Line 60: | Line 60: | ||
|- | |- | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
I am | I am [http://www.mozilla.org/en-US/contribute/studentambassadors/ 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 encourage people to apply for 'GSoc and OPW'. Besides this I have also organized many other coding events. | 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 encourage people to apply for 'GSoc and OPW'. Besides this I have also organized many other coding events. | ||
Line 67: | Line 67: | ||
|- style="background-color: #e6e6e6;" | |- style="background-color: #e6e6e6;" | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
'''OPW internship: Fedora-[https:// | '''OPW internship: Fedora-[https://apps.fedoraproject.org/datagrepper/ Datagrepper]''' | ||
|- | |- | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
Line 98: | Line 98: | ||
I will develop JSON/API along with Web front-end for the data generated by summershum. It will integrate most of | I will develop JSON/API along with Web front-end for the data generated by summershum. It will integrate most of | ||
the features of [https:// | the features of [https://apps.fedoraproject.org/datagrepper/ datagrepper] along with user friendly real time visualization tool that will show ongoing changes in package hashes. The final web-app developed will be vulnerable to various attack like DDos, So I will ensure security against it by taking appropriate security preventive measures. | ||
|} | |} | ||
Line 127: | Line 127: | ||
</pre> | </pre> | ||
The above query will return output in json form. Sample output will be: | The above query will return output in json form. Sample output will be: | ||
{"sha265sum":36828180b4cc683a13c2192fa0cf20aad0cdbc6ef194a40f6d20047b68a02c1c,"sha1sum": | {"sha265sum":36828180b4cc683a13c2192fa0cf20aad0cdbc6ef194a40f6d20047b68a02c1c,"sha1sum":<br/>00014cdb3441f22fc1bcece2f94f29c29ab77fb2,"md5sum":5aaa3caaf74ff0dbe00d85e113253480,"tar_file":"aarch64-port-rc4.tar.xz",<br/>"tar_sum":8f359f63b6b09ecfaa40259427f133ad,"created_on":2014-03-08 21:36:14.421454} | ||
* Add methods in summershum that will return data according to the | * Add methods in summershum that will return data according to the arguments in query. | ||
* Format returned data in human and machine readable output like csv, json. | * Format returned data in human and machine readable output like csv, json. | ||
Line 148: | Line 148: | ||
shumgrepper\ | shumgrepper\ | ||
shumgrepper\ | shumgrepper\ | ||
static\ | static\ # contains web app images, css and javascript files. | ||
# Files within it are accessible to users via HTTP. | |||
css\ | css\ | ||
views.css | views.css | ||
templates\ | templates\ # store app's web templates | ||
index.html | index.html | ||
docs | docs | ||
__init__.py | __init__.py | ||
views.py | views.py # contains definition for various end-points. | ||
util.py | util.py | ||
summershum.models\ # files containing methods that will query summershum | summershum.models\ # files containing methods that will query summershum | ||
fedmsg.d\ # display fedmsg messages in human readable format | fedmsg.d\ # display fedmsg messages in human readable format | ||
run.py | run.py # used to run the server. | ||
setup.py | setup.py | ||
</pre> | </pre> | ||
Flask has a great similarity with MVC architecture as it contains view (templates), controller (views.py) and the model (summershum). | Flask has a great similarity with MVC architecture as it contains view (templates), controller (views.py) and the model (summershum). | ||
|- style="background-color: #e6e6e6;" | |- style="background-color: #e6e6e6;" | ||
Line 170: | Line 171: | ||
|- | |- | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
In this part of development my aim is to build user-friendly web interface. For this, I will use [http:// | In this part of development my aim is to build user-friendly web interface. For this, I will use [http://jinja.pocoo.org/ Jinja2] 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. | Apart from this I will also design and build the front page of the app. | ||
Line 198: | Line 199: | ||
* Packaging of Shumgrepper as rpm | * Packaging of Shumgrepper as rpm | ||
* Deploy the rpm file in fedora staging infrastructure to check if it works there. | * Deploy the rpm file in fedora staging infrastructure to check if it works there. | ||
* | * Pushing everything out to the fedora production environment. | ||
* Documentation of the work done till now. | |||
|- style="background-color: #e6e6e6;" | |- style="background-color: #e6e6e6;" | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
Line 205: | Line 208: | ||
| style="border: 0px solid white;" | | | style="border: 0px solid white;" | | ||
It involves integrating the app on other applications and testing it | It involves integrating the app on other applications and testing it | ||
* | * The graph shown in Figure 1 can be integrated in [https://apps.fedoraproject.org/packages/ Fedora Packages] in the description of each package. | ||
* It can also be integrated in [http://koji.fedoraproject.org/koji/packages koji] on the information page of each package. | |||
* | |||
* If time permits, i would try to integrate and test the app on other applications as well. | * If time permits, i would try to integrate and test the app on other applications as well. | ||
|} | |} | ||
Line 222: | Line 223: | ||
* JSON/API of summershum | * JSON/API of summershum | ||
* Web-front end of summershum | * Web-front end of summershum | ||
* | * Deployment of the app | ||
* Manual and Documentation | * Manual and Documentation | ||
* Testing and integrating the app on other applications | |||
|} | |} | ||
Line 266: | Line 268: | ||
|- | |- | ||
| July 11 - August 4 (3 weeks) | | July 11 - August 4 (3 weeks) | ||
| Working on Phase V which involves integration of the app in other applications. | | Working on Phase V which involves integration of the app in other applications and documentation. | ||
|- | |- | ||
| August 5 - August 12 (1 week) | | August 5 - August 12 (1 week) |
Latest revision as of 07:26, 21 March 2014
Project Title : Shumgrepper
Contact Information |
|
About Me |
Fedora is my favorite Linux distro because I love its user friendly interface, support forums and best suited for my web application development environment. Recently I have worked on fedora-infra project for three months and I must say "it was an awesome experience". I also enjoy fedora community a lot, find everyone helping and always encouraging. Till now, I have contributed to only one project and I am looking forward to work more, contribute more and support more community projects.
Yes, I have contributed to Datagrepper project and Fedora-Packages.
I have 3 years experience of coding in Python language which is basic required skill of the project. Project Shumgrepper will integrate most of the features of project Datagrepper. I have already worked on Datagrepper project and have better understanding of it. This project will involve developing the web-front end using python flask frameworks and I am already familiar with it. This makes me a strong candidate for this project.
No, I am applying to GSoC for the first time.
I would love to work more with Fedora-Infra team because projects are really cool and they completely intersect my line of interest. I was working on fedora badges for some times and this project will be my next checkpoint for contribution after gsoc.
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 encourage 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 |
Link to pull requests: |
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. It will bring up lot of new possibilities to developers, system administers and commiters by allowing them to verify the integrity and authenticity of a tarball, package or a individual source file. Not only this, it will help them in identifying changes made in packages and bundles by comparing check-sums. I will develop JSON/API along with Web front-end for the data generated by summershum. It will integrate most of the features of datagrepper along with user friendly real time visualization tool that will show ongoing changes in package hashes. The final web-app developed will be vulnerable to various attack like DDos, So I will ensure security against it by taking appropriate security preventive measures. |
Project Details |
The project will mainly be divided into 5 phases.
|
Phase 1: Query building for Database |
In this phase of development I will add methods that will query summershum database to get required data.
-- One of the filtering arguments can be ‘filename’ which takes filename as value. http get https://apps.fedoraproject.org/shumgrepper?pkg_name=java-1.8.0-openjdk &filename=/jdk8/jdk/test/java/rmi/reliability/juicer/OrangeImpl.java The above query will return output in json form. Sample output will be: {"sha265sum":36828180b4cc683a13c2192fa0cf20aad0cdbc6ef194a40f6d20047b68a02c1c,"sha1sum":
|
Phase 2: Web API Wrapper of the app |
The development in this part is involved with defining the web API wrapper which involves:
The implementation will be done using Flask framework as flask implements a WSGI application that allows you to easily create RESTful web services and make GET(as shown in phase 1) and POST request. Sample directory structure of the app: shumgrepper\ shumgrepper\ static\ # contains web app images, css and javascript files. # Files within it are accessible to users via HTTP. css\ views.css templates\ # store app's web templates index.html docs __init__.py views.py # contains definition for various end-points. util.py summershum.models\ # files containing methods that will query summershum fedmsg.d\ # display fedmsg messages in human readable format run.py # used to run the server. setup.py Flask has a great similarity with MVC architecture as it contains view (templates), controller (views.py) and the model (summershum). |
Phase 3: Web-Frontend |
In this part of development my aim is to build user-friendly web interface. For this, I will use Jinja2 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:
Figure 1: This is a sample graph showing the frequency of changes made in hashes of the file. |
Phase 4: Deployment |
In this phase i will deploy the package Shumgrepper in fedora production environment. This will enable users to install it via yum. It involves the following steps:
|
Phase 5: Integration |
It involves integrating the app on other applications and testing it
|
Deriverables |
|
Timeline | ||||||||||||||||||||||||||
|