=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/Apps | here ]]
* Regular communication with my mentors and other community members at WMF.
----
=Timeline=
| **Period** | **Task** |
|------------------|-----------|
|March 26th to 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 to 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 a 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 to July 21th | **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 continuously update my progress [[ https://phabricator.wikimedia.org/T198916 | here ]].
|July 22nd to August 11th| **Week 10 to week 12** - Create and test demo app and start drafting a tutorial for the demo app.
|August 12th to August 18th| **Week 13** - 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 ]]
|August 19th to August 20th| Finalize, review, orgainze, and document any necessary changes.
----
=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 the Google Summer of Code program.
**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=====
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.
===**!!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:Emb//eddedin **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!!**===
**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**
**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**
===**!!Africa Wikimedia Developers!!**===
**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 opportunity to learn how to test Javascript files with npm.
- https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/FormWizard/+/497295/ **Awaiting Review**
**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**
==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 - When I worked on this, my intentions was to build a demo app for API:Prefixsearch. After submitting it to the mentor for review, she made me understand that demo apps require the use of multiple API modules to come in action. However, this app displays a prefix search of a page title, the app also enables a user to click on these pages which were displayed and read the contents of the page. Working on this made me learn more about the flask framework and its integrations.
* https://github.com/edyasikpo/microblog - This repository describes my journey to learn how to create web applications with Python and the Flask framework. The [[https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world| Flask Mega tutorial]] contains 23 chapters clearly explaining how to work with python and flask. At the end of the tutorial, I was able to create a blog.
* 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 - A python app that sends a GET request to the dad jokes API. A user types in a topic and the app displays jokes related to that topic.
**!!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 - An android app that follows the crud function. The app can be used to add, delete, update names of guests in a restaurant
* https://github.com/edyasikpo/CurrencyConverter2 - This was a task at my internship to create a currency converter app that converts Nigerian currency to that of 20 different countries. I had to query an API in order to make it work.
* https://github.com/edyasikpo/Sunshine - While working on my Udacity scholarship, This project was the last app to build to finish up the course. It is an android that uses the Open Weather API to display the weather details in a particular location. To display the locations, I integrated google map API.
* https://github.com/edyasikpo/MaterialDesignCodelap - I created this repository to teach people how to use material design in android studio at a tech event.