Page MenuHomePhabricator

GSoC 2020 Proposal : Create OOUI widget for Index page pagelists
Closed, DeclinedPublic

Description

Profile Information

Phabricator Task: T172953
Name: Ndubuisi Onyemenam
IRC: Prondubuisi
Web Profile: Github
Resume: Linkedin
Location: Owerri, Nigeria
Typical working hours : 3 am - 10 PM, UTC+1

Synopsis

Wikisource is an online digital Library powered by Mediawiki. The ProofreadPage extension powers most of the wikisource book upload feature and has a pagelist utility that allows for uploaded books to be appropriately labeled and numbered. While the pagelist utility works, it presents a steep learning curve for new contributors and a little difficulty for experienced users. This project aims at creating a widget for the pagelist feature which makes for easy labeling and numbering of book pages.

The benefit of this is that, with a better user experience, new contributors would find it easier to make contributions, and already existing contributors would be able to make contributions faster(increased productivity).

  • Possible Mentors: @Samwilson and @SGill
  • Have you contacted your mentors already? Yes, I have.

Workflow

  • User uploads a book.
  • User previews book on index page.
  • User sees the standard (non-editing) pagelist view of an inline list of book page numbers, colour-coded by proofreading status
  • On clicking a book's page number, a thumbnail pops up.
    • thumbnail features page image, side by side with a dynamic option for numbering, labeling. ()
    • page image can be zoomed in and out to gain clarity on page numbering.
  • User labels/numbers the page as appropriate with visual aid from the popup.
  • displayed numbering on standard inline view is updated when the popup is closed (but it's not saved at this point).
  • User proceeds to publish page if satisfied with labeling/numbering.

Widget Popup Mockup

Desktop - 1 (3).png (3×4 px, 448 KB)

Deliverables

  • Approve PageList Widget Mockup.
  • Integrate Selenium user acceptance test(Tests will be added incrementally, as features are built).
  • Build PageList widget frontend with mock data.
  • Get Feedback from mentors/ wikisource users on widget implementation.
  • Integrate feedback into frontend.
  • Link frontend to ProofreadPage Backend.
  • Run Selenium tests to ensure that features still work as intended.
  • Document widget feature.

Timelines

PeriodWeekTask
May 4 to May 31Week 1-4Community bonding, get deeper understanding of ProofreadPage codebase and infrastructure, ensure that ProofreadPage extension is properly set up locally and working. re-scoping project deliverables/timelines with help from mentors. Start work on mockups for Pagelists widget after discussions with mentors.
June 1 to July 3Coding Period (Phase 1)
Week 1 (June 1 to June 7)Finish work on widget frontend mockup and get them approved
Week 2 (June 8 to June 14)Integrate Selenium user acceptance test, write basic tests for user workflow
Week 3 (June 15 to June 21)Start work on widget frontend with mock data(Standard non editing View, with page numbers and color code)
Week 4 (June 22 to June 28)Continue work on widget frontend(Editable view with thumbnail popup on click) , write more selenium tests for upcoming features
Week 5 (June 29 to July 3)Phase 1 evaluation
July 4 to July 31Coding Period (Phase 2)
Week 1 (July 4 to July 11)Continue work on widget frontend(Numbering and different labels), write more selenium tests for upcoming features
Week 2 (June 12 to July 18)Complete work on widget frontend(Zoom into thumbnail image feature)
Week 3 (July 19 to July 25)Manual testing, get feedback from mentors and users
Week 4 (July 26 to July 31)Phase 2 evaluation
August 1 to August 31Coding Period (Final Phase)
Week 1 (August 1 to August 7)Complete Selenium Integration
Week 2 (August 8 to August 14)Integrate Frontend into ProofreadPage Backend
Week 3 (August 15 to August 21)Run Selenium tests to make sure Pagelist widget feature works as expected, Document Work
Week 4 (August 24 to August 31)Final evaluation
August 31 and BeyoundMaintain Pagelist widget and apply bug fixes/feature requests as neededMaintain Pagelist widget and apply bug fixes/feature requests as needed

Participation

  • Have daily stand ups, in form of emails(or any other alternative) to communicate progress, blockers and next work
  • Create issues on phabricator for any features I am working on
  • Ask collaborators on the project for help with blockers
  • Ask Collaborators and users of the project for feedback on widget features
  • Write bi-weekly blog posts on what I am working on
  • Code will be published on Gerrit

About Me

I am a Computer science student at the Imo State University Owerri, Nigeria. I am currently in my final year of school. I first heard about the Google summer of code program in 2018, when I attended a GSoC bootcamp organized by Open Source Community Africa. I got into the GSoC program in 2019 and I worked with CiviCRM.

My interest in volunteering to contribute code to Wikimedia projects is all thanks to my 2019 GSoC mentors Jack and Eileen. They both worked at the Wikimedia foundation and I had an awesome experience as their mentee. I have no other time commitments during the Google Summer of code period and I will be able able to put in 40 hours of work weekly. I would be having exams for 1 week in August though. Having participated in GSoC before I am not eligible for Outreachy.

Working on this project means a lot to me as this feature will help thousands of Wikisource users have an easier workflow. This will also help me give back to the Wikimedia community as I have always relied on Wikipedia for most of my coursework, personal education and research. Mentorship from the awesome Engineers in the Mediawiki ecosystem will also help me improve my software engineering skills.

Past Experience

I have previously participated in the Google Summer of Code with CiviCRM, and I worked on Integrating a Static Analyser as part of the CiviCRM jenkins toolchain. I have also made Code contributions to OpenEMR, Librehealth and other open Source projects.

Experience contributing to Mediawiki

I have worked on four microtasks, with four of them merged. This microtasks have given me insights on the coding convention, workings and code contribution/ review guidelines of the ProofreadPage extension.

I am also working on proof reading books on wikisource to better understand the workflow. In the coming days, I hope to start uploading books. I also have eyes on completing more microtasks to get better acquainted with the ProofreadPage extension and the OOUI library.

Any Other Info

Some useful links I have come across while researching on this project

Getting started with wikisource youtube playlist
Selenium for beginners
how to use PHP unit and selenium
Building a test Automation Framework Architecture with Selenium

Event Timeline

Hello @Samwilson @SGill , Please I am still looking forward to a review. Thanks.

Sorry about the delay, @Prondubuisi.

This proposal looks good. The only suggestions I would make would be to integrate the testing process right from the beginning of code-writing, so that your tests and your code develop alongside one another. If you want, some mockups of the UI that you envisage would be great (but not essential).

Sorry about the delay, @Prondubuisi.

This proposal looks good. The only suggestions I would make would be to integrate the testing process right from the beginning of code-writing, so that your tests and your code develop alongside one another. If you want, some mockups of the UI that you envisage would be great (but not essential).

Thanks for the review @Samwilson . Let me see what I can come up with. Proposal submissions close in 3 hours.

Hello @Samwilson Worked on your suggestions. Please have a look. Thanks.

@Prondubuisi 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 14 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 2019 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

If you would like a de-brief on why your proposal was not accepted, please let me know as a reply to this comment or on the ‘Feeback on Proposals’ topic of the Zulip stream #gsoc20-outreachy20. I will respond to you within a week or so. :)

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!

@Prondubuisi Thanks for your application and all your contributions! I see that you've followed all the steps and also received feedback from your mentors, which is good. :)

The student selected for this project (see proposal) made ~14 contributions to the project, which gave them an advantage this time. I'd suggest that you focus on making more number of contributions in the next round, and maintain the quality of each contribution. I see that your mentor feedback got delayed a bit. It was just a matter of circumstances, though I'd still recommend that you start working on your proposal as early as possible next time. Make sure to account for delays in response on weekends and holidays etc., and have enough time for receiving feedback from your mentors. I'd also recommend that you continue contributing to projects between now and the next round. This year, two of our selected candidates had been contributing since last GSoC, which helped them create a very impressive proposal.

I hope these thoughts help. Please feel free to reach out if you have any questions, need more clarifications or need help with anything. I look forward to seeing you participate again soon. My best wishes!