==Profile Information
Name: Sagorika Das
IRC nickname on Freenode: sagorika1996
Github Profile: https://github.com/sagorika1996
LinkedIn Profile: https://www.linkedin.com/in/sagorikadas/
Web Profile: https://sagorika1996.github.io/resume/
Resume (optional): [[ https://drive.google.com/file/d/0BzCkdJoLpNdTSGhlRVM3eEJQdEE/view?usp=sharing | Link ]]
Blog Profile: https://medium.com/@sagorika1996
Location (country or state): New Delhi, India
Typical working hours (include your timezone): 12:00 - 03:00 (UTC+5:30)
==Synopsis
**Short summary describing your project and how it will benefit Wikimedia projects**
A collection of records that reflect your accomplishments, experiences, attributes and highlights samples of some of your best work provides tangible proof of your skills and abilities. It also motivates you to expand on your skills, knowledge, projects and experiences.
Therefore creating a tool to summarize the contributions made by a user would be a step in the right direction to encourage more users to participate in Wikipedia projects.
Due to the highly collaborative nature of Wikipedia, the value of one's participation is hard to measure for an outsider and it's very hard for contributors to take credit for the value added to Wikipedia.
Some of the key objectives of the project are:
# Showcase contribution as a proof of editor's skill and dedication.
# Summarize the data in a manner which is understandable for someone not familiar with Wikipedia contributions.
# Requiring opt-in from the user before making their data public and providing the user with the ability to customize the information presented about them. This is to avoid people getting negatively affected because of the way information is presented about about them.
# User Interface should be apt for professional purposes.
**Possible Mentor(s):**
@Tgr, @Slaporte
**Have you contacted your mentors already?**
Yes
==Deliverables
**Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation**
NOTE: The [[ https://github.com/sagorika1996/outreachy-mockup/blob/master/README.md | list of features ]] will be broken down into 4 parts. Each part is allocated two weeks time and developed in the following phases:
# Analyze the features and work on the design and representation of the features. Discuss with the mentors about the same. Research and resolve the working of the backend i.e figure out how the data will be collected ([[ https://www.mediawiki.org/wiki/API:Main_page | API]], [[ https://www.mediawiki.org/wiki/Manual:Database_layout | database]], [[ https://www.mediawiki.org/wiki/ORES | ORES ]]) and presented (handling the case when data collection is slow).
# Backend and frontend implementation
# Testing
# Documentation
# Making revisions based on feedback.
---
===Detailed timeline:
- !!Nov 09 - Nov 23!!
- Community Bonding Period.
- Detailed discussion with mentors regarding project sub tasks and milestones.
- Increasing project understanding.
- Learning about the community and their expectations about the tool.
- Learn about existing similar tools (eg: [[ https://xtools.wmflabs.org/ | xtools ]]) and ideas.
- Improve knowledge about the technologies and environment that is going to be used for the production of the tool.
- !!Nov 23 - Dec 07!!
- Community Bonding continues.
- Familiarize myself with the [[ https://www.mediawiki.org/wiki/API:Main_page | MediaWiki API ]] and [[ https://www.mediawiki.org/wiki/Manual:Database_layout | database layouts ]].
- Come up with various features that could be included in the tool. Discussion with mentors about the same.
- Working on the design of the selected features for the UI.
- Defining the scope for the project.
- Community bonding period report.
- !!Dec 07 - Dec 14 (Week 1)!!
- Bootstrapping the project.
- Setting up the project: Choosing frameworks for backend and frontend, setting up the development environment and the continuous integration.
- !!Dec 14 - Dec 28 (Week 2, 3)!!
- Features: contribution calendar/graph, user profile overview, badges.
- Implement the backend (data collection and presentation): types of badges and retrieval of the required data, retrieval of data for contribution calendar/graph.
- Work on the frontend design and representation of badges, user profile, contribution graph.
- !!Dec 28 - Jan 11 (Week 4, 5)!!
- Features: pinned articles, top X percentile in Y category tag, contribution list with filters.
- Implement the backend (data collection and presentation): customization of the pinned articles, collection of data for percentile tag, extraction of contribution list, types of filters.
- Work on the frontend design and representation of the selected features.
- !!Jan 11 - Jan 18 (Week 6)!!
- Complete pending reviews
- Testing and making revisions based on feedback.
- Bug fixes
- Code cleanup
- Reviewing and improving documentations.
- !!Jan 18 - Jan 20 **(Mid term evaluation)**!!
- Get the initial working prototype ready.
- Midterm self evaluation report.
- Feedback from mentors on the progress
- !!Jan 20 - Feb 01 (Week 7, 8)!!
- Features: timeline of events to showcase in detail every important event in a chronological manner.
- Implement the backend (data collection and presentation): research about various attributes, select and extract important attributes that needs to be represented in the timeline.
- Work on the frontend design and representation of the timeline.
- !!Feb 01 - Feb 08 (Week 9)!!
- Provide API for the tool so that other tools can fetch and use the data.
- Providing documentation for the APIs
- Testing the APIs.
- Implement OAuth
- !!Feb 08 - Feb 22 (Week 10, 11)!!
- Add functionality of letting the user customize the user profile and how the contributions are presented.
- Provide with an UI similar to a settings page, where all the configurations of the tool are available to adjust.
- Add rating feature: Define an algorithm to calculate a user's rating taking into account factors such as edit count, pages created, top editor of featured article and more.
- !!Feb 22 - March 01 (Week 12)!!
- Final testing and making revisions based on feedback.
- Complete pending reviews
- Bug fixes
- Code cleanup
- Complete documentation
- !!March 01 - March 05!!
- Wrapping up the project.
- **Final evaluation**: Self evaluation and final feedback from mentors.
- !!After Internship!!
- After internship I will continue contributing to Wikimedia projects.
---
===Milestones:
!!Jan 18 Midterm:!!
- Initial working prototype is ready
- Features implemented:
- contribution calendar/graph
- user profile overview
- badges
- pinned articles
- top X percentile in Y category tag
- contribution list with filters
!!March 05 Final:!!
- Final product is ready
- Features added to the existing tool:
- timeline of events to showcase in detail every important event in a chronological manner
- functionality of letting the user customize the user profile and how the contributions are presented
- UI similar to a settings page, where all the configurations of the tool are available to adjust
- rating feature
==Participation
**Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc**
- I'll use Phabricator to manage the sub-tasks and also to communicate the progress by discussing the issues and getting feedback on them.
- I'll be active on IRC and Slack during my work hours. I'll also be available on Gmail for sharing work status and related documents.
- I plan to publish source code on GitHub and get feedback on the same.
- I also plan to publish weekly reports about my progress.
- I plan to have a one-on-one each week with my mentors discussing status of the tasks
==About Me
**Your education (completed or in progress)**
I am in my fourth year of my undergrad majoring in Computer Science from Netaji Subhas Institute of Technology, Delhi. I am passionate about technology and for me, the most attractive aspect of technology is problem solving. Problem solving is a challenge I have always loved – from completing puzzles at home through to programming at university.
**How did you hear about this program?
**I got to know about the Outreachy program through a friend, who participated in round 13.
**Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
**For the first 7 weeks of the internship period, I'll have my semester break and will not be enrolled in any course at my school, therefore will be able to work full-time. From fourth week of January, my college will reopen (eight semester).
Academic Calendar: [[ http://updates.collegespace.in/wp-content/uploads/2016/06/notice.jpg | Odd Semester]], [[ http://updates.collegespace.in/wp-content/uploads/2016/12/imageedit_1_5188409086.jpg | Even Semester]]
**What does making this project happen mean to you?
**As I was browsing through the available project list, I got interested in this project. Wikipedia, a self-governing system that creates positive externalities. Contributing to Wikipedia is educational and it gives a sense of being part of an exciting development. It is used by millions of people around the world and I think it would be great to work on a project which has the potential to increase user contribution and make Wikipedia even better.
For the past three years I have been an active member of [[ http://csinsit.org/meet-the-team.php?year=15 | Computer Society of India, NSIT ]] where my work aimed at providing free knowledge and resources to students. I have conducted numerous programming(data structures and algorithms) workshops and classes. Wikimedia can be held up as one of the best examples of a free content project, and it would be a privilege working for it.
More than anything else, I see this as an amazing learning opportunity. I am relatively new to open source but I believe that it's possibly the best way to increase one's knowledge in a particular technology. I enjoyed doing the micro-tasks and that is why I decided to take this project up.
==Past Experience
**Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so**
===Work Experience
- !!SWE Internship at Google Bangalore:!!
The project undertaken during the internship was to design and implement Onepick Nextgen Youtube Picker from scratch which improved the existing video picking experience by providing for search query autocomplete, material and responsive UI(mobile webview, sidebar and dialog compatible), simplified API, video previews and play functionalities. Some of the technologies that I worked with were JavaScript, Java, Soy, Closure, Guice, Youtube API. It taught me how to work and find my way in a large codebase. Something which I found particularly amazing was code review. My code would get reviewed by at least 3-4 people which not only improved my dev skills but also the code quality in general. I had much independance of the design choices and solutions to take and I enjoyed that.
- !!Researcher at Netaji Subhas Institute of Technology:!! The project aimed at detecting various formats of tables in document images of different layouts and extraction of the tables' structural and textual contents. Technologies used to implement the project are Python, Tesseract open source engine. This was my first experience in doing a project in the research field and it exposed me to the field of Computer Vision. This taught me how to abide by the principles of working in a research environment, ask the right kind of questions, and deal with seemingly insurmountable problems that had no obvious solutions.
===Other projects
- !!Dynamic Gesture Recognition!!: The project uses a cross of Computer Vision and Machine Learning algorithms to recognize hand gestures in the wild. This is my first project in the field of Machine Learning. I started learning and understanding various concepts and algorithms of ML. The project helped me to apply the various ML concepts that I learnt in theory to practice. It taught me how to implement a model and tune its parameters. I learnt that research, feature engineering, and training process adjustment can sometimes be more art than exact science. There are lots of neat techniques that I applied to get the perfect model for the problem. Link: https://github.com/sagorika1996/Dynamic-Gesture-Recognition
- !!Taxi service Management System!!: The project is an online Taxi Service website providing transport to people in the city. There are two interface to this web app. The administration interface where the admin can view and update all records. The project is designed using MySql, PHP, JavaScript and Bootstrap. Through this project I learned how to implement various concepts of database systems. Also I got hands on practice of converting ER diagram to schema diagram. Link: https://github.com/sagorika1996/RnR-Taxi-Service
- I started off with coding in my first year of college and I think the best way to learn a language is to implement a mini-project. While learning Java and C, I built the following projects:
# !!Text Editor Java Applet!!: A java graphics based applet that facilitates editing plain text files. Link: https://github.com/sagorika1996/JEditor
# !!Bank management System!!: A Management System which keeps record of bank accounts and lets users place orders. It is based on the concept of file handling. Link: https://github.com/sagorika1996/Bank-Management-System
===Open Source contributions
I have been a FOSS user for several years now. I always wanted to give back to the OS community and this year I had my first PR merged.
https://github.com/devtools-html/debugger.html/pull/3608
!!debugger.html!! is a hack-able debugger for modern times, built from the ground up using React and Redux. I made some more contributions to debugger.html:
https://github.com/devtools-html/debugger.html/pulls?utf8=%E2%9C%93&q=author%3Asagorika1996%20is%3Aclosed
It was a great experience to be a first time contributor, I got to learn lot of new things. It was also nice to see how people from different parts of the world come together to work remotely. Due to my contributions, I got a mention here: http://firefox-dev.tools/debugger.html/docs/updates/updates-8-15-2017.html
===Micro-tasks Completed:
!!microtask 1:!! Created a tool which takes in the username and displays the recent English Wikipedia edits of that user. In this task, I have fetched the data via API calls to MediaWiki database.
Links:
https://github.com/sagorika1996/useredits-tool-review/pull/1
https://tools.wmflabs.org/outreachy-useredits/
!!microtask 2:!! Created a tool which takes in the username and shows the rank of the user if ordered by the number of edits made in Bulgarian Wikipedia. In this task, sql queries are used to fetch the desired data.
Links:z
https://github.com/sagorika1996/userrank-tool/pull/1
https://tools.wmflabs.org/outreachy-userrank/
!!microtask 3:!! Designed a simple mockup for the summary tool and also I have been brainstorming about various parameters that can be included in the tool.
Links:
https://github.com/sagorika1996/outreachy-mockup/pull/1
https://github.com/sagorika1996/outreachy-mockup
!!microtask 4:!! A tool to display the count of featured articles where the user is among the top 10 editors. Count of featured articles for editors is maintained and stored in a file. When the user enters the username, we search the userid in the file and display the corresponding result. If the userid doesn't exists, then count is shown as zero.
Links:
https://github.com/sagorika1996/summaryTool-task/pull/1
https://tools.wmflabs.org/outreachy-sagorika1996/
===Any Other Info
**Add any other relevant information such as UI mockups, references to related projects, a link to your proof of concept code, etc**
I will be ready to work full time from the day Internship period begins (Dec 5th) for at least 40 hours a week throughout the week. Also I would like to create a blog about the whole project.