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
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
| Period | Week | Task |
| May 4 to May 31 | Week 1-4 | Community 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 3 | Coding 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 31 | Coding 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 31 | Coding 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 Beyound | Maintain Pagelist widget and apply bug fixes/feature requests as needed | Maintain 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
