Page MenuHomePhabricator

GSoC 2021 Proposal : Develop a UserScript/Gadget tutorial on MediaWiki.org similar to Wikipedia:The_Wikipedia Adventure
Closed, DeclinedPublic

Description

Profile Information

Name: Sayak Das
IRC nickname: Sayak17
Github: https://github.com/sayak2k1maruti
Portfolio: https://sayak01.epizy.com/resume/
Website: https://sayak01.epizy.com/
Resume: resume.pdf
Location: Kolkata, India (UTC +5:30)
Typical working hours: Between 12 pm to 12 am UTC +5:30

Synopsis

  • This project is about creating an interactive guided adventure tour on MediaWiki to give users brief insight on “How to create user script on Wikimedia projects”. User scripts are programs written in JavaScript for use on Wikimedia projects by users that enable the Wikimedia user account to do many things that they otherwise couldn't. Like changing DOM, appending HTML snippets in DOM, and changing Interface according to browser events, etc.
  • This user-friendly adventure will be designed like "The Wikipedia Adventure" which will have 3-4 missions for users.
    • Mission 1: Basic Intro
    • Mission 2: Using MediaWiki’s JS module
    • Mission 3: Using MediaWiki API
    • Mission 4: Using OOUI (Optional)
  • The main goal of this project is to make an interactive user guide on user script primarily focused on newbie developers and existing Wikimedia community members who have a little bit of knowledge about JavaScript.And it will be more helpful for newcomers over MediaWIki's documentation on a user script. Users can learn to use MediaWiki's JS module and MediaWiki's API in a very fun and interactive way.

Screenshot from 2021-04-13 17-59-07.png (1×1 px, 490 KB)

The above picture shows a simple example about user-Script

document.getElementById("content").style.backgroundColor = "#7E829E";
document.getElementById("content").style.color = "white";
document.getElementById("bodyContent").style.fontSize = "125%";
document.getElementById("bodyContent").style.fontFamily = "monospace";

This simple script can change the background color, font color, and font family of any content.

Possible Mentors

Idea Implementation

  • The project will be an adventure tour containing 4 interdependent missions explaining the use and purpose of user scripts.
  • Each mission's design and implementation will be similar to the missions of The_Wikipedia_Adventure to maintain consistency across the media wiki ecosystem.
  • The 4 missions all together will be sufficient and useful for users to deploy their own user scripts.
  • Below contains some screenshots describing how it will look like:

Screenshot from 2021-04-13 18-22-38.png (1×1 px, 243 KB)

Screenshot from 2021-04-13 18-22-40.png (1×1 px, 234 KB)

Screenshot from 2021-04-13 18-22-45.png (1×1 px, 231 KB)

The points listed under each mission correspond to the unique steps of the tour.
  • Mission 1:
    1. Introduction to User script in general.
    2. Navigate to the Special:MyPage/common.js file and describe its use (JS Code written here is applied to all pages).
    3. Instruct the user to edit the file by showing where to edit a file.
    4. Provide users with basic user script examples within the tour step, which users can copy & paste.
    5. A pop-up will instruct users on how to preview changes.
    6. Then another pop-up shows users the button to finally publish.
    7. A pop-up will Congratulate the user on successfully deploying the first user script.
    8. Describe the Special:MyPage/vector.js file and its use(JS Code written here is applied to a particular skin).
    9. Optional step to learn more about skins in MediaWiki or end tour.
    10. If the user chooses to learn more about skins, then navigate to the Appearances page to another tab where the user can preview different skins available.
  • Mission 2:
    1. Navigate to ResourceLoader/Core_modules and give a brief description about JS modules and core modules supported by wikimedia.
    2. Navigate to Manual:Interface/JavaScript#mw.config and brief users about the different configuration values can be accessed with mw.config.

      Follow the steps similar to step2 - step7 of mission 1. The user script examples in step 4 should involve the use of “mw” global object.
  • Mission 3:
    1. Brief user about what APIs are.
    2. Navigate to API: Main_page and brief the user about the endpoint for Wikimedia API's and parameters. Provide link for ApiSandbox page.
    3. Once the user comes on ApiSandbox page, brief the user on how one can test Wikimedia's Api’’s through ApiSandbox.

      Further, we will guide the user to create his/her first API request on Wikimedia. We will give the user a set of options to choose from on which request he wants to make(Eg. 1: No. of page views; 2: Get edit history of a page; etc.)

      Once the user has completed his first API request with ApiSandbox, we can follow the steps similar to step2 - step7 of mission 1. The user script examples in step 4 should involve the use of Mediawiki API.
  • Mission 4: #This is an optional mission. Users will only navigate to his mission if they select "Learn More" after the 3rd mission.
    1. Brief user about OOUI in general and provide navigation link to OOUI/Using_OOUI_in_MediaWiki#JavaScript.
    2. Explain user about the different dependencies that use OOUI and how to load these dependencies. Provide a link to ooui demos.
    3. Brief users that this is the place where they can refer for different ooui features.

      Further, follow the steps similar to step2 - step7 of mission 1. The user script examples in step 4 should involve the use of widgets or other ooui features.

