Name: Awah Nadege Tayebatu
IRC nickname on Freenode: tybanash
Web Profile: https://github.com/tybanash
Typical working hours: 2:00 AM to 5:00 AM and 4:00 PM to 11:00 PM(UTC +1)
The [[ https://www.mediawiki.org/wiki/API:Main_page |MediaWiki action API ]] is a RESTful web based API which allows the performance of wiki-actions such as searching, creating and editing wiki pages and acquiring wiki meta information. The aim of this project is to improve the documentation of ~20 top 100 most viewed MediaWiki action API pages. This will be carried out by doing the following:
- Updating the documentation of the API pages to follow the [[ https://www.mediawiki.org/wiki/API:Documentation_template | documentation template ]].
- Contributing code samples to illustrate the use of the different API modules.
In addition, a bot will also be developed which mass edits sample codes from the [[https://github.com/wikimedia/MediaWiki-Action-API-Code-Samples|MediaWiki API demos repository]] to the corresponding API page on mediawiki.org. My plan for the bot is listed below.
- **Software Architecture**: The bot will be created based on [[ https://www.mediawiki.org/wiki/Manual:Pywikibot | Pywikibot ]] framework in order to reduce the development time required for its creation.
- **Implementation**: It will be an automated bot which will handle cookies and log in automatically. It will have a `username` and `password`. The bot will run on //Toolforge//.
Due to the fact that the documentation of the wiki pages will be improved to follow the documentation template, it will lead to a coherent documentation of the API pages. The improved documentation together with the sample codes will help new users and contributors learn about the API and understand it easily. The bot on the other hand will help eliminate the time spent on implementing any changes made on the sample code files in the repository to the API wiki pages and vice-versa hence helping to maintain the API.
=== Possible Mentor
Jerop Brenda @jeropbrenda
- **Have you contacted your mentor already?** Yes, I have been communicating with my mentor throughout the application process.
==== Prior to Internship Period
**Before the accepted interns are announced: from today to 26th November**
- Finalize my pending contribution: I am presently awaiting review for my third contribution. So, during this time I will receive feedback and implement necessary changes.
- Work on other API and documentation related tasks on Phabricator.
**After interns are announced: 26th November to 3rd December**
- Use [[ 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 of pages under MediaWiki action API category ]] to determine the API pages that need improvement and do an evaluation of what has to be done on them.
- Work with the project mentor to finalize my project timeline and set evaluation feedback periods.
- Discuss about my idea of the bot.
- Create a blog.
**3rd December to 4th February (First 9 weeks)**: Work with 2 to 3 API pages per week in order to have improved at least 20 pages at the end of this time frame. This will be carried out by doing the following:
- For each module, I will write the sample code and update the README.md files while rewriting the API page in my sandbox using the documentation template. I will also create a sub page of the sample code and transclude to my sandbox.
- The next step will be to create a new branch using git bash, add the changes, commit and push them and create a pull request on github.
- Submit my sandbox page for review.
- Implement any changes requested.
- After pull request is merged, I will paste the contents of my sandbox to the API page.
**4th to 11th February (week 10)**
- Start working on bot.
- Go through the [[ https://www.mediawiki.org/wiki/Manual:Pywikibot | Pywikibot manual ]]
- Set up Pywikibot on Toolforge (locally).
**11th to 18th February (week 11)**
- Start working on the bot script.
- Work on feature to implement the changes in the repository on github.
- Test the bot and submit to the mentor for review.
- Implement all the changes requested.
**18th to 25th February (week 12)**
- Work on feature to check for new changes made in the repository on github.
- Test the bot and submit to the mentor for review.
- Implement all the changes requested.
- Start documenting the internal design of the bot.
**25th February to 3rd March (week 13)**
- Complete documentation.
- Submit the bot and documentation for review.
- Work on feedback received.
- Continue contributing to Wikimedia.
- Throughout the internship, I will communicate with my mentor through the [[ https://wikimedia.zulipchat.com/#narrow/stream/mediawiki-api-documentation-project | project's public chat on Zulip ]] and by any other means she finds convenient to discuss my work progress and challenges.
- When I face difficulties, I will also use the [[ https://discourse-mediawiki.wmflabs.org/ | Wikimedia Developer Support ]] channel to ask for help.
- I will use the [[ https://webchat.freenode.net/#pywikibot | Pywikibot IRC channel ]] to ask questions when developing the bot.
- I will use my [[ https://meta.wikimedia.org/wiki/User:Awah_Nadege | MediaWiki user page ]] and my blog to write about my work. This will be done weekly.
- My sample codes and bot will be hosted on github.
- I will submit my evaluation on time and follow any guidelines which will help me get involved in the community.
I graduated from the University of Buea, Cameroon in 2017 with a BSc degree in Geology . During my final year, I had a friend who was a computer engineering student in that same university. She was an advocate for women in tech. She always invited me for their events but I never honored any of her invitations. This was because I felt I will be lost and bored since I was not even offering a technology major in school. One day I took a bold step and attended one of their events. It was the International Women's Day tech style 2018 organised by Women Techmakers Buea. It was during that event that I got to know about //open source//. I had been a user of Wikipedia and Mozilla for years but never knew they were open source projects. During that event, I got to know about many open source organisations but the one that struck me the most was Wikimedia. This was because of the fact that I discovered the organisation had projects which people without programming skills could contribute to. Few weeks later, I joined the organisation and attended a few events like Wiki Loves Women Buea which helped me gain skills and I was able to contribute to Wikipedia, Wikidata, Commons and Wikivoyage.
When I graduated from the university, I was unable to secure a descent job with my degree. At the same time I was amazed at the number of technology jobs that were advertised on job sites daily and the lack of competent people to apply for these positions especially women. This caused me to have a rethink of my career path and I decided to give technology a try. I started taking coding courses online and I even took part in the Google African Challenge Scholarship 2018. It was thanks to this scholarship that I was able to learn the basics of HTML, CSS and JS. My learning journey so far has been a challenging one. There were so many times that I closed my computer in frustration and doubted whether this path was meant for me. This made my learning inconsistent.
In July this year, I read about Outreachy from a past intern's block. After getting to her to know more, she convinced me to apply for this round and explained how beneficial the internship would be for me. I then decided to apply for Outreachy and I made a resolution to take my learning journey very seriously.
- **Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?** I will not have any other commitments.
- **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 for Google Summer of Code because I have already completed my university program.
- **What does making this project happen mean to you?** Since I joined the Wikimedia Foundation, I had always wanted to contribute to MediaWiki but lack of skill set was a barrier. This application process has already helped me make contributions and also the coding and documentation skills which I will gain throughout the internship will also enable me to make more contributions in future. It also gives me joy knowing that I might be opportune to take part in a project which is used by so many people. This project will boost my confidence which will help me as I groom myself for a programming career.
===Contributions to Wikimedia
- I improved the documentation of this API page and contributed sample code to illustrate how the module is used to view the list of logged-in contributors and the count of anonymous contributors to a page. The [[ https://www.mediawiki.org/wiki/API:Contributors | documentation ]] and [[ https://github.com/wikimedia/mediawiki-api-demos/pull/179 | sample code ]] have been `approved` and `merged` respectively.
- I improved the documentation of this API page and wrote sample code to show how the module is used to export an RSD schema. The [[ https://www.mediawiki.org/wiki/API:Rsd | documentation ]] and [[ https://github.com/wikimedia/mediawiki-api-demos/pull/189 | sample code ]] have been `approved` and `merged` respectively.
- I was able to do this task with the help of the skills learnt while doing my first contribution. In addition, I also learnt about Really Simple Discovery (RSD) and found out that the output of this API page is in xml which is different from the JSON format recommended in MediaWiki which the other API pages produce.
====Other API and Documentation Tasks
-- I documented the return values and structures of [[ https://www.mediawiki.org/wiki/API:Edit | API:Edit ]]. I was able to learn about API:Edit. I studied the [[ https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/api/ | ApiEditPage.php file ]] which helped me know the possible scope of outputs for this API. This task gave me exposure to the source code and I also learnt about creating and editing redirect pages and got to know how an extension like ConfirmEdit can add to the output data of this API. I used the [[ https://www.mediawiki.org/wiki/Documentation/Style_guide | documentation guide ]] while doing the documentation. I have submitted my [[ https://www.mediawiki.org/wiki/User:Awah_Nadege/Sandbox/Return_values_for_action%3Dedit_API | documentation ]] for review.
====Contributions to other Wikimedia Projects
- **Wikipedia**: My work so far on Wikpedia has been to increase the female content of popular Cameroonian women. So far, I have used visual editing to create pages such as [[ https://en.wikipedia.org/wiki/Lynda_Raymonde | Lynda Raymonde ]] , [[ https://en.wikipedia.org/wiki/Grace_Decca | Grace Decca ]] , [[ https://en.wikipedia.org/wiki/Coco_Argent%C3%A9e | Coco Argentée ]] , [[ https://en.wikipedia.org/wiki/Janet_Fofang | Janet Fofang ]] and other minor edits.
- **Commons**: My contributions to Commons can be found [[ https://commons.wikimedia.org/wiki/Special:Contributions/Awah_Nadege | here ]].
- ** Wikidata**: My contributions to Wikidata can be found [[ https://www.wikidata.org/wiki/Special:Contributions/Awah_Nadege | here ]].
- **Wikivoyage**: My contributions to Wikivoyage can be found [[ https://en.wikivoyage.org/wiki/Special:Contributions/Awah_Nadege | here ]].
# [[ https://github.com/tybanash/Animal-trading-card-project | Animal trading card ]]: This project was my first coding project. It was done during the Google African Challenge Scholarship 2018. I used HTML and CSS to write a trading card that had information about my favorite animal. I created the web page from the design prototype that was provided.
# [[ https://github.com/tybanash/Nadege-s-Corner | Nadege-s-Corner ]]: This project was done during a course I took on OpenClassroom. My certificate for this course can be found [[ https://drive.google.com/file/d/1UoNguNn90_6kw5PZI_gu5s4VoV4eg0CO/view?usp=sharing | here ]]. In this activity, I created a page using HTML which listed my favorite books, foods, songs, and movies and styled it with CSS.
# [[ https://github.com/tybanash/Booked-Up- | Booked-Up- ]]: This app allows users to keep track of the books they are reading or have read. The project was done during a course I took on OpenClassroom. My certificate for this course can be found [[ https://drive.google.com/file/d/1UoNguNn90_6kw5PZI_gu5s4VoV4eg0CO/view?usp=sharing | here ]].