- 1 Contact Information
- 2 About Me
- 3 Questions & Answers
- 3.1 Why do you want to work with the Fedora Project?
- 3.2 Do you have any past involvement with the Fedora project or any other open source project as a contributor?
- 3.3 Did you participate with the past GSoC programs, if so which years, which organizations?
- 3.4 Will you continue contributing/ supporting the Fedora project after the GSoC 2015 program, if yes, which team(s), you are interested with?
- 3.5 Why should we choose you over other applicants?
- 4 Proposal
- Name: Om Bhallamudi
- Email Address: om DOT bhallamudi AT gmail DOT com
- IRC Nick: Ethcelon in freenode/oftc/mozilla
- GitHub: https://github.com/Ethcelon
- Blog URL: omb.svbtle.com
- FAS Account: Ethcelon
- Fedora userpage: https://fedoraproject.org/wiki/User:Ethcelon
- Location: Visakhapatnam, India, UTC +5:30
- I am a third year Undergraduate computer science engineering student at GITAM University, Vizag, India.
- Testing is something I've learnt to love while contributing to Firefox-ui-tests, while I discovered Flask while writing tests and database code for centinel-server.
Questions & Answers
Why do you want to work with the Fedora Project?
I find fedora to be a good community with really helpful people. I want to be a part of this and contribute to the Fedora Project.
Do you have any past involvement with the Fedora project or any other open source project as a contributor?
I contribute to the Mozilla automation team:
Porting Firefox Ui Tests to python: https://github.com/mozilla/firefox-ui-tests/
Added a feature & wrote tests: https://github.com/mozilla/mozdownload
Added a feature (using mozlog): https://github.com/mozilla/mozmill-automation
I wrote code and tests for centinel-server: Centinel is a tool used to detect network interference and internet censorship. Centinel-server is a flask app used to communicate with centinel nodes.
Libpynexmo: Python nexmo API
I also opensource my own code:
API server for android app: (poll for updates) https://github.com/Ethcelon/carnival
Extracting university results data for data analytics: https://github.com/Ethcelon/gitam-results-scraping
Did you participate with the past GSoC programs, if so which years, which organizations?
No I did not.
Will you continue contributing/ supporting the Fedora project after the GSoC 2015 program, if yes, which team(s), you are interested with?
Yes! I would am interested in working with the fedora-infra team.
Why should we choose you over other applicants?
Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?
My summer vacation starts from May and will go on till June end. I have 2 days of planned travel in the 3rd week of June. Apart from that I am willing to put 35-40 hours a week towards completing and deploying Shumgrepper.
My project is to finish and deploy shumgrepper.
I have written some mockup code: https://github.com/Ethcelon/gsocprototype
Summary of idea: Finish and deploy the shumgrepper project
shumgrepper was started last year and offers an API to query the data stored by summershum. This data corresponds to the md5, sha1, sh256 and sha512 of every files in every packages in Fedora, allowing to easily find out files duplicated in multiple packages.
My idea is to Finish and deploy the shumgrepper project.
I have split my idea/process of completion into Steps:
1. Understand the codebase and learn the basics of ansible
2. Improving the existing codebase:
- Split the views in api.py and init.py using flask blueprints
We currently have the views in 2 files, one is api.py and other is __init__.py . I would like to split these into two blueprints, and register the api on /api url prefix. The documentation on flask.pocoo.org suggests that: Blueprints can greatly simplify how large applications work and provide a central means for Flask extensions to register operations on applications.
After doing this, we have a scalable structure for the flask application
. ├── shumgrepper │ ├── api │ │ ├── __init__.py │ │ └── views.py │ ├── __init__.py │ └── web │ ├── __init__.py │ ├── static │ ├── templates │ │ └── hello.html │ └── views.py ├── README.md ├── run.py └── tests.py
This involves writing tests for the endpoints for all the views and the methods in utils. We can write tests for this flask app using unittest. We can also choose to use Flask-testing extension.
class myTest(unittest.TestCase): def setUp(self): self.app = app.test_client() def test_api_mock(self): url = '/api/packages' response = self.app.get(url) self.assertEquals(response.status, '200 OK') self.assertEquals(response.data, '["package1", "package2"]') def test_web_mock(self): url = '/hello' response = self.app.get(url) self.assertEquals(response.status, '200 OK') if __name__ == '__main__': unittest.main()
Write documentation for the views and utils.
3. I would like to add the following features to shumgrepper:
- Improve the file browser at /packages
- Have another way of viewing, like a tree: Put a [+] in front of the folder names to open and close folders.
- Give option to order the list of files by name/date modified.
- We can compare two different versions to see the differences. This can by done by providing visual cue using different colour such as green for unchanged and orange for changed.
- Shumgrepper is to be deployed using apache and mod_wsgi.
THis is again divided into these steps:
- Package the dependencies for YUM, if they aren't already packaged.
note: We don't use pip to install dependencies
- Using Ansible:
- Ansible is used to automate IT tasks.
- Ansible will be used to setup and manage the following:
- Server and it's configuration files (Apache)
- flask, fedmsg, summershum, and the other dependencies
- Install dependencies using YUM.
- For this we can use the package management module of ansible.
- Run shumgrepper
In this step I shall be writing the necessary .yml config files required by ansible, white taking cues from the ansible config repository of fedora.
- Finish the documentation on how to set up the stack
March, April & May:
- Learn ansible and understand the current codebase.
25th May to 2nd June:
- Refractor directory structure to support blueprints
- Split shumgrepper into respective blueprints
- Write documentation (continuous)
2nd June to 30th June:
- Write tests
- I can also use Flask.ext.testing to make this easier.
- Add the new features
- Finish documentation for the new features.
- Mid term evaluation
30th June to 10th July:
- Write tests
- Write ansible .yml files and setup server
- Package python modules for installation with yum
- Start deployment
- Community feedback & make requested changes
26th July to August 17:
- Finish deploying shumgrepper
- Finish packaging for yum.
- Community feedback & make requested changes
- Finish documentation for setting up stack and deploying.
Firm 'pencils down' date.