==Profile Information
Name: Awah Nadege Tayebatu
IRC nickname on Freenode: tybanash
Web Profile: https://github.com/tybanash
Location: Cameroon
Typical working hours: 2:00 AM to 5:00 AM and 4:00 PM to 11:00 PM PM(UTC +1)
==Synopsis
===Project Summary
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//.
===Project Benefits
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.
==Deliverables
===Timeline
==== Prior to Internship Period
# **Before the accepted interns are announced: 4thfrom 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.
- Go through the API app tutorial section in order to know the different modules that are used in these applications as this will help me in filling the Demo app section of the documentation template. It will also help me improve my skills in Python, Flask, JavaScript and more.
# **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.
====Internship Period
# **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 readmeREADME.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 onusing 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 February to 3rd March (4 to 11th February (weeks)** 10)**
-Work - 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 check for new changes made in the JavaScript, PHP, Python and MediawikiJS folder in the API pages on mediawiki.org.
- 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.
- Work on feature to implement the changes to the JavaScript, PHP, Python and MediawikiJS folder in the API pages mediawiki.org.
- 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.
====**After internship**
- Continue contributing to Wikimedia.
==Participation
- 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.
==About Me
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 thisat event that I got to know about '//open source'//. I had been a user of Wikipedia and Mozilla for years andbut 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 other 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.
==Past Experience
===Contributions to Wikimedia
====Microtasks
# **API:Contributors**:
- 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.
- With the help of this task, I was able to learn how to use Phabricator and also gained understanding about API particularly the REST API type and its uses. I also learnt about the input and output formats of Wikimedia API. I learnt how to create and use a sandbox page, how to do source editing and work with translatable wiki pages. I also learnt how to use templates. I was also able to improve my skills in github and git bash. The sample codes for the API pages are in JavaScript, Python and PHP, so to be able to accomplish this task, I had to take some tutorials and learn the basics of PHP and Python because I was a newbie in these languages.
# **API:Rsd**:
- 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
- https://phabricator.wikimedia.org/T203025:
-- 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 ]].
===Other Projects
I have done some projects while taking online courses. My projects have mainly been in HTML, CSS and JavaScript.
# [[ 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/PIXEL-ART-MAKER-PROJECT | Pixel Art Maker ]]: It is a single-page web app that allows users to draw pixel art on a customizable canvas. It was done during the Google African Challenge Scholarship 2018. I was provided with a starter code and I wrote JavaScript code that allows the user to create a grid of squares representing their design, and apply colors to those squares to create a digital masterpiece. With the help of this task I was able to practice coding in JavaScript and use JQuery. I learnt how to define variables, access the DOM using methods of the document object, declare functions and attach them to DOM objects as event listeners.
# [[ 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 ]].