Page MenuHomePhabricator

GSoC Proposal: Develop code samples in Javascript and PHP for API Modules
Closed, ResolvedPublic

Description

Profile Information

Name: Jay Prakash
IRC nickname on Freenode: Jayprakash12345
Gmail ID: 0freerunning@gmail.com
GitHub profile: https://github.com/Jayprakash-SE/
Location: India
Typical working hours: 5:00 PM to 1:00 AM UTC +5:30

Synopsis

Project summary

  • This project will be about developing sample code in two or more programming languages to demonstrate the use of MediaWiki Action API modules. In this project, I will design and embed a tabbed window on the API pages, write a code generator and document the sample code on API modules pages and also create a demo app.

Possible Mentor(s)

Have you contacted your mentors already?

About Me

I am a 1st-year student of Bachelor of Technology (Computer Science & Engineering). My University is Dr. A.P.J. Abdul Kalam Technical University. I have programming experiences for more than 4 years as I had computer science as my stream during High-School.

How did You hear about this Program ?

  • I heard about this program in the Wikimedia world during last year. when I kept my eyes on phabricator task for the new bug. then I eagerly researched on GSoC.

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

  • I have my end semester exam in the month of May. But it will end before the Coding officially begins!. So as of now, I do not have any other time commitments. And there will college vacation from the end of May to mid-August. So I will have enough time to give more time to this project.

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 planning to apply for Google Summer of Code with Wikimedia Foundation.

What does making this project happen mean to you?

  • It matters a lot to me. I am very enthused about the free open sources software. and want to support the FOSS. In here Wikimedia world, When I take MediaWiki Traning sessions as a resource person. Participants asked me about the GSoC program. The Real experience of GSoC can help me to express GSoC in depth. I want to help in the coordination of Wikimedia's GSoC Project from next. Maybe I will take part in GSoC next year as a mentor. Overall this project will boost my activity a lot in the Wikimedia world.

Participation

  • Communication with my mentors will be done via Zulip during working hours.
  • I will be online on IRC in my working hours ( 5:00 PM to 1:00 AM UTC +5:30) to collaborate with the mentors.
  • I will be available in non-working hours through my Google mail account.
  • I will use GitHub to publish and maintain sample codes for API modules and demo apps.

Deliverables

  • Implementing PHP sample code generator
  • Generating the PHP/Javascript sample code
  • Documenting the sample code
  • Implementing the Tabbed windows
  • Implementing the Web App demo

Timeline

PeriodTask
May 6 to May 26Community bonding period Get in touch with the assigned mentors, where I will clear any doubts regarding the project and finalize the tasks. And understand the whole project very well.
May 27 to June 1Creating the PHP sample code generator, which will generate the PHP sample code through the modules.json
June 2 to June 8Generating the PHP/Javascript sample code and some manual PHP/Javascript sample code, which we can't generate through the modules.json
June 9 to June 15Document the code samples on-wiki and fixing any potential bug.
June 16 to June 22Reviewing the whole code base and fixing as many as the possible bug and Finalizing the code repository with the guidance of mentors.
June 23 to June 28Phase I evaluation
June 28 to July 2Designing and studying Implement ways of Tabbed windows within wiki page
July 3 to July 19Implement Tabbed windows through templates, lua module or gadget
July 20 to July 22Getting response from community & Finalizing the Tabbed windows
July 22 to July 26Phase II evaluation
July 26 to August 10Designing the Web App under the guidance of Mentors
August 11 to August 19Implementing the Web App
August 19 to August 26Getting the community response and finalize the Web App also fixing any potential bug.
August 26 to September 2Final student evaluations

About Web App
I picked the demo web app from the community demand, There is a long-standing requirement of Qr Code Generator in the Wiki Community. I have communicated with two wiki community member. @Bodhisattwa and @jayantanth who have 1+ lakhs edit on Wikimedia project. I have talked with Bodhisattwa. He said that PNG is not helpful. We need a QR code generator which can generate QR code in High-Quality SVG. And there is some project which will use the QR code like Wiki Knowledge Menu. The community eagerly wants a tool. That can generate the Qr Code of wiki URLs. This is also discussed in Wiki-India Mailing list. The details of the app can be found here

Past Experience

