Page MenuHomePhabricator

GSoC 2021 Proposal : Add autocompletion to Page Forms spreadsheet display
Closed, DeclinedPublic

Description

Profile Information


Name: Anjali Kumari
IRC nickname on Freenode: Anjali_Kumari_41
Email: anjali041kumari@gmail.com
Web Profile: Linkedin & Github
Institute: IIIT Jabalpur
Location (country or state): Mumbai, India
Typical working hours: 2 PM to 2 AM (UTC+5:30)
Timezone: UTC+5:30 (IST)

Synopsis


The MediaWiki software is used by thousands of websites and companies, including Wikipedia, Wiktionary, and Wikimedia commons. The Page Forms extension for MediaWiki is used to create and edit pages using an interface made up of forms and also for querying data. One can edit the data in an existing page and also add and edit calls to infobox-style templates within pages.

The Page Forms extension also provides a spreadsheet-style editing display in two places:

  • In the page Special Pages: They are pages that are created by the software on demand to perform a specific function. In the Special Pages, Page Forms extension provides MultiPageEdit (for editing multiple pages at the same time that are using any particular template in a spreadsheet type display)
  • In regular forms: One can use the spreadsheet-style editing display with the form definition setting as "display=spreadsheet" (for editing multiple instances of the same template within one page).

The spreadsheet-style editing display uses the jExcel JavaScript library. jExcel provides a number of helpful input types (dropdown, date, etc.), but it does not by default allow for auto-completion using an arbitrary list of values. Moreover jExcel's built-in autocomplete is different and helpful for situations with medium number of values(not too small or large).This project aims to add the auto-completion feature in the Page Forms extension (to the spreadsheet display).

Implementation:

There are a number of ways this could be implemented:

  • Using the Select2 JS library
  • Using MediaWiki's own OOUI library
  • Using a custom solution like JSFiddle (jexcel - jquery custom multiple autocomplete)

First all the 3 methods can be evaluated before settling to implement the autocompletion. I think using MediaWiki’s own OOUI library would be a better approach.
OOUI allows developers to create responsive web user-interfaces and applications. It is also being used in 40+ web products by Wikimedia Foundation and volunteer developers.

Possible Mentor(s) @Yaron_Koren @Sahajsk

Have you contacted your mentors already? Yes


Deliverables

The autocompletion solution should ideally support all the autocompletion possibilities available in standard Page Forms forms:

  • Autocompletion on all pages that match a specific category, Cargo field, SMW property or SMW concept
  • Support for the $wgPageFormsAutocompleteOnAllChars setting
  • Autocompletion on values retrieved from an external data source, using "values from external data"
  • Autocompletion where one field's values depend on what was chosen for a previous field, using "values dependent on"

Mockup

GSoC Proposal Page Forms (2).jpg (540×720 px, 46 KB)

Timeline

Note: This timeline is tentative and may differ after discussion with the mentors as all the tasks are related.

PeriodTasks
May 17- June 7Community Bonding Period: Get familiar with the general workflow of MediaWiki, fix issues to understand the code base and configurations of Page Forms extension. Investigate the best possible implementation method to add the auto-completion feature, explore all the specified ways and finalise the approach with the help of mentors.
June 7 - June 13Coding Period: Get familiar with the Mediawiki’s OOUI library, research and compose sample codes to implement the auto-completion using an arbitrary list of values
June 14 - June 20Start implementing auto completion on all the pages under the Cargo field category using OOUI library (instead of the jExcel library)
June 21 - June 27Add support for the $wgPageFormsAutocompleteOnAllChars setting to the pages.
June 28 - July 11Add auto completion on values retrieved from an external data source, using "values from external data" to all the pages and also to where one field's values depend on what was chosen for a previous field, using "values dependent on" to all the pages.
July 12 - July 16Evaluation 1: Document all the new features added and write detailed reports for the work completed for the Cargo field pages category
July 17 - July 25Start implementing auto-completion feature implementation on all pages with the SMW property or SMW concept using OOUI library.
July 26 - August 8Add support for the $wgPageFormsAutocompleteOnAllChars setting, add auto completion on values retrieved from an external data source( "values from external data"), add auto completion where one field's values depend on what was chosen for a previous field,( "values dependent on") to all the pages under the SMW category
August 9 - August 15Check the compliance of the new features added, test rigorously, remove the redundancy in the code and fix any unforeseen bugs
August 16 - August 23Final Submission: Write detailed reports and complete documentation about the new autocompletion features in all the pages.
August 23 - August 30 Mentors review student code and submit final evaluations
August 31Gsoc 2021 final results announced
Future WorkContinue to work on bugs, tasks and mentor students/ new contributors

Participation

-Will be working for more than 40 hours a week.
-I’ll consult my mentors via Zulip or IRC or in the phabricator task and update them with my progress constantly.
-Available at all times on email (and on phabricator from 9 AM to 2 AM IST).
-Publish a bi-weekly blog which documents my progress, the process or code and summarizes my experience on MediaWiki user page and Medium.com.
-Be active on the IRC channel and Zulip to help others and share my queries.

About Me


I am a sophomore year undergraduate student, pursuing a degree in B.Tech from IIIT Jabalpur, India. I am a creative and enthusiastic learner with an inquisitive mind. I am driven by the motivation to work hard, exchange ideas, explore new tech-stacks, learn and give back to the community while facing the challenges graciously.
I have been contributing to open-source projects for quite some time now and it has helped me understand the spirit of a diverse yet phenomenal community of passionate professionals who help volunteers like me bloom as a developer.
Apart from academics, I have interests in co-curricular activities like group discussions, public speaking and I am also an active member of the literary and quizzing society in my college.

When I came across the Wikimedia Foundation, I was excited to learn more about the working of the organization as I have extensively used Wikipedia and Wiktionary for my projects, moreover the idea list and the workflow is fascinating. I have grown to love the vision of this organization and I intend to keep contributing and learning.

How did you hear about this program?
I heard about GSoC through my college seniors who participated in GSoC’2020 and shared their exciting experiences which highly motivated me.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
My college classes will resume from mid-August after a summer vacation(from May).During the final weeks, I will strive hard and devote extra time to complete the goals of the week and my classes will not affect my devotion to this project. I have no other commitments during the summer break and this project shall be my only priority.

What does making this project happen mean to you?
I believe this project will help me push my boundaries, provide me with a real world development experience and bring me closer to my ambitions. I am highly positive about completing this project within the timeframe, delivering clean code with detailed reports and collaborating with other developers. I understand the responsibility and I aspire to help many other users and developers through this project and motivate other volunteers through my blog posts.

Past Experience


I have actively worked on many open source projects using a wide range of technologies like Vanilla.js, jQuery, React.js, Node.js, Puppeteer C++, Java, MongoDB, MATLAB/Scilab, etc. I have built a fully responsive blog template (like medium) using the MERN stack which introduced me to full-stack development. I am also working on the backend part of an E-learning project.

Contributions to MediaWiki:

Event Timeline

Just as a small note, Google Code-In was cancelled last year, so you couldn't stay involved in that one.

Thankyou for the feedback @Yaron_Koren. I corrected it.

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!

@Anjali_Kumari_41 ​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