===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 [[ https://www.mediawiki.org/wiki/API:Main_page | 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:
* Re-writing it, using this [[https://www.mediawiki.org/wiki/API:Documentation_template | template]] designed by the #developer-advocacy team after carrying out series of research on the issues associated with the documentation of the MediaWiki Action APIs
* Adding Sample codes to demonstrate the use of the APIs.
* Developing a bot that mass edits sample code from [[ https://github.com/wikimedia/mediawiki-api-demos | 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.
====Mentor
Brenda Jerop @jeropbrenda
**Have you contacted your mentors already?**
Yes I have
===Deliverables
| **Period** | **Task** |
|------------------|-----------|
|November 5th to November 25th | During this period, I intend to continue contributing to tasks on MediaWiki and also improve my skills. My progress on this can be tracked [[ https://github.com/zainababubakar | here ]]
|November 26th to December 3rd| **Community bonding period** - Aside from implementing all the guidelines on the [[https://www.mediawiki.org/wiki/Outreachy/Participants#Community_bonding_period | MediaWiki Outreachy/Participants#Community_bonding_period page]], I will also use the [[ https://tools.wmflabs.org/massviews/?platform=all-access&agent=user&source=category&target=https%3A%2F%2Fmediawiki.org%2Fwiki%2FCategory%3AMediaWiki_action_API&range=latest-20&subjectpage=0&subcategories=1&sort=views&direction=1&view=list | 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 [[ https://phabricator.wikimedia.org/T198916| 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 27th | **Week 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 [[ https://github.com/zainababubakar/MediaWiki-Action-API-Code-Samples | 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 [[ https://phabricator.wikimedia.org/T198916 | here ]].
|January 28th to February 17th| **Week 9 to week 12** - Develop a bot that mass edits sample code from [[ https://github.com/wikimedia/mediawiki-api-demos | 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.
|February 18th to February 24th| **Week 13** - Work on a tutorial for the bot and include it in the tutorials section of [[ https://www.mediawiki.org/wiki/API:Main_page | API: Main_page ]]
|February 25th to March 2nd| Finalize, review, organize, and document any necessary changes.
===Participation
* I would continue to communicate with Brenda Jerop @jeropbrenda on Zulip. I will host all sample codes and demo app on Github, in a [[ https://github.com/zainababubakar/MediaWiki-Action-API-Code-Samples | fork ]] of the [[ https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples | MediaWiki-API-Sample-codes]] repository.
* I will ask for help on the project's communication channel - [[ https://wikimedia.zulipchat.com/#narrow/stream/208145-outreachy19/topic/Phab.20T232816.20API.20documentation.20improvements | Phab:T2323816 API documentation improvements]] on **Zulip** and the [[ https://discourse-mediawiki.wmflabs.org | Wikimedia Developer Support forum]]
* I will be available on IRC during non-working hours to make some contributions to other MediaWiki projects.
===About Me
I graduated from [[https://www.alhikmah.edu.ng | Al-Hikmah University, Nigeria]] in 2015 with a degree in Computer Science and currently undergoing my Masters degree program in Computer Science in [[https://www.kwasu.edu.ng | Kwara State University, Nigeria]]. My journey in tech started in 2017 after my Graduation and [[https://portal.nysc.org.ng/nysc2/home | National Youth Service Corps (NYSC)]] program where I was priviledged to teach computer science to students who were preparing for their [[http://www.waecnigeria.org | 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 [[https://medium.com/interswitch-engineering-blog/introducing-the-1st-cohort-of-interswitchs-developer-academy-8569fda1bd21 | Developer Academy program]] at [[https://www.interswitchgroup.com | 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 ([[https://spring.io/projects/spring-boot | Spring boot]]), C#([[https://docs.microsoft.com/en-us/dotnet/core | .NET Core]]), [[https://www.mongodb.com | 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 [[https://github.com/slatedocs/slate | 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 [[https://github.com/slatedocs/slate | slate]] to improve the developer experience - I used [[https://github.com/thedevsaddam/docgen | 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 [[https://medium.com/interswitch-engineering-blog | Interswitch Engineering Blog]] and also reviewed articles written by other technical writers
* [[https://www.sonarqube.org/community/ | 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 [[https://en.wikipedia.org/wiki/Main_Page#Wikipedia's_sister_projects | 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**!!
- Improved the documentation for API:Mergehistory following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- **[[https://github.com/wikimedia/mediawiki-api-demos/pull/177 | Sample code for API:Mergehistory ]]** - **Merged**
-- **[[https://www.mediawiki.org/wiki/API:Mergehistory | Improved Mergehistory API documentation ]]** - **Approved**
- Improved the documentation for API:Stashedit following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- ** [[ https://github.com/wikimedia/mediawiki-api-demos/pull/183 | Sample code for API:Stahedit ]]** - **Merged**
-- **[[https://www.mediawiki.org/wiki/API:Mergehistory | Improved Mergehistory API documentation ]]** - **Approved**
- Added links to mediawikijs code sample from mediawikijs/README.md
-- **[[https://github.com/wikimedia/mediawiki-api-demos/pull/194 | mediawikijs README.md]]** - **Approved**
!!**Other contributions to mediawiki**!!
* https://phabricator.wikimedia.org/T223872 - **In progress**
=====Documentation
* Worked on a new API documentation platform for [[https://www.interswitchgroup.com | Interswitch]] using [[https://github.com/slatedocs/slate | slate]], designed guidelines and [[https://github.com/zainababubakar/Markdown-Template | templates]] to help ease internal developer's used of the new platform. Also improved the UI to match the companies official colours and onboarded [[https://www.interswitchgroup.com/paymentgateway/ | 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.
* Built a Springboot service to convert Postman Collections to Markdown/Html using [[https://github.com/thedevsaddam/docgen | docgen]] to ease APi documentation- https://github.com/zainababubakar/PostmanToHtml_Markdown (Markdown can be used on slate).
=====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:
* [[https://github.com/slatedocs/slate | 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 [[https://github.com/slatedocs/slate/issues/961 | 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 [[https://github.com/ollelauribostrom/rebus/pull/348 | link ]] to the contribution I made of 4 new rebuses.
* I contributed an [[https://github.com/josharsh/Learning-Object-Oriented-Python/pull/49 | example]] of object oriented python to an open source repo for [[https://github.com/josharsh/Learning-Object-Oriented-Python | learning object oriented python]]
===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 [[https://www.keycloak.org/ | Keycloak]] for user management and authentication, [[https://docs.hangfire.io/en/latest/ | hangfire]] to run background tasks to improve user experience when generating multiple vouchers at a time and [[https://www.rabbitmq.com/ | rabbitmq]] as a message broker between the two services.
-- [[https://github.com/zainababubakar/Voucherz | Voucher Service]]
-- [[https://github.com/zainababubakar/Redemption-Service | Redemption Service]]
- Url Shortening service using Spring boot and Spring Data Redis