User:Kushal124/A system for reviewing funding requests GSOC

From mediawiki.org

A system for reviewing funding requests[edit]

Public URL
https://www.mediawiki.org/wiki/User:Kushal124/A_system_for_reviewing_funding_requests_GSOC

Project Idea

https://meta.wikimedia.org/wiki/Grants:IdeaLab/Application_scoring_system

Announcement
http://lists.wikimedia.org/pipermail/wikitech-l/2014-March/075396.html

Name and contact information[edit]

Name
Kushal Khandelwal
Email
kushal124@gmail.com
IRC or IM networks/handle(s)
kushalk124 , kushal124 , kushalkhandelwal
Web Page / Blog / Microblog / Portfolio
http://kushalkhandelwal.com , http://kushal124.wordpress.com
Twitter
@kushal124
Facebook
https://facebook.com/kushalkhandelwal
GTalk
kushal124
Github
https://www.github.com/kushal124
Skype
kushalkhandelwal
Resume
https://www.mediawiki.org/wiki/File:Kushal_Khandelwal_Resume.pdf
Location
Goa, India GMT +5:30
Typical working hours
9AM -12 , 2PM-5PM , 8-10PM , 11PM-2AM ( All in GMT +5:30 )

Synopsis[edit]

Individual Engagement Grants support Wikimedians to complete projects that benefit the Wikimedia movement. This project aims at making the review process for Grant Campaigns a bliss for administrators.

Probelm trying to solve ?[edit]

Individual Engagement Grants review process currently uses an ad hoc scoring system involving Google Forms to collect input from reviewers. It is unwieldy and won't scale well as we have more proposals to review. This system is not very efficient and user friendly.

Findings from initial investigations into alternative solutions:

  • The movement has demonstrated a need for scoring tools - many other programs across the Wikimedia movement are also using Google Forms to score applications for things like scholarships.
  • Outside of our movement, other grant programs that use group review processes on large numbers of applications often do so in-person - applications are physically scored and marked.
  • Wikimania scholarships rely on a scoring system that is hosted by WMF. This system appears to have functionality that could meet needs for IEG and other programs where scoring is needed, but the current application is not flexible enough to be extended for uses beyond Wikimania scholarships. A new application could be built off of this existing code base, if necessary.

Benefit to Mediawiki[edit]

This project would solve a major issue faced when reviewing application for Grants. It would establish an unified Application Review system which can be used by other wikimedia programs.

Goals for Project[edit]

  • Develop a standalone application for IEG Grant campaign management. This application should have modules for Campaign Creation , Proposal Review , Campaign Statistics.
  • Extend this application to adapt to needs of other programs like Travel Grants, Project Grants etc.
  • Create a Reviewer Dashboard

Possible mentors[edit]

Siko Bouterse (Grantmaking), Bryan Davis (Platform Engineering), Dan Garry (Product/Platform Engineering)

Deliverables[edit]

S.No. Description Optional/Required Category Deadline
1 Standalone Application for Grant Review. Modules to be included - Campaign Creation , Reviewer Selection , Fund Management , Proposal review , Campaign Statistics Required Coding
2 Unit tests and Integration Test Required Testing
3 Documentation with use case examples Required Documentation
4 Final deployment and testing on Wikimedia servers. Required Deployment
5 Extension to other grants Optional Coding
6 Creation of a Total Grant stats page. This page would list down total grant requested , total grant approved , Project Categories for which grant requested , Approved projects and other statistics. ( Rough Idea ) Optional Coding

Please describe the details and the timeline of the work you plan to accomplish on the project you are most interested in (discuss these first with the mentor of the project):

Approach[edit]

User Roles[edit]

To understand this problem we need to first look at the users and their roles. ( Initial data from [1])

User User Role
Grant Administrator
  • create new grant campaigns (defining reviewers, review criteria, data to be reviewed, and data grouping)
  • Mark grant applications eligible/ineligible
  • Approve grant applications on basis of review.
  • Publish consolidate review score for all applicants.
Grant Reviewer
  • Review Applications on Review Criteria.
  • Put reviewer remarks.
  • Score applications.
  • Mark whether applications are spam or not.
Grant Applicant
  • Apply for Grant.
  • Fill in all necessary details including user name.
  • Create a detailed grant proposal.

If in the application we do not want to provide interface for Call for Application ( Grant Application ) then for the reviewer we can list all the pending applications from Idea lab on their dashboard for review.

Dashboards[edit]

  1. First dashboard will show the Active and past grant campaigns. This page would have links to campaign page , propsals.
  2. Second dashboard would be an Administrator dashboard where is the administrator can manage entire campaign variables ( set reviewers , decide review criteria , mark applications as spam , Set total grant budget etc)
  3. Third dashboard : Reviewer dashboard. On this page the reviewer can see proposal pending for review. Each proposal would be presented with criteria for review. The reviewer can score the applications on the given criteria and can leave feedback. Also the reviewer can mark applications as ineligible or as spam.

Modules[edit]

Module 1 - Administration Module

