Page MenuHomePhabricator

GSoC 2022 Proposal - Edit Request Wizard
Closed, DeclinedPublic

Description

Profile Information

Name: Farhan Azmi
Email: farhan.azmi0017@gmail.com
Github: github.com/farhanazmiCS
Professional profile: LinkedIn, Resume
Location: Singapore
Typical working hours: 10am and 9pm (GMT+08:00 Asia/Singapore)

Synopsis

Wikipedia is an online encyclopedia that provides non-opinionated, factual articles about a given topic. To prevent pages from being vandalized or edited to host content that is either sensitive or controversial, some pages are protected to a degree (e.g. semi-protected, extended-confirmed protection, etc.) where only seasoned users can make direct edits. For a new user to make an edit, the user would have to submit an edit request indicating the changes and then wait for feedback from a user with full edit access. Should the edit request bring valid points, the edit request would be implemented into the article page.

In the current implementation, the process for making an edit request is not friendly for new users. Firstly, the interface for submitting an edit request is very convoluted. Secondly, new users may be overwhelmed with the vast number of instructions thrown at them when making an edit request, possibly dissuading them from making an edit request and turning away a potential contributor.

The objective of this project is to:

  1. Develop a step-by-step form with a clean, easy-to-use interface that allows users of any background to submit a Wikipedia edit request and;
  2. Ensuring that the edit request complies with all Wikipedia policies by performing backend validation.

Possible mentor(s)
@Enterprisey, @Firefly, @SD0001

Contacted mentors?
Yes

Deliverables

  1. A Wikipedia user script displaying a form for submitting a Wikipedia edit request that allows users to cite sources such as web pages, books (ISBN), journals or news articles. Throughout the process of the edit request, the user script will guide the user along the process, make requests to the backend to perform validation for any of the input fields featured in the form and will raise error messages if any of the user’s input fails validation.
  1. A backend for the user script to make requests for performing validation. Some validation functions include, but are not limited to:
    • Validating a URL endpoint to determine what web pages can and cannot be used as a cite. For example, a Google search result page is considered invalid as it does not contain useful information that can be used for citation;
    • Checking if the quote input field is empty;
    • Checking for proper formatting of a quote. The quote must be properly enclosed within quotation marks "" or the <blockquote> HTML tag depending on the number of words in a quote, and;
    • Scanning the web page/book/journal/news article (or parts of it) to verify the quote’s origin.

Timeline of deliverables

PeriodTask
May 20 to Jun 12Community bonding period. Contributors are introduced to their mentors and recap on the deliverables and goals of the project. In addition, contributors are to propose the sub-deliverables of the project and come up with a timeline of targets for each week. Lastly, with the guidance from mentors, contributors are to refine their proposal to reflect the changes in the timeline and newly added tasks.
Jun 13 to Jun 17Mentors and contributors discuss the design of the form that allows users to input a source, and discuss how error messages are displayed for invalid edit requests. This can be in the form of a mockup tool like Figma, a paint drawing or coded with frontend technology.
Jun 20 to Jun 24Develop the user script form using the built-in Object-Oriented User Interface (OOUI) as well as technologies such as HTML, CSS and JavaScript (jQuery).
Jun 27 to Jul 1Discuss with mentors on what is considered as a valid edit request. Use backend technology like Python to develop an API endpoint for the user script form to make requests for performing checks on the edit request.
Jul 4 to Jul 8Perform unit testing on the backend code to ensure that all validation functions work as intended.
Jul 11 to Jul 24First phase of integration testing for the backend and frontend. Perform testing to determine if the frontend can successfully communicate with the backend and ensure that the request returns the appropriate response.
Jul 25 to Jul 29Write and submit Phase 1 evaluation.
Aug 1 to Aug 5Bug fixes for the functions in the backend and implement new validation functions, if not yet implemented. Perform testing for all backend functions.
Aug 8 to Aug 12UI improvements and bug fixes for the frontend. Test the user script for any anomalies in behaviour.
Aug 15 to Aug 19Second phase of integration testing of the frontend and the backend with the newly added features and/or bug fixes.
Aug 22 to Aug 26Rectify any bugs found during the second phase of integration testing.
Aug 29 to Sep 2Perform code cleanup and write documentation.
Sep 5 to Sep 12Contributors are to submit their final work product and final mentor evaluation.
Sep 12 to Sep 19Mentors to submit their final GSoC contributor evaluation.
Sep 20Initial announcement of GSoC 2022 results.

