= Project Title =
Integration of IFTTT support for WikiData
= Personal Information =
Name: **Alangi Derick Ndimnain**
Email: **alangiderick@gmail.com**
IRC Nick: **d3r1ck**
= Background Information =
I am a fourth year Computer Engineering student, specializing in Software Engineering from the University Of Buea. I participated in as a mentor for the 2015 Google Code-In for Wikimedia Foundation(WMF) and mentored 6 projects. I have been contributing to WMF for about 7 months now and my contribution can be seen here: [[ https://gerrit.wikimedia.org/r/#/q/owner:D3r1ck01+status:merged,n,z | Contributions ]], where I have contributed patches across many different extensions.
= Programming Background =
- Google Code-In 2015 Mentoring - Projects Mentored.
-- T118390: Using Maniphest's advanced search Documentation Screen cast.
-- T116802: Watching a project to receive its notifications Documentation Screen cast.
-- T118389: Screencast showing how to request a project
-- T121911: Remove deprecated html elements like <font> from SemanticForms
-- T108432: Desktop: Search box inaccessible in Special:Gather
-- T122968: Add a composer.local.json-sample to MediaWiki core
- My Contributions to WMF Code base - Extensions Worked on
-- Echo Extension
-- Gather Extension
-- Graph Extension
-- Mailgun Extension (co-authoring)
-- MobileFrontend Extension
-- Newsletter Extension
-- Semantic Forms Extension
-- Thanks Extension
-- Wikibase Extension
-- WikibaseJavaScripAPI Extension
- Also worked on OOJs/UI and MediaWiki Core.
- Skills
-- Languages: PHP(Excellent), Python(Intermediate), JSON(Excellent), JavaScript/jQuery(Intermediate), CSS(Excellent), SQL(Proficient), HTML(Excellent).
-- Tools: Secure Shell, Git/Github, Gerrit, IFTTT, Linux OS(Ubuntu) and derivatives, Subversion, Vagrant, Composer.
-- Frameworks: Flask(A Python Micro-framework)
== Project Mentors ==
- Primary Mentors: @Slaporte, @Bene
- Secondary Mentors: @hoo, @Lydia_Pintscher
- Other Mentors: @Samtar
= Synopsis/Project Summary =
This project aims at integrating IFTTT(IF This Then That) feature to the WikiData extension. IFTTT technology being on of the most popular ways of making chains of web services communicate with one another, will be used to make WikiData to communicate with other web services across the web. This project involves studying the WikiData API, IFTTT technology internals and Communication of Web services.
= Detailed Project Description =
== Introduction ==
WikiData is a document-oriented database that focuses around Items. Each item represents a topic (or an administrative page used to maintain Wikipedia) and is identified by a unique number, prefixed with the letter Q—for example, Q1234. This enables the basic information required to identify the topic the item covers to be translated without favoring any language[1].
IFTTT is a free web-based service that allows users to create chains of simple conditional statements, called "recipes", which are triggered based on changes to other web services such as Gmail, Facebook. IFTTT is an abbreviation of **"If This Then That"** [2]. An example "recipe" can be sending an email if an Item is added to WikiData with a particular hash tag or a New Item is created with a specific label. In this light, the hash tag and the specific label are the "triggers" and sending the email is the "action".
== Implementation Approach ==
Since this feature has been implemented for Wikipedia by @Slaporte, I will use a similar approach in integrating the feature for WikiData. This will require me to write a web service application in Python(running on the flask framework) to read data from WikiData using the MediaWiki and WikiData API from time-to-time(intervals of 10 - 15 mins). This is to make sure that by chance, information in WikiData has changed such that the new information inputted in WikiData can be pulled using the WikiData API by the IFTTT WikiData web service to IFTTT(http://www.ifttt.com) for the actions to take place.
The IFTTT WikiData web service application we will develop will stand as an intermediate entity between IFTTT website(http://www.ifttt.com) and WikiData. Below is the set-up or architecture on how the proposed system should work.
{F3549542}
== Algorithm ==
This algorithm will be programmed to execute every 10 - 15 minutes, this is to ensure that the content of data in WikiData might have changed so that NULL information will not be returned all the time. Also the time is not very high because if it is, much data will be available which will increase the through put of the web service overloading it too much data slowing down the whole process.
```
IFTTT site connects and listens to get data from WikiData IFTTT web service;
IFTTT WikiData web service uses the WikiData API to read new data from WikiData;
if( changes in WikiData ) {
json_data = New data is return as JSON to the web service;
IFTTT WikiData web service sends json_data to IFTTT site;
IFTTT site furthers the processing;
} else {
No data gets returned;
Wait for 10 - 15 mins and tries to read data from WikiData;
}
```
== Components of the IFTTT WikiData web service ==
Based on the current implementation of this feature in Wikipedia, the various components will be used in the WikiData IFTTT web service.
- **Triggers**: These will contain various classes that will handle all the triggers that will be decided and implemented, for example; Creating a New Item with a specific label or hash tag, Editing an item etc... This component will be responsible for reading data using the WikiData API(https://www.wikidata.org/w/api.php) from WikiData. These data will be returned as JSON so that IFTTT can feed on it.
- Utilities:
- Validators:
- Views:
- Database Queries:
- Core:
- IFTTT:
= Testing and Verification =
<description>
= Deliverables =
<description>
= Development Schedule/Timeline =
<description>
= Time Availability =
I would be able to offer over 40 hours per week on the project. Also, to meet up with the demands of the project, I would be coding during weekends and regularly informing my mentors on the status of the project and regularly updating my logs in this respect.
= Why Wikimedia Foundation(WMF)? =
Wikimedia Foundation which focuses on encouraging the growth, development and distribution of free, multilingual, educational content, and to providing the full content of these wiki-based projects to the public free of charge is an organisation worth working with to make my continent(Africa) especially Cameroon to be sensitized about such organisations, their projects and projects which enriches knowledge to the society for free. This will go a long way to improve my community and Africa including the world as a whole in terms of education and academics "for free".
= Why WikiData Extension? =
Aiming at making my Final Year Project(FYP) to focus on Web Services and Data Manipulation, this extension has given me the opportunity to work on the project I have every dreamt. Integrating the IFTTT feature for the WikiData extension, this has made me to focus on this extension for my GSoC project 2016.
= Why me for the project? =
First and far most, looking the user facing nature of this project where hundreds of thousands of users will utilize, I am really inspired to work on the project and in addition to that, with the amount of knowledge I have acquired and my deep understanding of the requirements of the project, I think I'm in the best position to execute this project. Perhaps as I am going to use this project as my Final Year Project in my institution, this will give me an opportunity to promote WikiData and the MediaWiki project itself, sensitizing a lot of users in Africa to use this great feature.
= My Contributions =
Since I joined the Wikimedia Foundation(WMF) around September 2015 till now, I have contributed in several ways in the improvement of this organisation both in coding and mentoring perspectives.
- In terms of coding and submission of patches, I have over 20 patches merged, check [[ https://gerrit.wikimedia.org/r/#/q/owner:D3r1ck01+status:merged,n,z | here ]] and more are still to come.
- Also in terms of Mentoring, like I mentioned above in my Programming Background section, I mentored the Google Code-In 2015 program for the organisation. I mentored 6 projects.
= References =
[1] [[ https://en.wikipedia.org/wiki/Wikidata#Concepts | WikiData Concepts ]]
[2] [[ https://en.wikipedia.org/wiki/IFTTT | IFTTT Wikipedia Page ]]