=Profile Information=
Name: Edidiong Asikpo
Github: https://github.com/Edyasikpo
Blog: https://medium.com/@EdidiongAsikpo
IRC handle: Didicodes
Web Profile:
Resume: https://bit.ly/2OeORKn
Location: Lagos, Nigeria
Time Zone: (UTC + 01:00) West Central Africa
Typical working hours: 11 AM - 8 PM (UTC + 01:00) West Central Africa
----
=Synopsis=
Proposal for https://phabricator.wikimedia.org/T215682
==Summary==
From the [[ https://www.outreachy.org/may-2019-august-2019-outreachy-internships/communities/wikimedia/#documentation-improvements-to-the-20-top-70-most-v | project description ]] on [[ https://www.outreachy.org/ | Outreachy ]],
> 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. Our team did a little research on the state of the docs and documented a few problems and recommendations for the next steps. One of the issues we decided to address was inconsistency. For example, some pages had the automated API docs embedded; some didn’t, some pages had code samples, some didn’t, etc.
> As a first step, we designed a documentation template and used it to re-write top 20 viewed pages of the API. But, we realized we could not improve 128 pages all by ourselves, and opened it to new Wikimedia contributors for help. Our Outreachy intern Marty Hernandez Avedon put in a lot of good work in the project in Round 17 and improved the next ~20 pages and brought this project in good shape!
>The goal of this project in Round 18 would be to improve documentation of ~20 top 70 most viewed MediaWiki Action API pages on-wiki using the documentation template. If there is more time, then the next part of the project could be developing one or two demo apps around the use of Action APIs.
==Benefits==
A good documentation is the key to a great experience when consuming an API. As described in the summary above, a good amount of work has already been done to some MediaWiki Action APIs. In order to ensure consistency in all the [[https://www.mediawiki.org/wiki/Category:MediaWiki_action_API | 128 pages on the Action API on MediaWiki.org ]], all other pages need to be improved using the [[https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]].
This will help developers (newbies and experts) to quickly understand the value and usage of the Action APIs. The benefits of this project will not only enable consumer satisfaction but also increase the adoption of Mediawiki Action APIs.
----
=Mentors=
Srishti Sethi (@srishakatux) and Sarah Rodlund(@srodlund)
**Have you contacted your mentors already?**
Yes, I have been contacted both mentors
----
=Deliverables=
* 2 to 3 improved API documentation weekly.
* Biweekly blog posts about my progress on [[ https://medium.com/@EdidiongAsikpo | my blog ]] and weekly
updates on my [[ https://www.mediawiki.org/wiki/User:Didicodes | wiki user page ]].
* Build and create a tutorial for a demo app and include it in the tutorials section of [[
https://www.mediawiki.org/wiki/API:Main_page | API:Main_page]]. My demo app ideas can be found
[[https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/Demo_App_Ideas | here ]]
* Regular communication with my mentors and other community members at WMF.
----
=Timeline=
| **Period** | **Task** |
|March 26th - May 6th | During this period, I intend to continue contributing to tasks on MediaWiki and also improve my skills in Python and the Flask framework. My progress on this can be tracked [[ https://github.com/Edyasikpo | here ]]
|May 7th - May 19th | **Community bonding period** - Aside from implementing some of the guidelines on the [[https://www.mediawiki.org/wiki/Outreachy/Participants#Community_bonding_period | MediaWiki Outreachy/Participants#Community_bonding_period page]] that I haven't done yet, 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 work on during the internship. With this, I can add it to a spreadsheet and start making proper research about each of them while updating the spreadsheet with useful links and information that I will use when I start improving the API documentation.
|May 20th - July 22th | **Week 1 to Week 9** - 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/edyasikpo/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 continously update my progress [[ https://phabricator.wikimedia.org/T198916 | here ]].
|July 22nd - August 11th | **Week 10 to week 11** - Create and test demo app and start drafting a tutorial for the demo app.
|August 12th - August 20th | **Week 10 to week 11** - Complete the tutorial for the demo app and include it in the tutorials section of [[ https://www.mediawiki.org/wiki/API:Main_page | API:Main_page ]]
----
=Participation=
- I would continue to communicate with Sethi on Zulip and Phabricator and Srodlund via email. I will host all sample codes and demo app on Github, in a [[ https://github.com/edyasikpo/MediaWiki-Action-API-Code-Samples | fork ]] of [[ https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples | MediaWiki-API-Sample-codes repository ]].
- I will ask for help on 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 am a software developer who is really passionate about technology because I believe technology has the ability to automate and solve a lot of problems affecting the world generally. I have a BSc in Computer Science from Renaissance University, Nigeria.
I am passionate about encouraging newbies to join the tech space and talking about the benefits of technology. Leading the Facebook developer circle community in my city gives me the opportunity to talk to a large number of people about the benefits of technology.
I have a knack for learning new things and challenging myself to work on things that people would naturally thing I won't be able to do.
I love experimenting when writing codes (I always want to discover what more a library, module, etc can do). Solving problems and collaborating with people is my strong forte.
**How did I hear about outreachy?**
I heard about the outreachy program on Facebook, I saw it on a post made by an open source advocate on my timeline. It looked interesting so I asked him for more explanations then clicked on the link, read about it and decided to apply for it.
**Will I have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
No.
**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 not eligible to apply for Google Summer of Code.
**What does making this project happen mean to me?**
Developers want to integrate as quickly as possible to move forward in their software development, meaning they should immediately understand the value and usage of an API. As a developer, I know the importance of good documentation and how it helps to speed up our development process.
A few months back, I had a conviction that it is not only about knowing how to write codes but it is also about how you can communicate what you know to other people through writing. Writing is extremely very important I said to myself. One of my goals this year is to become a really clear and concise writer and working on this project will help me achieve that.
This project will also help to improve my writing and programming skills as it will make me think outside the box, carry out more research. It will definitely broaden my intellectual scope.
Personally, Wikipedia has always been one of the best sources of acquiring any information I was looking for while I was younger and contributing to one of [[https://en.wikipedia.org/wiki/Main_Page#Wikipedia's_sister_projects | Wikipedia's sister projects (MediaWiki) ]] would mean a lot to me because I will be contributing my fair share to providing information to different people in the world.
----
=Past Experience=
I have 2 years of experience as a software developer. I am most familiar with Java, Python, HTML, and CSS.
=====MediaWiki Project=====
I joined the MediaWiki community in 2018 as an outreachy applicant for the project “Documentation improvements to the top 50 most viewed API pages on the MediaWiki Action API”. Even though I didn't get selected as an intern, everything I learned during the application process improved my skills as a developer.
I am now a member of the Africa-Wikimedia-Developers and have been working with Nigeria's user group lead towards building a stronger Wikimedia community in Nigeria.
===Below are the contributions I have made to the MediaWiki organization:===
**!!MicroTasks!!**
- Improved the documentation for API:Rollback following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- **Sample code for API:Rollback** - https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples/pull/79 //**Merged**//
-- **Sandbox for drafting improvements** -
https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Rollback // **Approved**//
-- **Sandbox contents added to main namespace** - https://www.mediawiki.org/wiki/API:Rollback
- Improved the documentation for API:Embeddedin following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- **Sample code for API:Embeddedin **- https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples/pull/74 //**Merged**//
-- **Sandbox for drafting improvements** - https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Embeddedin //**Approved**//
-- **Sandbox contents added to main namespace** - https://www.mediawiki.org/wiki/API:Embeddedin
- Improved the documentation for API:Purge following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- **Sample code for API:Purge**- https://github.com/srish/MediaWiki-Action-API-Code-Samples/pull/5 //**Merged**//
-- **Sandbox for drafting improvements** - https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Purge //**Approved**//
-- **Sandbox contents added to main namespace** - https://www.mediawiki.org/wiki/API:Purge
- Improved the documentation for API:Account_Creation following the [[
https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]]
-- **Sample code for API:Account_Creation**
--- https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples/pull/1 //**Merged**//
--- https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples/pull/2 //**Merged**//
-- **Sandbox for drafting improvements** - https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Account_creation
- **Sample code for API:Links** - https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples/pull/49
**!!Documentation!!**
**Fix common typos in code T201491**
-- Fixed typo 'completeed' in [[ https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/ExtJSBase| ExtJSBase]]
-- https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/ExtJSBase/+/497135/ //**Merged**//
**Improve docstrings to the Pywikibot library** T118423
-- I modified the docstrings of specialbots.py by adding epytext fields and links to related API documentation.
-- https://gerrit.wikimedia.org/r/#/c/pywikibot/core/+/497205/ //**Merged**//
**!!Africa Wikimedia Developers!!**
**Populate the contributors.json file in awmd-stats tool with contributors details** T202230:
-- In this task, I learned how to work with gerrit and submit some patches.
-- https://gerrit.wikimedia.org/r/467513 //**Merged**//
**Doc for javascript functions needs proper indentation** T218281
- I re-arranged the doc comment indentation, tested the file to ensure that the changes I made didn't produce any errors. Working on this gave me an opportuinty to learn how to test Javascript files with npm.
-- https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/FormWizard/+/497295/ //**Awaiting Review**//
=====Other Projects=====
**!!Open Source!!**
* https://github.com/opendatakit/collect/pull/2045 ODK Collect is an Android app for filling out forms. It's been
used to collect billions of data points in challenging environments around the world.
Eager to give open source contribution a try in 2018, the above repository was the first time I made an open source contribution. I wrote codes that made the Collect App support escaping markdown characters using a
backslash. I used Java and regular expressions (Regex) to work on this. I was so excited when my commits were merged to the ODK’s main repository.
**!!Python!!**
* https://github.com/edyasikpo/Article-Finder This is a demo app for `API:Prefixsearch` that performs a prefix
search for page titles. A user who read a page on Wikipedia about star wars some months ago wants to read the page today. Unfortunately, the user has forgotten the title of the page, the only thing that comes to the user's mind is that the article started with star wars. With this demo app, the user can perform a prefix search with star wars and all the pages beginning with star wars would be displayed. With this, the user would be able to quickly glance through the list of pages displayed and find the exact page. I also hope to integrate this app with `API:Backlinks`.
* https://github.com/edyasikpo/microblog The Microblog web app was created with Python and Flask.
* https://github.com/edyasikpo/ToDo-List A ToDo-List web app built with Python and Django. Just like any
other ToDo List app, this app enabled a user to add items to the ToDo-List, cross off the items when it has been completed, uncross the item if it was mistakenly crossed off and also delete the items on the ToDo-list.
Working on this app thought me a lot about the MVC(Model View Controller) framework and utilizing repository pattern.
* https://github.com/edyasikpo/Dad_Jokes
**!!Android!!**
* https://github.com/edyasikpo/MedManager
This app helps patients remember to take their medication and provides tracking for the intake of the prescribed medication.
* https://github.com/edyasikpo/Waitlist
* https://github.com/edyasikpo/CurrencyConverter2
* https://github.com/edyasikpo/Sunshine
* https://github.com/edyasikpo/MaterialDesignCodelap
**!!PHP!!**