Participation

  • Utilise Zulip to communicate with the project's mentors with regards to project discussions, difficult problems and progress.
  • Store the project’s source code in a newly created Github repository and push changes frequently. Code is to be reviewed by mentors every week. Should new features be implemented, newer branches will be opened, and then merged back to the master branch once the feature passes all tests.
  • Write weekly reports (updated every day) during the coding period to summarize the progress, challenges faced and remedies to the challenges.
  • Attend any program meeting hosted by the mentors.

About Me

Introduction and education

I am Farhan, a self-taught developer. I have taught myself software development skills by completing online courses such as Harvard University’s CS50 Introduction to Computer Science, CS50’s Web Programming with Python and Javascript as well as MIT’s 6.001x Introduction to Computer Science with Python. Currently, I hold an Aeronautical Engineering diploma from Singapore Polytechnic and will be pursuing undergraduate studies in Software Engineering at the Singapore Institute of Technology in September.

How did I come across GSoC? Why GSoC and Wikimedia?

I came across GSoC via the notes-to-cs-freshmen-from-the-future Github repository uploaded by NUShackers whilst skimming for tips and advice on how to excel in software development. Up to the point of discovering GSoC, all of my projects are solo projects whose purpose is to develop competency for the chosen technology stack, as well as to improve my problem solving and programming skills — but none of them made an impact on others or taught me collaborative software development. With GSoC in collaboration with the Wikimedia team, I can kick start my journey in collaborative software development and open-source software whilst simultaneously creating a great impact on people, considering billions use Wikipedia as a tool for quick information retrieval.

Commitments and availability

In terms of availability, I will be able to fully commit to the project from May to August with no other commitments with the exception of a two-week vacation from 12 July to 25 July. I will be open to communications and will have my laptop with me during the period of vacation to discuss and contribute to the project. From September and beyond, the university term will commence with around two classes each day where I will be able to contribute to the project for around four hours each day.

Past Experience

Microtasks carried out

I have completed 4 of the 5 microtasks assigned by the mentors.

Microtask 1: Making an edit request
Microtask 2: Design a form that allows a user to input a source
Microtask 3: Implement a form for a quote
Microtask 5: Complete the user scripts tutorial

Past projects and skills developed

Prior to GSoC, I have developed several web-based projects using tools such as Python, JavaScript, HTML, CSS and Bootstrap by developing some personal projects. These projects include:

  1. Trip Planner, an application using React and Django Rest Framework that allows users to plan a trip with their friends;
  1. Network, a twitter-like social network application created using Django and JavaScript that allows users to follow/unfollow users, create, like and comment on posts;
  1. Mail, an email client developed with JavaScript that lets users send and receive email;
  1. Commerce, a Django-based web application that allows users to create and bid listings;
  1. Wiki, a Django-based web application that allows users to create, retrieve and edit wikipedia-like entries;
  1. Death to Corona, a Flask based web application that provides users with coronavirus advisories, checks for nearby vaccination centers given a postal code and lets users perform a questionnaire to assess their risk level to COVID-19.

Throughout the period of these projects, I have learnt skills such as frontend and backend web development, utilization of external APIs (using the fetch API), developing REST APIs for the client, developing application scripts, designing a responsive web interface, as well as testing and writing documentation for projects.

Event Timeline

FarhanEdit0017 renamed this task from GSOC 2022 Proposal - Edit Request Wizard to GSoC 2022 Proposal - Edit Request Wizard.Apr 17 2022, 6:23 AM
FarhanEdit0017 updated the task description. (Show Details)

As the GSoC deadline is soon approaching in less than 24 hours (April 19, 2022, 18:00 UTC), please ensure that the information in your proposal on Phabricator is complete and you have already submitted it on the Google's program website in the recommended format. When you have done so, please move your proposal here on the Phabricator workboard https://phabricator.wikimedia.org/project/board/5716/ from "Proposals in Progress" to the "Proposals Submitted' column by simply dragging it. Let us know if you have any questions.

Gopavasanth added a subscriber: Gopavasanth.

@FarhanEdit0017 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 75 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 2021 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