I joined the Wikimedia world in 2015 from English Wikipedia. And regularly contribute to my native wiki (Hindi Wikipedia) since 2016. But After knowing MediaWiki I shifted my contribution in MediaWiki Extensions Maintenance and development since June 2017. I had uploaded around 480 patches on Gerrit. Where 439 patches already merged in Wikimedia repository. I am Technical resource person of many offline Indic Wikimedia programs like MediaWiki Training 2018, Wiki Advance Training 2018, Jaipur Technical Training 2017, Bhopal Technical Training 2018, NSCET MediaWiki Training and VVIT MediaWiki Training 2019. My past activity can be tracked by following.

Technical

Non-Technical

Offline

I have 18000+ global edits on Wikimedia project and having 1000+ Templates and Module edit experiences. I have created more than 100 templates. This experience will help a lot in creating a tabbed window on the API pages. which is a part of this project.

Event Timeline

Restricted Application added a project: User-Jayprakash12345. · View Herald TranscriptMar 25 2019, 5:47 PM
Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Jayprakash12345 updated the task description. (Show Details)
srishakatux added a comment.EditedApr 5 2019, 8:29 PM

@Jayprakash12345 Hi! I've read your proposal and it looks great! Two small comments:

  • In the timeline section, before Phase 1 evaluation, you can also include Javascript code samples as we still need some for certain API modules.
  • Might be in the timeline section, you can add a note about the demo app that the priority would be to develop an app that is already in demand and might help a language community.

When you are done making the changes, you can move your proposal to the submitted column on the Google-Summer-of-Code (2019) board. Also, remember to upload the proposal on GSoC program website.

@Jayprakash12345 , thanks for the proposal. One comment that we had discussed which is missing here is to have an upload option of QR Code svgs to Commons.

@Bodhisattwa Ji, I have already included it. Please See in details here. Thanks :)

Thanks a lot for selecting me!

Report 1

The first phase of my GSoC has over. Here is the short report of my work.

  • In the First week, I have created the skeleton of the Web App.
  • In the Second week, I integrated the web app with OAuth. I was the little bit busy in MediaWiki Training India 2019. Also, I met my mentor Srishti Ji.
  • In the Third week, I integrated the API:Upload in the web app. And make some UI changes. Now the demo app has merged into mediawiki-api-demos main repo.
  • In the Fourth week, I worked on the deployment of the tool on toolsforge. Now the tool is live at https://tools.wmflabs.org/qrcode-generator/

Thank you :)

Jayprakash12345 added a comment.EditedAug 7 2019, 12:56 AM

Report 2

The second phase of my GSoC has over. Here is the short report of my work.

  • In the Fifth week, I and my mentor discussed on the tabbed window gadget approaches and I have created the skeleton of the Gadget.
  • In the Sixth week, Furthur improvement of the Gadget and simultaneously submit PHP token sample code to get a basic structure for the PHP code generator. And Implement Code generator for PHP.
  • In the Seventh week, After getting feedback of OOUI folks We enabled tabbedWindow Gadget on test.wikipedia.org (T227914) And submitted 4 Pull request with having 67 files changed (1098 additions and 44 deletions).
  • In the Eighth week, After getting more feedback on the gadget we improved the TOC links and others. And in the demo repo, I Implement Code generator for MediaWikiJS and generated its sample code. And I submitted 5 Pull request with having 130 files changed (4708 additions and 32 deletions).

Thank you :)

Final Report Summary:-

  1. Demo Web App Created and Deployed on the Toolsforge
  2. Tabbed Window Gadget Created and deployed on the MediaWiki.org
  3. Sample Code generated in the PHP and Javascript programming languages and also for the MediaWiki JS. And documented on the MediaWiki API Pages.

Final Report:- https://www.techwithprakash.com/2019/08/gsoc-2019-final-report.html

Congratulations on completing the project! If there isn't anything remaining in your proposal to address, feel free to close this task. Before you do so, make sure your project is listed here https://www.mediawiki.org/wiki/Google_Summer_of_Code/Past_projects#2019 and has the following information: Student name, Mentors, Relevant links and Outcomes (in not more than two lines).

This comment was removed by srishakatux.
Jayprakash12345 closed this task as Resolved.Sep 4 2019, 9:59 PM

Please take into consideration misaligned anchored text : https://www.mediawiki.org/wiki/Topic:V888vjhhcd047hip

Please take into consideration misaligned anchored text : https://www.mediawiki.org/wiki/Topic:V888vjhhcd047hip

I have checked both pages API/Architecture work/Planning and API:Fileinfo. Both do not use div.mw-gadget-tabbedwindow element. That means it is totally unrelated to our tab windows gadget.

Please consider creating a new task. if you find any connection. This is a closed task. Thanks :)