Crossposting to all lists of interest, sorry for the fancy long title but should be easier to search for future reference.
I recently had the opportunity to mentor during the GHCOSD[0] for the Wikimedia Foundation. We were two mentors from the Foundation, and I took on mentoring what we called the challenging tasks: collaborating your first patch and writing your first bot.
This e-mail is about my approach to the writing your first bot task, posting it here for future reference in case someone finds it useful, and for comments/opinions. My approach consisted of challenging the participants to write a game called Wikiflashcards. The game would use pygame[1] to display an index card with the name of a country and, after clicking, it would reveal the name of the capital city of that country. The frontend was all given[2] so that participants wouldn't have to worry about pygame at all (yet, we learned all the possible ways to install pygame on a relatively old Mac, pretty complicated), instead their task was to implement the backend using pywikibot to generate the list of cities and getting the capital for each city. This would naturally introduce the concept of listing a set of pages of interest, searching through the wikicode, mining templates, filtering links, etc.
This approach differs from that of teaching people how to use pywikibot to collaborate directly with the wikipedia. My hypothesis is that teaching how to use these tools to "scratch your own itch", personal research, hobby, etc would make people match pywikibot with their own interest, make them active users of the framework and that will eventually lead them to use their expertise to collaborate with any of the WMF projects.
After finishing a first version of the backend, I introduced the concept and purpose of Wikidata, challenged the participants to rewrite the backend using Wikidata items and properties and compare the two approaches - in particular, the complexity of the first approach vs the advantages of having a new backend ready for i18n and whatnot. The goal was to naturally introduce the need of a structured way to store and retrieve data, since I believe a direct introduction to Wikidata to someone that has never been involved in a task of mining data out of a Wikipedia looks very artificial.
At the end the challenge seemed to be very engaging for the participants, and I had positive feedback about it but that doesn't really tell if the goals listed above were achieved or not. If you have further comments or questions just let me know.
Disclaimer: I'm not implying this is a good idea (in particular, I'm not implying this was the best idea for this particular event), just my idea.
David E. Narvaez
[0] http://gracehopper.org/2013/conference/grace-hopper-open-source-day/ [1] http://pygame.org/news.html [2] https://gitorious.org/wiki-flash-cards/wiki-flash-cards