Wikidata annotation tool/updates

Week 1 ( May 19 - May 26 )

 * Setup the environment at Wikimedia Foundation Labs Tools
 * Created a selector for Pundit using a wrapper for Wikibase API

Week 2 ( May 27 - June 3 )

 * Parsed Wikidata dump of properties into a correct format and made a vocabulary for Pundit to fetch predicates from Wikidata
 * Making a wrapper of OAuth API for Wikimedia
 * Test site is hosted here
 * This has become considerably slower due massive amount of predicates
 * Working on removing some of them as of now.

Week 3 ( June 4 - June 11 )

 * Changes the predicates loader from Wikidata dump to selector, now even properties are being loaded through a selector!
 * Made the OAuth API wrapper working.
 * Started making changes to CSS of the tool. Need to discuss this on #wikimedia-designers

Week 4 ( June 12 - June 19 )

 * Tried to integrate WikiMedia OAuth Login with Pundit's OpenID login system, but failed to do so. Discussion regarding this can be found here.
 * Discussed some new approaches with mentors and finally came to a conclusion to provide a Push to Wikidata button in the interface, which will sync user's Pundit Notebook's annotation with Wikidata through a bot and will use OAuth to recognize the user.

Week 5 ( June 20 - June 26 )

 * Made changes to frontend Pundit code and backend Login API code to fulfill the demands of Push to Wikidata Button.
 * This will work fully when bot will come into play

Week 6 ( June 27 - July 4 )

 * Started working on the bot
 * After discussing much and researching on PyWikipediaBot, we came to a conclusion that we don't need a bot for our this process we need some kind of autolist much like that of Magnus's autolists
 * This week was too much productive, I started developing autolist based on magnus tool and using Magnus' tool WiDaR for Wikidata API query via OAuth
 * I am able to receive now annotations from Pundit server's public API and transform them to Wikidata format.
 * Now only job left is feed this data retrieved and formatted to Wikidata

Week 7 ( July 5 - July 12 )

 * I completed the autolist mainly in this week and made it fully functional.
 * Autolists contain the functionality to interact with Mediawiki through OAuth just like WiDaR except that it has more options
 * I completed most of fetching and pushing to Wikidata part in this week
 * Now I fixed up Bajo to fetch annotations from Pundit open server APi and show them in a pretty way and give user an option to select which annotations to be pushed

Week 8 ( July 13 - July 21 )

 * I hosted the app on Tools lab and put a mail on Wikidata List for testing but didn't got much response
 * Added all the comments to code and made some documentations
 * Cleaned up all the code, Bajo and added more functionality to WAF
 * Now plugin is adding references also to the annotation for an item it creates
 * References are the source url and the time the annoations was created

Week 9 ( July 22 - July 29 )

 * This week I wrote mainly tests for Bajo in QUnit.

Goals for first half of internship

 * Make a wrapper of already existing Wikimedia API to get user logged in with plugin, this is hosted here
 * Attach this wrapper to Pundit and replace the old OpenID login system, by creating a new fork of Pundit.
 * Create a selector for Pundit to help it load objects(items) from Wikidata
 * Create a vocabulary of Wikidata predicates in required Pundit format and load it in Pundit
 * This will be done by taking properties dump from Wikidata and converting it to required format
 * Write Simple HTML tests for all of the work done.

Communication Plan

 * My primary means of communication with mentors is a dedicated mailing list which is open for anyone to join, here various people ponder over a single discussion to sort out the best way to do this.
 * I will mail Wikitech-l in case I need advice from more people
 * Usually I ask my small questions around IRC and I am available on most of the general channels related to Mediawiki.
 * Another means of frequent communications is Google Hangout, which is fast and reliable to get quick advice.

Lessons learned since April 21st

 * Things are not always as easy as they seem, usually they don't go right according to your way.
 * Patience is everything.
 * Discussion is important, but taking correct decisions is up to you, because in the end you are responsible.
 * It's good to use technologies you already know, get your hands into mud is not always the best option.