Deliverables

  • Attractive theme for the adventure.
  • Design the introductory template and elements(illustrations, buttons, etc) to be used within the missions according to the theme.
  • Coding the user scripts examples and tours for each mission based on ideas discussed in implementation.
    • Mission 1: Basic Intro to deploying user scripts
    • Mission 2: Writing user scripts using MediaWiki's JS module
    • Mission 3: Writing user scripts using MediaWiki API
    • Mission 4: Writing user scripts using OOUI (Optional)
  • Simultaneous bug fixing after completion of each mission.
  • Regular unit testing of JavaScript code using QUnit.
  • Connect all missions together and complete the flow of the adventure.
  • Code cleaning.
  • Documenting the story behind the adventure.

Timeline

Community bonding period :

PeriodTask
May 17, 2021 - May 24, 2021Study more about JS Modules, APIs, OOUI which would help me come up with better user script examples during the coding period.
May 25, 2021 - June 2, 2021Come up with a theme for the adventure tour. Design basic elements to be used within the missions, and the introductory template from where all missions can be accessed.
June 3, 2021 - June 7, 2021Environment setup for QUnit. Discuss milestones with mentors.

Coding period:

PeriodTask
June 8, 2021 - June 13, 2021Coding the introductory template.
June 14, 2021 - June 16, 2021Writing the user scripts for the first mission(3 basic js/jquery code examples with good documentation and comments to describe actions performed by script).
June 17, 2021 - June 22, 2021Implementing the tour for the first mission with steps defined above. Resolving bugs of Mission 1 and performing unit tests.
June 23, 2021 - June 25, 2021Writing the user scripts examples that involve the use of js modules and “mw” global objects(2 or 3 examples).
June 26, 2021 - July 1, 2021Implementing the tour for the second mission. Resolving bugs of Mission 2 and performing unit tests.
July 2, 2021 - July 5, 2021Writing the user scripts examples that involve the use of Mediawiki’s API.
July 6, 2021 - July 11, 2021Implementing the tour for the third mission. Resolving bugs of Mission 3 and performing unit tests.
July 12, 2021 - July 15, 2021Phase Evaluation Submit a report of the tasks completed.
July 16, 2021 - July 19, 2021Writing the user scripts examples that involve the use of OOUI library.
July 20, 2021 - July 26, 2021Implementing the tour for the fourth mission. Resolving bugs of Mission 4 and performing unit tests.
July 27 , 2021- July 31, 2021Complete the flow of the adventure by linking the missions and making them accessible from the template.
August 1, 2021 - August 8, 2021Bug fixes, code cleanup for submission.
August 9, 2021 - August 16, 2021Documenting the story behind the adventure. (Introduction to adventure, why do MediaWiki users need this adventure, goals of the adventure).
August 17, 2021 - August 23, 2021Final week: Submit my work product and final mentor evaluation

Participation

I will be available anytime through Email(sayakdas2k1@gmail.com), Zulip, or if required, a well-planned video session and will contribute via Github to this project and use Phabricator for managing the bugs and tasks.

About Me

  • Education:
Degree/ExaminationBoard/UniversityYear of Passing Status
B.TechNational Institute of Technology Durgapur2023(Expected)Running
Class XIIWestBengal Council of Higher Secondary Education2019Completed
Class XWestBengal Board of Secondary Education2017Completed
  • How did I hear about this program?

Our college has an active community of open-source developers. So, I heard about this program from a lot of seniors in my college.

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

Our college's end semester examination for the 4th sem will end on 2nd May 2021. So during my summer break, I can easily give 6+ hours per day to the project as I have no other commitments. I will be able to do about 3 hours per day when my college resumes (not able to say the date due to the current pandemic). I will try to complete a major part of the project before my classes begin and so I can easily able to finish the remaining work and deadlines.

  • 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 for Google Summer of Code with the Wikimedia organization
  • What does making this project happen to mean to you?
    • Everybody knows Wikipedia is the world's biggest digital encyclopedia, and when I came to know that the project is open source, I was highly motivated to contribute to it. As I have prior knowledge of javascript, JQuery and PHP I think I can do some great contributions to this project. I am grateful for this opportunity and assure you of my commitment and determination towards this project.
    • In the past, I developed an interactive resume of mine which has a little avatar and users have to move that to see different stages of my resume. That self-project boosted my JS skills and I used the JQuery library to build that project. So I think I can contribute to this project. Here is the link to that project : https://sayak01.epizy.com/resume.