*Create a new campaign.
* Set Campaign Review criteria.
* Set campaign details like Name , Start and End Date
* Add/Delete users
* Add Reviewers  

Module 2 - Reviewer Module

* Score application based on review criteria.
* Leave feedback note
* Mark application as eligible/ineligible
* Mark application as spam
* View applicant details
* View proposal details

Module 3 - Reportting

* Aggregate reviewer feedback and scores.
* Show final rating for each proposal in a campaign
* Campaign allotted budget.
* Gather Stats about users.

Milestones[edit]

Here we list the major milestones to track the progress of the project. Need to define final milestones before start of project.

S.No Description Estimated Date of Completion Current Status Addition notes
1 Database Design
2 Fronted and Backend code for module 1
3 Frontend and Backend code for module 2
4 Reviwer Dashboard
5 Initial Deployment test

Timeline[edit]

Before Actual GSOC Period[edit]

Date Goals Status
23 Mar - 30 Mar
  • Refine Proposal Yes Done
  • Talk to Application users and take their input. Yes Done
  • Learn more about Mediawiki and coding practices. Yes Done

Spoke to Siko on google hangout. Call for application module not needed. This module would be optional. Described how the UI could be. Need to make mockups.

31 Mar - 10 April
  • Minimal Activity as College Mid semester ExaminationsYes Done

Learnt about Slim framework. Solved a micro task. Looking at community deployment practices.

11 Apr - 20 April
  • Create initial Workplan.In progress In progress
  • Set up working environment.
  • Finalize Project requirements.

During GSOC Period[edit]

An estimated timeline for the project

Date Goals Status
22 April - 29 April Community Bonding
  • Learn about Organization Process
  • Learn about Code of Conduct
  • Interact with other developers
  • Start exploring other open source project which might be useful.
  • Explore Wikimania Scholarship App and see if it can be utilzed for the current project.
30 April - 4th May Community Bonding
  • Talk to probable users of this app and list down requirements.
  • Create initial project draft and discuss with Grants and Scholarships team for their feedback.
  • Define project goals and purpose. Create and initial roadmap.
  • Finalize on technology to be used. PHP and other Javascript libraries. MVC Framework ?
5 May - 17 May Community Bonding
  • Minimum activity ( Semester End Exams)
  • Some small discussion before starting actual work.
19 May - 26 May Coding Period
  • Finalize project draft requirements and start coding.
  • Create a Feature Summary report.
  • Finalize Technical Specifications
  • Technology Selection
27 May - 2 June Coding Period - Initial Mockups
  • Prepare interface design.
  • Wire framing of the application
  • Design Database structure.
3 June - 20 June Coding Period
  • Develop initial Application Modules.
  • Create Basic Dashboards and link with database.
21 June -22 June Mid term Evaluation
  • Intial bug fixing and testing.
  • Check for database connectivity
  • Complete initial documentation and finish with unit/integrations tests.
23 June Mid term Evaluation Submission
  • Submit mid term evaluation form
  • Take community and mentor feedback.
  • Further plan to meet deadlines and clear backlogs if any.
  • If possible initial deployment on Wikitech Labs.
26 June - 12 July Coding Period - Phase 2
  • Develop other modules.
  • Finish with basic dashboards.
  • Check for bugs.
13 July -20 July Coding Period - Phase 2
  • Taking design inputs from Design Team.
  • Beautify frontend ( Dashboards). Write CSS templates and add client side form validations.
  • Finish modules for all the requirements.
  • Write complete unit tests.
21 July - 28 July Coding Period - Phase 2

Beta Testing and Deployment

  • Deploy final application on Wikitech Labs
  • Take reviews from community and user.
  • Invite beta testers.
29 July - 10 August Coding Period - Phase 2
  • Bug fixing.
  • Finish with documentation and coverage tests.
  • Extend application to other Grant Making programs ( Optional )
  • Quality assurance and security testing for Mediawiki deployment. Need to meet mediawiki requirements.
11 August - 20 August Pencils Down Date
  • Final code review.
  • Bug Fixing
  • Documentation
  • Final code submission
20 August -10 September Make application ready for 2nd round of IEG
  • Deploy final application.
  • Fix on bugs.
  • Add new features

Participation[edit]

  • Working on open source software and collaborating is always challenging. So to adjust with time zone differences I generally tend to work in 3 shifts ( 9AM -12 , 2-7 , 10PM-2AM all GMT +5:30 ). I love to always work on new methods and try to approach problems in all possible ways. I am very well acquainted with open source collaborations and working in teams.
  • For this project I would request for a git Repository on mediawiki servers. This would enable wider community participation and visibility of project. Also code reviews would be very easy. Once we have a working git repo and a project with mediawiki , I can have all features required as bugs in bugzilla. All the listed bugs/enhancements can be tabulated as project milestones. This would ensure timely development and easy management of the project. I would also open a tracking bug on bugzilla.

