===Profile Information
**Name:** Soumi Das
**IRC nickname on Freenode:** Soumi150
**Web Profile:** https://github.com/Soumi150
**Location (country or state):** Rourkela, India
**Timezone:** IST (Indian Standard Time) (UTC + 05.30)
**Typical working hours:**10 AM to 10 PM
On college days, I will remain unavailable for 1PM to 4 PM
===Synopsis
User scripts are programs usually written in JavaScript that allow and enable modifying web pages. User scripts in Wikipedia enable users with an account to customize web pages and enhance their browsing experience. Users may also write new user scripts, starting with an existing user script and modifying it, or starting from scratch.
This project is about creating a Guided adventure tour to guide users and newbie developers with little knowledge of JavaScript on "How to create user script on Wikimedia Projects". There is extensive documentation about the same in MediaWiki spanning over multiple pages. This leads to confusion among users and sometimes they give up early. This project revolves around creating an interactive guided tour which will help reduce confusion amongst the users and make the onboarding process smoother and uniform as every user would go in the same flow.
===Possible Mentor(s):
- Jay Prakash - @Jayprakash12345
- Krishna Chaitanya Velaga - @KCVelaga
- Enterprisey - @APerson
**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
- Design and implement a story based guided tour about creating user scripts on Wikimedia projects.
- Include mini-games within the tour to involve the users in an interactive way where they gain hands-on experience on writing user scripts.
- Integrating all the missions.
- Proper testing of the code using QUnit.
- Documentation of the guided tour.
**Deliverables of the missions:**
**MISSION 1:**
Create a guided tour to give basic introduction to users regarding what are MediaWiki and user scripts, their applications and features. In this mission users will learn how to create a basic user script and how to see their user script in action.
**MISSION 2:**
Write code for guided tour steps to cover how to use Wikimedia's JS module through interactive steps. Include a walkthrough of the MediaWiki JS module. Design steps to guide users in writing complex user scripts with the use of methods, functions etc.
**MISSION 3:**
Guide the users on using MediaWiki API in their projects to query and fetch data to include in their projects. Introduction to basic etiquette and using the MediaWiki API sandbox, testing and sending requests with it.
**MISSION 4:**
Introduction to OOUI and how to use OOUI for the UI of the user scripts. How to add custom styles and modify the look of the OOUI library components, creating custom widgets etc.
===Timeline
**Community Bonding Period (May 17, 2021 - June 7, 2021)**:
- Studying the existing features of MediaWiki in detail, their available documentation and use.
- Studying the wikipedia adventure tour in detail.
- Discussion on the design of the tour with mentors.
- Discussion and planning with mentors regarding the narrative and game play of the tour.
- Discussion on setting up a testing environment for the code using QUnit .
- Framing the draft, creating mockups and planning milestones.
**Coding Period (June 7, 2021 - August 16, 2021)** :
| Period | Week no. | Task
| ------- | ---------- | ----- |
| June 7 -June 13 | Week 1| Implementing the draft of mission 1 in code.
|June 13 -June 19| Week 2| Improve the code, write unit tests and fix bugs.
|June 19 -June 25| Week 3| Start working on the drafted script of Mission 2.
|June 25 -July 1| Week 4| Improve the code, write unit tests and fix bugs.
|July 1 -July 7| Week 5| Implement the drafted script of Mission 3 in code.
|July 7 -July 12| Week 6| Improve the code, write unit tests and fix bugs.
|July 12 -July 16| Evaluation I | Preparing for evaluation. Refactor, improve the code and fix any left out bugs.
|July 17 -July 23| Week 7| Implement the drafted script of Mission 4 in code.
|July 24 -July 31| Week 8| Improve the code, write unit tests and fix bugs.
|August 1 – August 7| Week 9| Integrating all the missions and fix any left out bugs
|August 8 – August 16| Week 10| Documenting the project on MediaWiki and improve the project based on feedback from mentors.
|August 8 – August 16|Final Evaluation| Code cleaning and submission of code.
**After August 23, 2021**
- Write a blog post regarding my journey and knowledge gained.
- Keep contributing to WMF and stay involved with the community.
===Participation
- I will submit a bi-weekly progress report to my mentors.
- Blog posts on completion of major milestones.
- I’ll be creating a repository on GitHub with a master and a development branch. The code will be pushed to the development branch periodically and merged with the master branch after reviewing and testing.
- I will also publish the source code on MediaWiki.
- I will regularly communicate with my mentors on Zulip and/or phabricator as and when required. I will use Zulip in case of doubts and queries.
- Communication regarding tasks will be through commenting on subtasks to the project created on Phabricator.
- I am always reachable via email.
===About Me
**My Education**
I’m a sophomore at Institute of Technical Education and Research (ITER), Siksha 'O' Anusandhan University. I am in the fourth semester of my eight-semester program.
**How did you hear about this program?**
I came to know about this program through a FOSSASIA Blog post.
**Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
I will have exams for a week in the month of July. I will plan my tasks accordingly. I will still try to give 35-40 hrs that week.
**We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?**
I am only applying to Google Summer of Code 2021.
**What does making this project happen mean to you?**
I have been an avid user of Wikipedia since childhood. It has helped me tremendously in my studies and projects. I really admire and appreciate the vision of this organization in providing knowledge free of cost to everyone. WMF has a very large community and I want to be a part of it.
This project is a great opportunity for me to learn and grow as a coder. The most exciting part of this project is the ability to help newbie developers in the onboarding process to write user scripts as they won't find themselves lost in the vast documentation of mediawiki.
===Past Experience
**Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them.**
- I have experience in working with HTML, CSS, JavaScript, JQuery , React, express, nodejs. I use mysql and mongodb for database.
- I have built a clone of google keep using React.
- Also I have created the frontend of few websites with HTML, CSS, Bootstrap and Javascript.
**Describe any open source projects you have contributed to as a user and contributor (include links).**
- Previously, I have contributed some bug fixes and features to FOSSASIA and sButtons. Few links are:
- I have fixed a bug related to JQuery form validation
- https://github.com/fossasia/open-event-frontend/pull/5252
- Other bug fixes:
- https://github.com/fossasia/open-event-frontend/pull/5557#partial-pull-merging
- https://github.com/fossasia/open-event-server/pull/7404
- I have created a rainbow border button similar to that of codepen.
- https://github.com/sButtons/sbuttons/pull/910
- Some UI enhancements
- https://github.com/fossasia/open-event-frontend/pull/6142
- https://github.com/sButtons/sbuttons/pull/1047
===Microtasks carried out:
- **MICROTASK 1: Create a mini-tour using any two steps**
- I have created a guided tour to guide users on how to manage protection settings of their document.
- https://www.mediawiki.org/wiki/User:Soumi150/Guidedtour-tour-protectdocument.js
- **MICROTASK 2: Create a user script using OOUI**
- I have created a user script to change title of page by taking user input.
- https://www.mediawiki.org/wiki/User:Soumi150/OOUI-Demo.js
- **MICROTASK 3: Create a basic JavaScript program that makes an interesting query using the MediaWiki API**
- I have written a program using MediaWiki API to get url of items in a category and show them as html links.
- https://www.mediawiki.org/wiki/User:Soumi150/API-Demo.js