Past Experience

Screenshot from 2021-04-13 18-56-53.png (1×1 px, 408 KB)

  • Made a simple 2 player tic-tac-toe game using PHP and JS and AJAX API

Screenshot from 2021-04-13 18-58-51.png (1×1 px, 91 KB)
Screenshot from 2021-04-13 18-59-27.png (1×1 px, 212 KB)
Screenshot from 2021-04-13 18-59-34.png (1×1 px, 125 KB)

You must have written a feature or bugfix for a Wikimedia project during the application phase (see the section about microtasks in the application process steps), please link to it here. We give strong preference to candidates who have done so.
I have successfully completed the microtasks assigned in order to understand the project.

  1. Microtask 1:
    • Basic tour on how to deploy user scripts on wikimedia.
    • Link to code: Microtask 1

Any Other Info

I had made an interactive resume of mine. It is a simple Mario-like game. Users have to move a little avatar on the screen to view different parts of a resume.Here is the link : https://sayak01.epizy.com/resume/

Screenshot from 2021-04-13 19-42-17.png (1×1 px, 316 KB)

Screenshot from 2021-04-13 19-42-31.png (1×1 px, 252 KB)

Screenshot from 2021-04-13 19-43-18.png (1×1 px, 864 KB)

Screenshot from 2021-04-13 19-42-48.png (1×1 px, 890 KB)

Screenshot from 2021-04-13 19-44-06.png (1×1 px, 489 KB)

Screenshot from 2021-04-13 19-43-44.png (1×1 px, 356 KB)

Resources

[0] https://en.wikipedia.org/wiki/Wikipedia:The_Wikipedia_Adventure
[1] https://www.mediawiki.org/wiki/User_script
[2] https://commons.wikimedia.org/wiki/File:Userscript_and_Gadgets_workshop_toolkit.pdf
[3]https://phabricator.wikimedia.org/T274635
[4]https://phabricator.wikimedia.org/T279883
[5]https://www.mediawiki.org/wiki/Extension:GuidedTour/Write_an_on-wiki_tour

Event Timeline

Sayak17 renamed this task from Develop a UserScript/Gadget tutorial on MediaWiki.org similar to Wikipedia:The_Wikipedia_Adventure to GSoC 2021 Proposal : Develop a UserScript/Gadget tutorial on MediaWiki.org similar to Wikipedia:The_Wikipedia Adventure.Apr 13 2021, 4:05 PM

Hi @Sayak17 Thanks for your participation in the Google Summer of Code with Wikimedia!

I have one big question, I just had a look at your proposal and also the other applicant's proposal (T279883). This looks like almost exactly the same as another applicant's proposal. Can you explain this?

Hi, @Gopavasanth actually I am a very noob to open Source Contribution. Very recently I learned about open source organization and how to contribute etc from our college senior and I really want to do this. As I decided to participate in GSoC very late so there was a very short time. And setting up MediaWiki software into my localhost consumed lots of time. I was very confused about how to write a proposal, especially how to fill up the "TimeLine" section. So I took up some pre-submitted proposals as a reference. And I follow the structure of the proposal (T279883) and his "TimeLine" as I found I'm comfortable with that timeline. But the rest of the things are different. And what I wrote in my proposal is absolutely true and I've also mentioned (T279883) in the reference section of my proposal.
I'm very sorry for this type of unfairness. I can guarantee you I will regularly contribute to this project and I'll try my best. Please forgive me if I've broken any types of community guideline rules.

@Sayak17 Copying others proposals is considered as an example of Plagiarism and not tolerated.

GSoC application deadline has passed. If you have submitted a proposal on the GSoC program website, please visit https://phabricator.wikimedia.org/project/view/5104/ and then drag your own proposal from the "Backlog" to the "Proposals Submitted" column on the Phabricator workboard. You can continue making changes to this ticket on Phabricator and have discussions with mentors and community members about the project. But, remember that the decision will not be based on the work you did after but during and before the application period. Note: If you have not contacted your mentor(s) before the deadline and have not contributed a code patch before the application deadline, you are unfortunately not eligible. Thank you!

@Sayak17 We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 10 students. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many students who we did not accept in 2020 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!