Jump to content

Wikidata annotation tool/updates

From mediawiki.org

Project Wrap Up Report[edit]

Weekly Reports[edit]

Week 1 ( May 19 - May 26 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

  • 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 )[edit]

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

Week 10 ( July 30 - August 5 )[edit]

  • Completed the tests through this week
  • Fixed some bugs and required improved as asked by testers and mentors
  • Started to work on packaging the whole project into bookmarklet.

Week 11 ( August 6 - August 13 )[edit]

  • Had troubles with packaging the predefined script wasn't working.
  • Learnt shellscript and rewrote the script again
  • Loading issues with bookmarklet, it was loading the original Pundit

Week 12 ( August 14 - August 16 )[edit]

  • Finally packaged the product with help of mentor and hosted it on Github pages
  • Hosted via Github CDN the bookmarklet is available at this link
  • May take some time to load due to big size.
  • Project wrap up report soon

Community Bonding Report[edit]

Goals for first half of internship[edit]

  • 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[edit]

  • 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[edit]

  • 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.


  • Main code is hosted here
  • Python bot's code will be hosted here
  • API wrapper's code will be hosted here on github and at tools