=Profile Information
_______________________________________________________________
**Name: **Anjali Kumari
**IRC nickname on Freenode: **Anjali_Kumari_41
**Email:** anjali041kumari@gmail.com
**Web Profile: **[[ https://www.linkedin.com/in/anjali-kumari-1053bb1aa/ | Linkedin ]] & [[ https://github.com/Anjali041 | 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 [[ https://jsfiddle.net/spreadsheet/c7et6940/ | 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**
{F34371252}
=Timeline
**Note:** This timeline is tentative and may differ after discussion with the mentors as all the tasks are related.
|Period | Tasks|
|---|---|
|May 17- June 7| **Community 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 13| **Coding 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 20| Start implementing auto completion on all the pages under the Cargo field category using OOUI library (instead of the jExcel library)|
|June 21 - June 27| Add support for the $wgPageFormsAutocompleteOnAllChars setting to the pages.|
|June 28 - July 11| Add 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 16| **Evaluation 1:** Document all the new features added and write detailed reports for the work completed for the Cargo field pages category|
|July 17 - July 25| Start implementing auto-completion feature implementation on all pages with the SMW property or SMW concept using OOUI library.|
|July 26 - August 8| Add 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 15| Check the compliance of the new features added, test rigorously, remove the redundancy in the code and fix any unforeseen bugs|
|August 16 - August 23| **Final 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 31| **Gsoc 2021 final results announced**|
|Future Work| Continue to work on bugs, tasks and mentor students in Outreachy, GSoC and GCI|
===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:
- ** [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CentralNotice/+/678328 | Replace usages of Linker::link() and Linker::linkKnown() in extension CentralNotice ]]**
- ** [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/PageForms/+/676575 | Use $wgExtensionAssetsPath instead of $wgScriptPath when defining $wgPageFormsScriptPath ]]**
- [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cite/+/678780 | Selenium: Use wdio-video-reporter for recording test videos ]]
- [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cite/+/677577 | Upgrade WebdriverIO to v7 for any one simple repository ]]
- Removing Chromedriver dependency for other repositories :
[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Echo/+/678821 | Echo Repo ]] ;
[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Math/+/678784 | Math Repo ]] ;
[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cite/+/678303/ | Cite Repo ]]
- **Other Minor bug fixes** :
[[ https://gerrit.wikimedia.org/r/c/operations/puppet/+/678320 | 678320 ]], [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CognitiveProcessDesigner/+/678310 | 678310 ]], [[ https://gerrit.wikimedia.org/r/c/analytics/pivot/deploy/+/678306 | 678306 ]], [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MediaWikiFarm/+/678308 | 678308 ]] (merged), [[ https://gerrit.wikimedia.org/r/c/mediawiki/core/+/678309 | 678309 ]](merged), [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GWToolset/+/678305 | 678305 ]](merged)