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