Proposal for https://phabricator.wikimedia.org/T204612
I have collected some resources that I think will be helpful during this project [[ https://docs.google.com/document/d/1RhS7TtFYzfPxXjbv_gUZhJISYzwaYXZaO91TEhQcEjQ/edit | here ]]
===Profile Information
Name: Edidiong Asikpo
IRC handle: Didicodes
Email: edidiongasikpo@gmail.com
Location: Akwa Ibom, Nigeria
Time Zone: (UTC + 01:00) West Central Africa
Typical working hours: 7PM -12 PM (UTC + 01:00) West Central Africa
User Page: https://www.mediawiki.org/wiki/User:Didicodes
===Synopsis
The MediaWiki Action API is a web service that allows access to some wiki-features. Some of the current uses of the MediaWiki Action API include: monitoring a MediaWiki installation, creating a bot to maintain a MediaWiki installation and logging into a wiki, accessing data, and posting changes by making HTTP requests to the web service.
The documentation of the MediaWiki Action API serves as a guide for anyone who is looking for more in-depth information about the API. It guides developers on how to integrate the API in their apps or websites explaining and providing code examples for many common integration use cases like authentication, page operations, search, etc.
=== Mentors
@srishakatux @srodlund
===Deliverables
* Write weekly reports
* Blog posts on my progress every two weeks.
* Regular communication with my mentors and other community members at WMF.
* Build a Demo App for API:Categorymembers
* Successfully improve the Top 30 most viewed MediaWiki Action API
====Summary
I intend to use the bottom-up approach to work on this project (i.e starting from the 30th most viewed MediaWiki Action API to the 1st) The reason why I want to do this is because the top most viewed pages need more expertise because it is viewed most by the world. So using the bottom-up approach would equip me enough knowledge to tackle the most viewed pages such as the API:main page, API:query, API:Web API’s hub, etc.
I would be following the format below:
1) Documentation:
Create a sandbox page, copy and paste the documentation template on the sandbox created.
2) Research and Investigation:
* * First, I will go through all the API pages that have already been improved by the Mediawiki team and look
for the one which is almost similar to the page I want to work on. For example, when I was working on the
Account_creation API, I used the Login API page for reference since both pages had similar contents.
* * Secondly, I would browse about the API: the meaning, usage, etc. For example when I worked on
API:purge, I had to understand the definition of the word purge, how it differed from delete and how it
could be used. Also, when I worked on the Account_creation API, I researched about other companies
Account_creation API to get a better understanding; some of these companies include paypal link here
[[https://developer.paypal.com/docs/classic/api/adaptive-accounts/CreateAccount_API_Operation/ | here]],
Oracle apps: [[http://alloracleapps.com/oracle_apps/create-customer-account-api/ | here]], Oracle apps: link here, IInstagram: [[
https://developers.facebook.com/docs/instagram:-api/getting-started#register | here]]
3) Coding
*I * I noticed most of the contents of the page I was supposed to improve had a lot of API’s so I learned how to
use http requests and API’s to communicate with websites using the icanhazdadjoke.com API link here:
https://icanhazdadjoke.com/api and the MediaWiki API link [[ https://www.mediawiki.org/w/api.php| here
]]. I was able to successfully communicate with the API link [[ https://github.com/edyasikpo/Dad_Jokes|
here ]], doing this gave me a clearer picture of what I was supposed to do.
*I * I copy the link to the API page and run it on postman(Postman always produce the correct result.) I noticed that whenever I clicked on most example links on API pages it returned back an error "code": "mustpostparams", especially with API pages whose examples required a post request.
*Develop the sample codes for the API, format it on pylint and ensure it follows the pep8 Style guide, then send a pull request to this repository
4.) Testing that whenever I clicked on most example links on API pages it returned back an error "code":
Here "mustpostparams", the mentor tests the sample codes sent and provides feedback. I get feedback on my codes and sandbox page from my mentor then make the necessary changes and resubmit for corrections.
5.) Deployingespecially with API pages whose examples required a post request.
* Develop the sample codes for the API, format it on pylint and ensure it follows the pep8 Style guide, then
send a pull request to this repository
4.) Testing: Here, the mentor tests the sample codes sent and provides feedback. I get feedback on my codes and sandbox page from my mentor then make the necessary changes and resubmit for corrections.
5.) Deploying: After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of my sandbox page and then paste it in the source file.
===Timeline
**Note:** The most viewed API pages is not constant that why I decided to indidcate it with figures. When the internship starts I will update these figures to actually API pages.
16th November - 3rd December
* Community bonding period.
* Study the API pages that have already been improved and integrated(This will help me gain more
knowledge).
* Study the Top 30 API pages and start writing sample codes for every page that requires sample codes(I am
doing this because I realized that writing the codes took a longer time than improving the documentation
itself for me, I believe this will make working on the pages easier when the internship starts).
* Complete a python course I started on udemy here to give me a better understanding of making simple and
complex HTTP requests to APIs using Python
* Read related API documentation
* Start working on the API:Categorymembers Demo App
Week 1 (4th December, - 10th December)
* Create a sandbox page for the most viewed API number 30 and 29
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
*Format codes using pylint
*Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and wait for a review write the sample codes
* Format codes using pylint
*After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of my sandbox page and then paste it on the original API page. Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 2 (11th December - 17th December)
* Create a sandbox page for API pages 28 and 27
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
* write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 3 (18th December - 24th December)
* Create a sandbox page for API pages 26 and 25
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then
write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 4 (25th December - 31st December)
* Create a sandbox page for API pages 24 and 23
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then
write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 5 (1st January - 7th January)
* Create a sandbox page for API pages 22 and 21
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
* write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 6 (8th January - 14th January)
At this point, I must have acquired more knowledge about improving the API pages and would start working on 3 pages per week
* Create a sandbox page for API pages 20, 19 and 18
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then
write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 7 (15th January - 21st January)
* Create a sandbox page for API pages 17, 16 and 15
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
* write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 8 (22nd January - 28th January)
* Create a sandbox page for API pages 14, 13 and 12
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then
write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 9 (29th January - 4th February)
* Create a sandbox page for API pages 11, 10 and 9
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
* write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 10 (5th February - 11th February)
* Create a sandbox page for API pages 8, 7 and 6
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then
write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 12 (19th February - 25th February )
* Create a sandbox page for API pages 2 and 1
* Look for similar API pages, compare, review and improve.
* Browse about the API’s to get more information
* Run the API example link already available on postman if it gives an error message on the web browser, then write the sample codes
* write the sample codes
* Format codes using pylint
* Make a pull request to [[ https://github.com/srish/MediaWiki-Action-API-Code-Samples | git repository ]] and
wait for a review
* After the codes has been merged and Sandbox documentation has been accepted, I will copy the contents of
my sandbox page and then paste it on the original API page.
Week 13 (26th February - 4th March)
* Give final touch to the top 30 most viewed MedaiWiki Action API pages
* Give final touch to Demo App
* A blog post for my complete journey.
5th March and later
* Celebrations
* Start code-based contributions in WMF. Explore other projects on WMF to contribute to.
* Be an active member of the community.
* Participate in future programs as a volunteer.
===Participation
* I will make a publish my source codes to the already existing MediaWiki-API-Sample-codes repository on
GitHub. Codes will be uploaded to the edyasikpo branch on Github periodically and will be merged with the
master branch once review and testing are done by the mentor.
* I will be online on Zulip in my working hours 10 AM - 12 PM (UTC+01:00) West Central Africa to collaborate
with the mentors.
* I will communicate my progress daily or weekly (as need be) with my mentor on Zulip
* I will use Phabricator or GitHub for managing bugs and subtasks.
* I will be available in Gmail and the IRC channel to be contacted when needed in the non-working hours.
===About Me
I am a fresh graduate from the Department of Computer Science, Renaissance University, Nigeria. I am a keen observer and I love to learn new things and work in collaboration with people. This will be my first participation in the Outreachy Programme.
- How did I hear about outreachy?
I heard about the outreachy program on social media(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?
Yes, the Compulsory NYSC for all graduates in NIgeria. I will still be avaliable to work on the project from 7pm -12pm
- What does making this project happen mean to me?
I am particularly interested in this project because of all the amazing information I have gotten from the free encyclopedia (Wikipedia). Wikipedia has always been one of the best sources of acquiring any information I was looking for since I was younger, I literally always found almost everything I needed and it got me wondering how the owners of Wikipedia could achieve this. So it would basically be an honor for me to contribute and help more people in the world get the correct information they are all searching for. The fact that the codes or documentation I contribute would be merged someday and thousands of people all over the world would use it is the most exciting part of this journey.
===Past Experience
I have experience in working with android development with proof [[https://github.com/Edyasikpo|here]]. I am familiar with GitHub, link to proof [[https://github.com/Edyasikpo|here]]. Skill sets include Python, HTML, CSS, Java, XML, I am also a lead for Facebook Developer Circles in Uyo, Nigeria with proof [[https://web.facebook.com/groups/DevCUyo/members/|here]]
I started contributing to an open source organization named Open data Kit early this year. ODK is an Android app for filling out forms. It's been used to collect billions of data points in challenging environments around the world. Contribute and make the world a better place! I solved some code based issues in Java and XML, the links to those are -
====Open Data Kit
Open Data Kit
* https://github.com/opendatakit/collect/pull/2016
* https://github.com/opendatakit/collect/pull/2045/files/8fd0cee6c79a718142d11a3da6cf62767a54d410
* https://github.com/opendatakit/collect/issues/2002
* https://github.com/opendatakit/collect/issues/2014
====MediaWiki
I joined the MediaWiki Community on the 20th of September, 2018 and I am an active member of the MediaWiki community, view profile [[ https://discourse-mediawiki.wmflabs.org/u/Didicodes/summary | here ]] For this project, it was important for me to understand;
* The meaning of the MediaWiki Account API,
* How to edit wiki pages,
* How to use or write Templates,
* How to use Phabricator,
* Write codes in python,
** How to translate pages.
In order to understand the above-mentioned skills, micro tasks were provided. The links below show the microtasks I was able to complete;
===== Microtask Completed
* https://github.com/srish/MediaWiki-Action-API-Code-Samples/pull/1
* https://www.mediawiki.org/wiki/User_talk:Didicodes/Sandbox/API:Account_creation
* https://github.com/srish/MediaWiki-Action-API-Code-Samples/pull/5
* https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Purge
* https://www.mediawiki.org/wiki/User:Didicodes/Sandbox/API:Random
* https://github.com/srish/MediaWiki-Action-API-Code-Samples/pull/12