Page MenuHomePhabricator

Outreachy 19 Proposal: Documentation improvements to the ~20 top 100 most viewed MediaWiki Action API pages on-wiki
Open, Needs TriagePublic

Description

Profile Information

Name : Zainab Abubakar
Github: https://github.com/zainababubakar
IRC nickname on Freenode : Zaycodes
Location (country or state) : Lagos, Nigeria
Time Zone : (UTC + 01:00) West Central Africa
Typical working hours (include your timezone) : 12 PM - 8 PM (UTC + 01:00) West Central Africa

Synopsis

The MediaWiki action API is a web service that allows access to some wiki-features like authentication, page operations, and search. It can provide meta-information about the wiki and the logged-in user. Several Wikimedia projects make use of this API.
As of now, there are 128 pages on the Action API on MediaWiki.org. This project aims to improve the documentation of 20 top 100 most viewed MediaWiki Action API pages on-wiki by:

Mentor

Brenda Jerop @jeropbrenda

Have you contacted your mentors already?
Yes I have

Deliverables

PeriodTask
November 5th to November 25thDuring this period, I intend to continue contributing to tasks on MediaWiki and also improve my php and python skills. My progress on this can be tracked here
November 26th to December 3rdCommunity bonding period - Aside from implementing all the guidelines on the MediaWiki Outreachy/Participants#Community_bonding_period page, I will also use the Massviews Analysis to find out the API pages I am going to improve during the internship. With this, I can add the pages to a spreadsheet and the original phabricator task tracking the progress for this project. I will also be researching on these API pages and update the spreadsheet with useful links and information that I will use when I start improving the API documentation.
December 3rd to January 27thWeek 1 to Week 8 - I intend to specifically focus on writing sample codes and improving API documentation. To do this, I will create different branches from my forked MediaWiki-Action-API-Code-Samples repository for each module and send pull requests for 2 to 3 modules per week and improve their respective documentation pages and continuously update my progress here.
January 28th to February 17thWeek 9 to week 12 - Develop a bot that mass edits sample code from mediaWiki-api-demos repository to the API namespace on MediaWiki.org and vice-versa, as explained in https://github.com/wikimedia/mediawiki-api-demos/issues/172. I will be using Pywikibot framework in order to leverage on the functionalities the framework already provides and save development time. Implementation will be done following the guidelines set here for creating Wikipedia bots that would login, perform queries and make edits. I will also work on documenting the bot and submit for review.
February 18h to February 24thWeek 13 - Implement any feedbacks gotten from review and complete bot documentation
February 25th to March 2ndFinalize, review, organize, and document any necessary changes.

Participation

About Me

I graduated from Al-Hikmah University, Nigeria in 2015 with a degree in Computer Science and currently undergoing my Masters degree program in Computer Science in Kwara State University, Nigeria. My journey in tech started in 2017 after my Graduation and National Youth Service Corps (NYSC) program where I was priviledged to teach computer science to students who were preparing for their West African Senior School Certificate Examination (WAEC). This program lasted for a year and served as a breaking point for me, because, seeing the interest those kids had in basic computer knowledge and writing simple programs piqued my interests and challenged me to go further. This experience was groundbreaking as I discovered two things which I love doing till now, one of which was building solutions with technology and the other was disseminating knowledge and improving user experience. While trying to improve myself, I applied for a Developer Academy program at Interswitch Nigeria (a digital payments and commerce company) in October 2018. The screening exercises consisted of written tests in form of solving algorithmic challenges with any of the applicants’ favorite languages and an oral interview with the Chief Information Officer and to my utmost joy, I was among the 19 that got accepted out of the 100+ applicants.
This program lasted for 8 months where I went through series of training in Software Development, particularly building Enterprise Applications.
The first four months comprised of indepth classroom training on courses such as algorithms and data structures, design patterns, springboot and .net frameworks, quality assurance and software testing, and legacy systems etc. Followed by one month practical project where I built a Voucher microservice application using Java (Spring boot), C#(.NET Core), Mongodb and other tools and finally 3 months internship working with a team.

During my three months internship, I worked with the developer relations team where I worked on the following:

  • Researched on a tool for API documentation, implemented it and documented Interswitch Payment Gateway APIs - I used slate which is an open source Ruby-based tool that generates a great-looking, three-panelled API documentation static site from a set of markdown files.
  • Wrote sample codes in python and java for APIs that did not have any
  • Built a service that converts Postman collections to Markdown that can be used on slate to improve the developer experience - I used docgen (an open source tool that transforms postman collection to html/markdown documentation) to implement this.
  • Carried out surveys on onboarding programmes for new engineers.
  • Technical Writing - Worked on drafts for articles on Interswitch Engineering Blog and also reviewed articles written by other technical writers
  • Sonarqube - Configured sonarqube, an automatic code review tool to detect bugs, vulnerabilities and code smells in code-base. Also wrote a python script to perform some checks.

e.t.c

The training was a whole rebranding process for me from which I learnt a lot, and I believe that the knowledge gained will be beneficial to this project.

How did you hear about this program?
I heard about this program from a colleague while I was working in the developer relations team during the Developer Academy Programme in Interswitch Nigeria.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I'm currently working on my M.Sc thesis which takes about 3 hours daily and an average of 20 hours hours weekly.

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)?
No, GSoC applications are not currently ongoing.

What does making this project happen mean to you?
Developer Experience (DX) is the aggregate experience of a developer when discovering, learning to use, and finally integrating with an API. API documentation is the key to a great DX. Being a developer I understand what it means to have a great DX and one of my goals in tech is to be able to improve the experience of developers and improve my technical writing skills and development skills while doing that.

