=Profile Information
**Name** : Sahil Khokhar
**Email** : sahilkhokhar505@gmail.com
**Web Profile** : http://sahilkhokhar.com/
**Github Handle** : [[ https://github.com/sahil505 | sahil505 ]]
**Meta-Wiki** : [[ https://meta.wikimedia.org/wiki/User:Sahil505 | sahil505 ]]
**IRC nick** : sahil505
**Location** : New Delhi, India (UTC +5:30)
**Typical working hours** : 02:00 PM to 03:00 AM (UTC +5:30)
=Synopsis
Wikistats is the public statistics website of the Wikimedia Foundation. Its main purpose is to add context and motivate our editor community by providing a set of metrics through which users can see the impact of their contributions in the projects they are a part of. Wikistats2 is a recently released website, developed by the WMF's Analytics team, that will replace Wikistats in the near future. Wikistats2 is intended to:
- Update the website's (Wikistats) interface.
- Provide access to data in an analytics-friendly form.
- Be easier to maintain and improve.
[[ https://stats.wikimedia.org/v2/#/all-projects | Wikistats2 ]] is currently in production but still in alpha stage. There are some improvements that need to be made in order to consider Wikistats2 a full replacement of its predecessor (Wikistats). The objective of this GSoC project is to improve Wikistats2 front-end, bringing it closer to a finalized product possibly Beta or RC 1.0. [[ https://phabricator.wikimedia.org/T189210 | This task ]] lists around 12 subtasks containing small improvements to be implemented.
**Mentor** : @mforns
=Benefits
- This project will take Wikistats2 more closer to a finished product (RC 1.0) meant to replace its predecessor (Wikistats).
- This project will make the frontend of Wikistats2 more user friendly.
- It will fix some of the minor and major bugs in the Wikistats 2 interface which includes some of the markup issues and UI features that are confusing to the user.
- This project can add some new features to the interface of Wikistats 2 that can represent the information in a better way than the current Wikistats 2.
=Subtask Breakdown
Every subtasks for this project will be completed following Object Oriented Analysis and Design principles, broadly in these four stages:
- Analysis & Design
- Implementation
- Testing
- Deployment
Testing stage will be carried out using Exploration testing as it leads to an optimized final unit/feature which is best for many frontend projects. Since this project only adds small features to various parts of Wikistats 2.0 software therefore testing methods such as Jasmine TDD or Sanity & Regression testing doesn’t make much sense.
Each deployed subtask will be followed by its documentation which would contain the design mockups, detailed explanation of the implementation & testing process which will include explanation on how the code operates and how to use it.
=Timeline
- **[TD 1] Explore Subtasks** : Explore all the subtasks listed here. Conduct a premature analysis and prepare design mockups for each subtask. Explore Wikistats 2.0 and suggest other improvements and add these to the subtasks list.
- **[TD 2] Student Projects Announced** : if (gsoc.user.sahil505 == “Selected”) goto TD3; else return;
- **[TD 3] Community Bonding** : Improvise and finalize the premature analysis and prepare final design mockups. Continue exploring Wikistats 2.0 for new suggestions and improvements. Start interacting with the Wikistats 2.0 team for inputs on analysis, design and newly suggested changes.
- **[TD 4] First Coding Period** :
-- **[TD 4.1]** : Work on T187427 (Change '--' to something more helpful in Wikistats page views by country table view) + T188208 : Make ad-blocker alert message responsive + Weekly Report.
-- **[TD 4.2]** : Work on T185533 (Fix accessibility/markup issues of Wikistats 2.0) + T183185 (Correct display of radio buttons in Wikistats 2.0) + Weekly Report.
-- **[TD 4.3]** : Work on T189195 (Limit pan in Wikistats 2.0 maps) + Weekly Report.
-- **[TD 4.4]** : Buffer + Work on newly added suggestions or subtasks + Weekly Report.
- **[TD 5] First Evaluation** : Submit first evaluation.
- **[TD 6] Second Coding Period** :
-- **[TD 6.1]** : Work on T183184 (Make the colors used the line charts in Wikistats 2 more easy to recognize) + T186335 (Expand topic explorer by default) + Weekly Report.
-- **[TD 6.2]** : Work on T178018 (Add breadcrumbs to Wikistats 2.0) + Weekly Report.
-- **[TD 6.3]** : Work on T182990 (Display time range on the detail page for tops and maps metrics) + T187429 (Correct Y-axis units and rounding issues) + Weekly Report.
-- **[TD 6.4]** : Buffer + Work on newly added suggestions or subtasks + Weekly Report.
- **[TD 7] Second Evaluation** : Submit second evaluation.
- **[TD 8] Final Coding Period** :
-- **[TD 8.1]** : Work on T189197 (Correct line chart and map displacement bugs in Chrome+Ubuntu) + Weekly Report.
-- **[TD 8.2]** : Work on T182109 (Incorporate UI advice from Erik) + Weekly Report.
- **[TD 9] Buffer** : Work on backlog is there are any otherwise focus on newly added suggestions and subtasks.
- **[TD 10] Submit Code & Final Evaluation** : Submit final code along with the complete documentation and submit my final evaluation.
- **[TD 11] Mentors Submit Final Evaluations** : Document future improvements to Wikistats 2.0 + Achievements of this project.
| **Period** | **Task** |
|------------ |-----------|
|Date.now() - April 22|[TD1] Explore Subtasks|
|**April 23**|**[TD2] Student Projects Announced**|
|April 24 - May 14|[TD3] Community Bonding|
|May 14 - May 21|[TD4] First Coding Period → [TD4.1]|
|May 22 - May 29|[TD4] First Coding Period → [TD4.2]|
|May 30 - June 05|[TD4] First Coding Period → [TD4.3]|
|June 06 - June 15|[TD4] First Coding Period → [TD4.4]|
|**June 11 - June 15**|**[TD5] First Evaluation**|
|June 15 - June 22|[TD6] Second Coding Period → [TD6.1]|
|June 23 - June 30|[TD6] Second Coding Period → [TD6.2]|
|July 01 - July 07|[TD6] Second Coding Period → [TD6.3]|
|July 08 - July 13|[TD6] Second Coding Period → [TD6.4]|
|**July 09 - July 13**|**[TD7] Second Evaluation**|
|July 13 - July 20|[TD8] Final Coding Period → [TD8.1]|
|July 21 - August 01|[TD8] Final Coding Period → [TD8.2]|
|August 01 - August 06|[TD9] Buffer|
|**August 06 - August 14**|**[TD10] Submit Code & Final Evaluation**|
|August 14 - August 21|[TD11] Mentors Submit Final Evaluations|
|August 22|Results Announced|
|--------------|-------------------|
=Deliverables
- T187427 : Change '--' to something more helpful in Wikistats page views by country table view.
- T188208 : Make ad-blocker alert message responsive.
- T185533 : Fix accessibility/markup issues of Wikistats 2.0.
- T183185 : Correct display of radio buttons in Wikistats 2.0.
- T189195 : Limit pan in Wikistats 2.0 maps.
- Any newly added subtasks.
**Phase I evaluation**
- T183184 : Make the colors used the line charts in Wikistats 2 more easy to recognize.
- T186335 : Expand topic explorer by default.
- T178018 : Add breadcrumbs to Wikistats 2.0.
- T182990 : Display time range on the detail page for tops and maps metrics.
- T187429 : Correct Y-axis units and rounding issues.
- Any newly added subtasks.
**Phase II evaluation**
- T189197 : Correct line chart and map displacement bugs in Chrome+Ubuntu.
- T182109 : Incorporate UI advice from Erik.
- Any newly added subtasks.
**Final evaluation**
- Future improvement to Wikistats 2.0 documentation.
**Results Announced**
=Participation
- Use git to create pull requests for the commits created to the forked repository after appropriate testing. Separate branch will be created for each of the subtasks.
- Will stay in regular touch with @mforns over Zulip or Email for any required guidance and updates.
- Will share my progress and useful information on Phabricator subtasks in comments.
- Weekly reports will be published on my [[ https://meta.wikimedia.org/wiki/User:Sahil505 | meta wiki user page ]] and regular blogs regarding my progress and learning from each subtask on my [[ http://sahilkhokhar.com/ | Web portfolio ]].
- Will be available on Zulip, Email, Phabricator & IRC in working hours and on Email in non-working hours.
=About Me
Currently a Junior at the [[ http://www.iitd.ac.in/ | Indian Institute of Technology Delhi ]] (IIT Delhi) where I’m learning how to produce & manufacture products from scratch & deal with the management challenges related to production. My major is Production & Industrial Engineering. I’m a code fanatic and have been one since my freshman semester. Technology excites me in many ways. I love developing softwares & applications that create an impact and are built for people. I have a strong passion for open source projects and have developed various software applications on campus in collaboration with my friends and professors. I strongly believe in the fact that no matter what you are creating or working on there is always a scope of improvement.
I heard about Google Summer of Code from Google’s open source blog, which I follow frequently. I won’t be having any other commitments besides GSoC this coming summer, therefore I would be very comfortable working around 40 to 50 hours a week. As far as this project is concerned I’m really excited to see the efforts of the analytics team in upgrading Wikistats to Wikistats 2.0 and I would be extremely honored to see it through to the end with significant contributions that can make Wikistats 2.0 a finished product.
=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
Developed a Sales Rep Tracking Software during my freshman summer internship (June - July, 2016) at Groupon South Africa to monitor sales team whereabouts (location & time) and fuel spend when out selling. Used Object Oriented Analysis and Design (OOAD) for modelling along with AngularJS to layout the structural framework and Jasmine for Test Driven Development. This was my first time working in a proper development workflow so learnt a lot about different development cycles and how to model and analyse your ideas before beginning to code.
Led a team of 6 developers to develop the website and application fURL https://sahil505.github.io/bohemian/ | Rendezvous ]]. This was my first experience with a CRUD based application. Used AWS, Node.js, Vue.js, DynamoDB, and PHP to develop a robust and scalable platform that handled a traffic to 10k DAUs.
Have developed various students oriented web-portals for IIT Delhi such as Substance Abuse Helpline Portal and the Academics website of IIT Delhi using Kerberos based authentication and authorization using IIT Delhi LDAP Server and OAuth 2 Server.
Also, I regularly participate in various campus wide hackathons (Microsoft - Code.fun.do, IBM etc.). One thing that I love the most about these hackathons is the collaboration and the team effort required to develop a MVP within 24 hours.
===Microtasks Completed
- T188221 : Cargo API should display error if field alias starts with "_" : [[ https://gerrit.wikimedia.org/r/#/c/416959/ | Code Review ]]
===Microtasks In-Progress
- T188208 : The alert message about ad-blocker is not fully shown on smaller screens : [[ https://gerrit.wikimedia.org/r/#/c/419977/ | Code Review ]]
===UI Mockups for Cargo Special:Drilldown page
- [[ https://docs.google.com/document/d/1ZI4wQziY-bzhdCI7aOQ0vPIHHtOV28Dh_K00rLYlvcE/edit?usp=sharing | Mockup document 1 ]]
- [[ https://docs.google.com/document/d/1D1JTF011z2YCTpi7Lz-X-efD-XJ1XFQisAMEhLXSejY/edit?usp=sharing | Mockup document 2 ]]
- [[ https://docs.google.com/document/d/155NlUbQ4shtOmf7mabWtUu3yEkmJtQsapWh7O193SCk/edit?usp=sharing | Mockup document 3 ]]
=Any Other Info
I prefer mac OS for development but sometimes switch to debian as well. My native languages are English & Hindi. I’m comfortable in working with a mentor who is several time zones away.