Personal Information
Name: Perside Rosalie Mondjo Tchelibou
Email: rosalieperside@gmail.com
Location: Cameroon Africa
IRC NickName: r054l13
Github Profile: https://github.com/rosalieper
Gerrit profile: https://gerrit.wikimedia.org/r/q/persiderosalie%2540gmail.com
Synopsis
Introduction
Wikimedia Commons is a Wikimedia Foundation project and an online repository of images videos and other media files. A Twitter bot is a type of bot software that controls a Twitter account via the Twitter API. This project aims at creating a Twitter bot similar to NYPLEmoji bot for pictures on Commons. If a user tweets an emoji to the bot, the bot should reply to the tweet with an image from Commons that represents the same emotion as the emoji. That is an image selected randomly from Commons, that matches the emoji. Note that the bot will not only use graphical emoji but also text based emoji ( as this: ;-) ).
This project will make it possible for most Wikimedia Commons pictures to be exposed to the world. Hence bringing more awareness to Commons.
Delivrables
- Creation of a twitter developer application and new twitter account for the bot
- Automatic startup and authentication of the twitter bot.
- Set Up a community-maintained table mapping emoji to images
- Bot replies to an emoji tweet with an image and a link to the image from Commons. At the moment the image will not be in preview status. It will just be the image, license and author ( and maybe a small description if the mentors approve of the idea ) with the link to the image
- Setup project on tool labs for online testing.
- Developer manual will be written for project
Possible Mentors
Primary mentors: @ArielGlenn, @D3r1ck01, @Dereckson
Co-mentor: @MelodyKramer
Implementation Approach
Pictures will be manually selected and mapped on to an emoji unicode in a JSON file. There will be 5-10 pictures and author name mapped to one emoji, such that the random selection is made from the list of available pictures for that emoji. Hence, making user experience amazing since the pictures change from time to time.
Once the bot receives an emoji, It is being converted to text/unicode, that will be used to search for an image in the json table.
There will be a blacklist of emoji as well, those emoji the bot will not reply to. A JSON array for the mapping of emoji unicode to picture could be similar to this.
{ "emoji-unicode" "emoji-text": [ "ImageUrl 1", "ImageUrl 2", "ImageUrl 3" ] }
The bot will listen to an event ‘tweet’ before replying. If the bot receives a tweet, the event will be emitted and then the action ‘reply_tweet’ executed. I will use the Stream API to listen to events emitted, the twit API will be to create a twit instance for requests to twitter’s APIs
Event:
stream.on('tweet', function (tweet) { ... })
Action:
reply_tweet.getText()
Project Timeline
Describing the timeline of my work with deadlines and milestones, broken down in 2 weeks including time I’m planning to allocate for investigation, coding, deploying, testing and documentation:
April 23 - May 14(week1-2)
- Community bonding.
- Put the project on Gerrit and necessary setup on Toolforge.
- Make deeper search on the libraries or APIs related with NodeJS necessary for the project.
- Communicate and interact with mentors and/or community member to get a few suggestions and ideas.
May 15 - May 28(week 3-4)
- Create a new twitter app and account for the bot (with necessary permissions).
- Learn and understand the NYPL Emoji bot.
May 29 - June 12 ( week 4-5)
(week 4)
- Start implementation of the bot ( edit the configurations in the fork to suit the customer_key and customer_secret for our bot ).
- Make a list of blocked emoji and implement a user friendly response for users who tweet such emoji to the bot.
- Make a mapped list of emoji to Commons picture using JSON.
(week 5)
- Edit the image.js and related necessary files file from the fork and add getAuthor() method, so it returns both image and Author to reply.js.
- Deploy and Test application on Toolforge ( alongside fixing bugs found after testing).
- First evaluation phase starts.
- Bot receive tweet and reply with any dummy content for testing(DEMO).
June 13 - June 28 ( week 6-7 )
(Week 6)
- First evaluation phase ends.
- Implementation of bot continues till ready beta version (Edit script/reply.js and related necessary files in the fork to have author and Image returned to the twitter API).
- Bot reply with image when tagged (DEMO)
(Week 7)
- Bot reply with image and Author (DEMO)
- Deploy and test application on Toolforge.
June 29 - July 12 ( week 8-9 )
(Week 8)
- Second evaluation starts and end.
- Continuous improvement of the bot from mentor comments and first evaluation.
- Bot reply with both image, author and license(DEMO).
- Add user friendly error emissions.
(Week 9)
- Implement automatic start and authentication of the bot
- Bot automatically starts (DEMO)
- Implement twitter reply to text like emoji as ‘ :) ’ for the bot.
- Reporting of work progress.
July 13 - July 29 (week 10-11 )
(Week 10)
- Write unit tests for the various bot functionalities and make sure to have a large percentage of code coverage.
- Bot reply to text like emoji (Demo)
(Week 11)
- Improve on documentation of the code (code comments etc.).
- Deploy and Test application on Toolforge.
July 29 - August 14 ( week 13-14 )
- Reporting of work progress.
- Continuous fixes for the bot where applicable.
- Documentation of a developer manual for external contributors.
- Submission of final work.
After Internship
- Continue maintaining the bot.
- Continue contributing to MediaWiki and it's extensions
Participation
Describing how I plan to communicate, progress and ask for help.
In other to keep track of the progress of my work, I will be documenting the work done every two weeks and on weekends, I will send via mail, a report of the progress to my mentors or use a blog for reporting, while keeping the wiki report page up to date.
I shall be communicating more on IRC, phabricator and email with the mentors and maybe on hangout and other means they will find appropriate or more comfortable to use. Also, I will do a lot of personal research on my own so as to have a minimum number of questions to ask the mentors, but of course communication is very important between mentor and candidate and as such, I will make sure to always be reachable and available.
About me
I am a final year student studying Computer Engineering at the University of Buea. I have been volunteering to the Wikimedia Foundation for more than two years and since then It has helped me improve on my skills and the more I code on MediaWiki the more I am comfortable in it. I am hoping If I get selected for this project to use it as my final year study project as it is a very exiting project, and I will learn a lot from it. My work as a volunteer in the foundation ranges from editing articles and Wikidata items to fixing bugs and reporting them. I am the program coordinator for the AMWD(Africa Wikimedia Developers) project and since the start of the project I have always been among the top 3 volunteers from Africa on MediaWiki (see here for 2017 and here for 2018). In addition to that, I volunteered to mentor GCI/17 (Google Code In 2017) @ Wikimedia.
Why me for this project
This project is an interesting one for me to learn from, just in developing my proposal I have learnt a lot and I wish to grap more. Also as a program coordinator for the AWMD program, If I get selected for such a program and complete it, it will be very encouraging for people in my community to get more involved into volunteering. Especially African girls who are my main targets presently. Added to that I have a considerable JavaScript knowledge and I am very fast at learning especially when I am excited about something.
Using this project as my final year study project will equally bring more awareness to the existence of Commons and other Wikimedia projects.
Basically my interest in this project is for 3 things.
- Learn and improve on my skills
- Use it as a means to impact my community and encourage female developers to volunteer for the foundation(As no African Female has ever been selected for a GSoC program in Wikimedia)
- Use it as my final year project defense and bring more awareness to Wikimedia projects
Past Experience
- Created a twitter bot for my personal twitter user account to favorite and re-tweet tweets with the Wikimedia hashtag and Wikipedia hashtag ( see here : for code )
- When I just joined Wikimedia In 2015, I applied for OPW (Outreach Program for Women now called Outreachy) and I was a potential student for the project, "Implementation of HTML support for MediaWiki" but I was rejected because It was not a program for students and even my mentors didn't know about that till Last minute. Was quite a bad experience :(. But After that my interest in contributing to Mediawiki did not change and I kept on till date. Now I am interested in bringing in more volunteer developers from my community.
- I have also got exciting experiences in Wikimedia like applying for scholarships to attend a conference and getting the scholarship. :)
Other Info
- Last year I got a full scholarship to attend Wikimedia Hackaton but unfortunatle did not go due to visa issues. Also got a partial scholarship for Wikimedia Diversity conference.
- This year I got one full Scholarship for WikiIndaba and was able to be present. I learnt alot from the experience and am ready to impact my community for the 2030 Wikimedia goals.
- I also intend to present this project for the next WikiIndaba (if the mentors don't mind). For people to know it and use it
- To see my past contributions you can check on my Gerrit profile (see Personal info for link) and phabricator profile