If the above is not possible, I would host all my code on Github.

  • I would also be writing a weekly blog post describing my progress on projects and defining tasks for upcoming weeks. Also in the blogpost I would like to share my experience working on this project , discussing potential pitfalls and the development cycle.
  • Also for the community to keep track of the progress , I would be maintaining a WIP(Work In Progress) table in a wiki like the one is milestones which would indicate current milestone and track the status of the project.
  • For communication with mentors I would mostly prefer discussing the project on Wikitech Mailing lists and project talk page. However, I would love to keep most of the discussions on the mailing list as it would give the project exposure to a wider audience and wider feedback.
  • To make sure that we are able to complete this project on time I would prefer to work with weekly deadlines and at least biweekly reviews. Weekends can be used for code sprints to catch on any pending weekly targets. I think this would ensure timely completion.
  • If stuck at some point I would first refer to available resource ( Stackoverflow , Google, Documentation ) and then take help from mentors and community.

Input From Mentors[edit]

  • Help in prioritizing work.
  • Overlooking the entire project progress
  • Providing feedback and discussing features

About Me[edit]

Education completed or in progress
In Progress. Currently in 4th year of undergraduate degree at BITS Pilani Goa campus.
How did you hear about this program?

Google open source blog.

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

No commitments during the project timeline. Next semester of college would start from 11th August 2014.

We advise all candidates eligible to Google Summer of Code and FOSS Outreach Program for Women to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?

Applying only for GSOC.


Hi , My name is Kushal Khandelwal. I am currently pursuing B.E in Electronics and Instrumentation with Msc.(Hons) Chemistry under the dual degree scheme of BITS Pilani KK Birla Goa Campus. This is my 4th year of the 5 year course in college.
I am very much interested in employing machine learning techniques in various fields like Computational Medicine, Business Analytics and others. Also I am quite interested in Image Processing applications and recently have been working on Image Processing and Machine learning.
I am currently studying Electronics and Instrumentation at my university. Over the course of time I have developed interest in fields of Machine Learning ,Image processing and Web Development. I love teaching my juniors. I sometimes organize lectures on image processing and machine learning for juniors. Also I plan to write content for Wikibooks on these topics.
I am an open source enthusiast. I am currently a contributor to Fedora Project. 2 years back I completely switched to linux. On my current machine I am running Fedora 20. For all my development and college purposes I try to use open source applications. In my free time you can find me idling on some open source communities IRC channels or learning some courses in Coursera and Udacity.
I am an open source enthusiast who loves to share his knowledge. Wikimedia foundation has made sharing of knowledge easy and accessible to all. This is what makes me love wikipedia more. I think everyone has a right to education and open access to world information and this is what Wikimedia foundation is doing.
I recently got introduced to Individual Engagement Grants program at Wikimedia. After learning more about this program I felt the urge to propose a project on Machine Translation using wikipedia. Although it is too late for me to apply I would still give it a try. Making the review process easy and comfortable for such grants would help Wikimedia Foundation Employees and reviewers an easy task. This should help the give more time on assessing all crucial aspects of the project with ease and have a solid scoring system. I think this project would be very beneficial and thus I would like to contribute to this project

Technical Skills[edit]

Web Development Skills : HTML, CSS, PHP, Javascript,MySql , MongoDB, Jquery, Django Framework

Languages Known : Python, Ruby, C

Others: System admin tasks, Hadoop, MPI

Interests[edit]

  • Web App Development
  • Data Mining, Analysis and Visualization
  • Machine Learning, Natural Language Processing
  • Image Processing
  • Computational Chemistry
  • Applications of ML in biology.

Past Project[edit]

  • Design and Development of Rajasthan Government’s Web Portal ( Mock website during my internship
Design Mockups in Photoshop , HTML and CSS frontend. Backend PHP and Mysql.
  • Applications of Machine learning in Computational biology to find protein binding sites.
Project developed using Python and scikit-learn library.
  • Design and Deployment of LDAP based user authentication model for all Student Hostels at BITS Pilani, Goa.
  • Image Processing based OMR and Text scanner
Python and scikit-image

Development Environment[edit]

  • Running Fedora 20 on a Lenovo Machine
  • Text Editors used : vim, Sublime Text 2

Past experience[edit]

Please describe your experience with any other FOSS projects as a user and as a contributor

I have used various FOSS Projects like scikit-image, scikit-learn , Fedora. Currently I am learning to package for Fedora. Attending weekly meeting at Fedora has given me a good experience on collaborating on open source projects.

Also I have been a contributor to a project called Phenotips. Working on this project has taught me how to file bugs and write patches.

Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links)

Phenotips. I have solved a few bugs for Phenotips project. Link : https://github.com/phenotips/phenotips/commits?author=kushal124

What project(s) are you interested in (these can be in the same or different organizations)?

Bug Fixes Bug: 62464 Bug: 62963 Bug: 61665

Any other info[edit]

Optional Modules[edit]

These modules may be built in the application at a later time to extend its utility.

Module - Applicant Module (Optional)

  • Apply for Grant
  • Check Status of Grant Application
  • Provide with Idea proposal
  • Edit previously submitted application

See also[edit]