User:Vinay raghavan/GSOC2014 proposal

WikiMedia Identities Editor

 * Public URL: https://www.mediawiki.org/w/index.php?title=User:Vinay_raghavan/GSOC2014_proposal
 * Bugzilla report: (https://bugzilla.wikimedia.org/show_bug.cgi?id=58585)
 * Announcement: (link to the announcement of your proposal at the wikitech-l mailing list.

Name and contact information

 * Name: Vinay Raghavan
 * Email: catchupwithvinay@gmail.com
 * IRC or IM networks/handle(s): vinayraghavan
 * Resume (optional):
 * Location: Mangalore, India
 * Typical working hours: 8:30am to 11:30am and 3:00pm to 1:00am

Synopsis
This project is a web-application used to keep a track of the identities of the contributors to the Wikimedia community.

Wikimedia has a community metrics page used to update the activities and to keep a track of the contributors to WikiMedia.

With the large number of bug fixes, commits etc., such a big open source community can be difficult to track. The community spans different parts of the world with contributors coming from different localities. As such a proper website is required where individuals can login and update their credentials and their user accounts can be a means of maintaining an online identity of each individual.


 * Possible mentors: Alvaro del Castillo, Daniel Izquierdo

Deliverables

 * An online platform for maintaining identities of contributors
 * An authentication mechanism using OAuth
 * A search and filter feature for users to search information on other community members
 * Optional: Mining information about a user's contributions from the Community Metrics Page
 * Optional: Displaying data visualizations of a user's contribution

before 19th May: Community Bonding Period

 * Interacting with the mentors
 * Refining my approach to the project based on mentor’s suggestions
 * Creating a wire-frame and a design layout for the website
 * Familiarize myself with open-source approaches to development
 * Reading the documentations required for the project

19th May to 25th May: Basic setup of the project

 * Setting up the basic Django project
 * Creating simple pages(Django templates) based on the wire-frame done earlier. This will be simple pages with minimum design(just for the purpose of testing the back-end easily)
 * Creating basic user login/authentication

26th May to 29th May: Investigating authentication techniques

 * Understanding the current authentication techniques used by MediaWiki
 * Discussing with mentors the right approach to creating an authentication model for the website

30th May to 6th June:Implementing OAuth

 * Setting up an authentication system using OAuth

7th June to 22nd June: Allowing users to add and modify data

 * Modifying the database(models.py) with regard to how the information about a user needs to be stored
 * Employing Django permissions/groups on models.py to ensure right amount of permissions are given to a particular group of users
 * Optional: Mining the information from the Community Metrics(if needed) or using any available feature(like an API if available) from MediaWiki

28th June to 7th July:Improving management of user accounts

 * Allowing user accounts to be categorized based on user’s details/contribution or based on information from the community metrics
 * Adding feature of allowing multiple collaborator accounts to be synchronized
 * Adding features of communication between multiple user accounts(needs to be discussed with mentor first)
 * Creating an admin page(using admin.py) to make it easier for adding entries to database which will be required for testing the application during the development

8th July to 10 July: Investigating search options

 * Discussing with the mentor on the best techniques for implementing search on a website
 * Understanding various libraries aiding in search such as Django-spinx, Whoosh or Haystack and selecting one (by taking suggestions from the mentor)
 * Reading the docs and understanding the usage of the selected library or app

11th July to 14th July: Implementing search options

 * Adding scripts for implementing search features(query, indexing etc.)
 * Adding filters for search to allow results to be narrowed down based on certain criteria/categories

18th July to 25th July: Final front-end/Design

 * Creating simple and elegant pages(Django templates) for the website
 * Employing a responsive framework(like Twitter Bootstrap) to provide a better UI for mobile device viewers
 * Using AJAX for loading search results
 * Optional: Using d3.js for creating data visualizations based on a user’s contributions

Communication

 * IRC: vinayraghavan
 * email: catchupwithvinay@gmail.com or vinayraghavan@outlook.com

Publishing source code

 * Git-Hub: https://github.com/vinayraghavan  (I could also use Bitbucket if the mentors prefer Mercurial)

Asking for help

 * I normally get most of my doubts cleared after a quick Google search.
 * Documentations are a good place to look for working examples. Django has by far one the best documentations
 * Most of the questions I would ask the mentors would be based on methods to follow, the right approach or "is there a more efficient way to do this?"

About you
I’m currently pursuing my undergraduate studies in Electronics and Communication Engineering. I have a huge interest in software particularly in the way it affects people's lives. Ever since my curiosity led me to installing Ubuntu(rather than Windows) in my laptop, I have been a follower of Open Source technologies. I think the best thing about the MediaWiki community is the way it operates - everything is open and everyone is a contributor(just the way i like it). My ultimate dream is to have my own startup and to be significant contributor to the Open Source culture.

I've always fancied myself as a 'product person'. This project will be ideal for me since it is all about creating a product that is ease of use, simple and open. It is the kind of product that I always like making. All the projects that I have done in my spare time(not during internship) have been easy, simple and open. So I'm quite confident that I'll make this project awesome!

I heard about this program in a blog post a year back (at http://www/readwriteweb.com)

I will be able to work full time for this program(since my vacations would be going on), except for the first 16 days due to my exams(when I will be able to work only part time in the evenings).

RSS Analyzing Tool
A web-application built using Django that aggregates RSS feeds from a set of specified RSS links. A tag cloud is generated based on the frequency of bi-grams. This tool is useful in getting quick knowledge about what a particular blog normally posts about. The other options in the app were a simple feed reader and a TweetDeck style feed reader. [created this application as a part of my internship]

Twitter Entity Extraction
A web-application built using Django that takes a text input from the user and searches twitter for related tweets. All the tweets are then passed through the OpenCalais API which breaks the tweets down to its entities(company, technology, person). This app is used to know what people mention when they discuss a particular topic. e.g. what companies do people mention when they talk about 'cloud computing'? [created this application during a hackathon called 'in50hrs' conducted by one of the most popular startup incubators in the country - "The Startup Center"]

Cloud Storage Management
A desktop application built using Python. It is a way of controlling all your cloud service accounts in one place. We used wxPython for the GUI. It takes a large file and splits it into byte chunks and sends it to the server one chunk at a time. It is an unreadable format after broken into chunks. It improves security since the chunks can go to different accounts. It gets merged when downloaded. I would also like to add that we didn't corrupt a single file during all of our testing. [Created this with a group of my friends using C# during a Windows 8 hackathon conducted by Microsoft then recreated it using Python for a project competition conducted in my college]

Company website
Created two websites for the company I was working for during my second internship. The website was created using WordPress so I have some experience creating simple WordPress plugins and child themes using PHP.

Social network job search
As a part of my current internship, I am making a job search that mines social networks(Facebook and LinkedIn) for job updates. The jobs are then categorized and the data will be then used by the employees of the company(since the company deals with staffing and recruiting). The app is being made using Django.

Small open source scripts
I have also made a few open source Python scripts that can be found in my github account: https://github.com/vinayraghavan

Any other info
GitHub: https://github.com/vinayraghavan