I am new to Open Source development but I'm hoping I get this opportunity because Wikimedia Foundation provides free and quality information to the world and by contributing to one of Wikipedia's sister projects (MediaWiki), I would be improving the experience of thousands of developers who utilize Mediawiki's API in my own little quota and also have the opportunity to collaborate with the great minds behind the Wikimedia Foundation (WMF) and improve my skills while doing so.

Past Experience

I have been into Software development for close to two years now, and I have experience working with Python, Java, Spring Framework (and the Spring Family of Projects) especially Spring Boot, C#, .NET Core framework, HTML and CSS. With respect to Databases, I have worked with mssql, mysql, mongodb and redis. Also with respect to message brokers, I have experience working with RabbitMQ.

Wikimedia

Wikipedia has always been a primary source of content when carrying out any research since time immemorial for me, from solving school assignments to undergraduate thesis, to post-graduate studies, my software-development career and even getting information on the fly. I have always been a proud user of wikimedia.

I just joined Wikimedia community during this outreachy round and within this short period I've been active on phabricator, collaborated with WMF developers and other outreachy applicants, and also communicated and worked closely with my mentor. Within this period I've been able to complete the following Microtasks.

Microtasks

Other contributions to mediawiki

Documentation
  • Worked on a new API documentation platform for Interswitch using slate, designed guidelines and templates to help ease internal developer's used of the new platform. Also improved the UI to match the companies official colours and onboarded Interswitch Payment Gateway APIs which is one of Interswitch's most used APIs. This project should go live sometime in december this year or january next year alongside the new developer console.
Open Source

I started open source with projects that I was familiar with or had worked with and I was really ecstatic when I was able to make contributions that would be useful to not just myself but many other developers out there. Open source development has also helped to boost my confidence and improve my skills. I'm not where I aim to be yet with open source development but I intend to keep contributing and improving myself and I hope that this project would serve as an opportunity to achieve more. Some of these contributions include:

  • slate - When I started open source development, having worked with slate as a user, I decided to also give back some value to this community so I fixed an issue with the language tab for sample codes not displaying properly when having multiple languages. Here is a link to the contribution on github.
  • Rebus is a puzzle game which combines the use of illustrated pictures with individual letters to depict words and/or phrases. Here is a link to the contribution I made of 4 new rebuses.

Other Projects

  • A voucher generation microservice application that generates three different types of Vouchers which include Gift voucher, Value voucher and a Discount voucher and redeems these vouchers. The voucher generation service was built with C# on .NET core framework with Mongodb as the database while the Redemption service was built with Java on Springboot with mssql as the database. I used Keycloak for user management and authentication, hangfire to run background tasks to improve user experience when generating multiple vouchers at a time and rabbitmq as a message broker between the two services.

Event Timeline

Restricted Application added subscribers: MusikAnimal, Aklapper. · View Herald TranscriptTue, Oct 29, 12:55 PM
Zaycodes updated the task description. (Show Details)Wed, Oct 30, 11:38 AM
Zaycodes updated the task description. (Show Details)Wed, Oct 30, 1:25 PM
Zaycodes updated the task description. (Show Details)Fri, Nov 1, 9:51 AM
Zaycodes updated the task description. (Show Details)Fri, Nov 1, 10:25 AM
Zaycodes updated the task description. (Show Details)
jeropbrenda added a comment.EditedSat, Nov 2, 4:02 PM

@Zaycodes Your proposal looks great! A few questions and comments:

  • I'm interested in the breakdown of how you will work on the bot that mass edits sample code. Have you thought about what technologies you would like to use and the implementation? This is totally optional so it's okay if you haven't thought about it :)
  • The tutorials section of API:Main_page majorly consists of tutorials of apps that use the MediaWiki API. Are you planning to use the MediaWiki API in the bot's development?
  • In your third microtask, you may remove the link to the closed PR since the one that was approved is exactly the same to it. :)
  • Please mention in the task title that this is a proposal. You could use something like: "Outreachy 19 Proposal: Document..."

Whenever you are ready, you can submit your proposal on the Outreachy site and move it to the "Proposals Submitted" column on the Outreachy (Round 19) workboard in Phabricator.

Zaycodes updated the task description. (Show Details)Sun, Nov 3, 2:53 PM

@jeropbrenda, I have some questions to ask as regards the bot before deciding on what technologies I would use and even the best route to go about it. I will commence my research on it tomorrow by asking some questions on the issue on github. I would also mention you just incase you might have some answers for me. But as of now, I'm not sure how I will handle it yet.

Zaycodes updated the task description. (Show Details)Sun, Nov 3, 3:53 PM
Zaycodes updated the task description. (Show Details)Mon, Nov 4, 7:55 AM
Zaycodes renamed this task from Documentation improvements to the ~20 top 100 most viewed MediaWiki Action API pages on-wiki to Outreachy 19 Proposal: Documentation improvements to the ~20 top 100 most viewed MediaWiki Action API pages on-wiki.Tue, Nov 5, 2:04 PM
Zaycodes updated the task description. (Show Details)Tue, Nov 5, 2:48 PM

Hi @jeropbrenda, I added some information on how I will be implementing the bot.

Zaycodes updated the task description. (Show Details)Tue, Nov 5, 2:56 PM
Zaycodes updated the task description. (Show Details)Tue, Nov 5, 3:02 PM