October 2011 Coding Challenge/Real-Time
This page is obsolete. It is kept for historical interest only. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date.
Thousands of people edit Wikipedia every day. Wikipedia articles are constantly changing, with the most popular articles getting updated upwards of 100 times a day. But there is very little on the article page that tells the reader that anything has changed. We would like to make the articles on Wikipedia appear more alive, so that our readers understand that knowledge is a dynamic, not static, thing.
Here are a few themes that participants might want to explore:
- Recent changes. How might you retrieve article change data in a systematic way and represent that data in a compelling visual way?
- Article updated ping. How could we notify a reader when they're looking at a page that new changes have been made while they were looking at it?
- Trending articles. How might you identify the articles that are currently most interesting to users?
- Top editors today. How might you determine which editors are having the most impact on Wikipedia today?
- Page views since last edit. How might an editor be able to see how many people have seen an article since their last changes to it?
- Simultaneous edit warning. Would it be easier to compile two different and accurate edits of the same page at the same time if each authors were warned that there was another change in progress?
These are only a few ideas. Wikipedia collects and exposes a lot of interesting data, and there could be many creative ways to collect and represent that data.
You could go many different development routes here: Write a MediaWiki extension, a user script, or an external service calling the API. You can also leverage the IRC recent-changes feed. Note that basic recent-changes visualizations are pretty easy to do and lots of cool work has already been done in that area (e.g. wikistream which shows Wikipedia recent-changes and recent image uploads).
Writing a user script
Page traffic data
Manual: Developing extensions
Be sure to read the extensive documentation about developing extensions for MediaWiki sites.
The MediaWiki API is extensive, and has exhaustive documentation.
General new developer resources
Becoming a MediaWiki hacker
Here's a good introduction on what's involved in becoming a MediaWiki hacker, including instructions for installing your own MediaWiki instance.
IRC is short for Internet Relay Chat, and open source developers talk on IRC all the time. The IRC Primer is a good overview of how IRC works. Friendly MediaWiki developers can be found on the #mediawiki channel on irc.freenode.net (web interface). If you are having difficulties figuring out how to write MediaWiki code, you can ask for help there. Be aware, though: if you want someone to help you, do some homework first. If the answer to your question can be found easily by typing the question into Google, you might not want to ask it on IRC.
Mailing list: wikitech-l
If someone isn't immediately available to help you on IRC, you can also join the wikitech-l mailing list and ask questions there. The same rules for asking questions on IRC apply for asking questions on mailing lists.
Coding conventions are extremely important in the MediaWiki universe. Read them and understand them. If you do not conform to them, your chances of winning go down significantly.
Here's a useful pre-commit checklist. Before you decide that your submission is final, go through this checklist. You'll be glad you did.
Security for developers
Wikipedia gets half a billion visits every month, so good security practices are extremely important. Be sure to review the security documentation for Mediawiki developers.
Because Wikipedia is viewed by so many users, browser compatibility matters. (Remember: 0.1% of 500 million users is still half a million users.) Your new code may not work on every browser, but you must not break older browsers, either. Be sure to familiarize yourself with Wikipedia's browser compatibility policy.