October 2011 Coding Challenge/Challenges

= Overall constraints =


 * Weekend time box
 * Needs to be interesting/exciting
 * Open source and checked into our github/gerritt, or any other publicly accessible place
 * No proprietary or non-free dependencies (other than in social networking mashups)
 * Set expectation that deployment is not guaranteed
 * Must support Wikimedia mission

= Pilot 1 =

Mobile Photo Upload challenge
Of course, Mobile Wikipedia is great for learning about the things around you. But: We need pictures. Millions of people have phones. How can we take advantage of location and mobile cameras? Build an app, or extend the existing mobile gateway, to demonstrate your ideas.

Pointers:
 * API:Upload
 * Android app frontend
 * Extension:MobileFrontend
 * GeoNames API, example query
 * |London|Paris&prop=images&redirects&imlimit=max Example API query to get images for multiple Wikipedia articles

Slideshow Challenge
How can we bring the millions of pictures in Wikipedia to our readers beyond the current low resolution thumbnails in articles? Find a way to invoke a beautiful, interactive HTML5 slideshow that works well on the desktop (extra points for tablet or mobile implementations), from any Wikipedia article.

Pointers:
 * w:Wikipedia:WikiProject_User_scripts/Guide
 * commons:MediaWiki:Gadget-GallerySlideshow.js

Making Wikipedia More Alive
Thousands of people edit Wikipedia every day. Wikipedia articles are constantly changing, with the most popular articles getting updated upwards of xx 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  knowledge is a dynamic, not static, thing.


 * Recent changes stream
 * Article updated ping
 * Trending articles
 * Top editors today
 * Post to social media
 * A simple page view counter since a user's edit (for the editor as reader)
 * etc.

Pointers:
 * How to become a MediaWiki hacker
 * Manual:Developing extensions
 * Manual:API

General dev resouces

 * #mediawiki
 * wikitech-l
 * Manual:Coding conventions
 * Manual:Pre-commit checklist
 * Security for developers
 * How to become a MediaWiki hacker
 * Manual:PHP unit testing
 * Manual:JavaScript unit testing
 * TODO: Make sure we have an up-to-date browser matrix (anything not supported by jQuery, >x% wikimedia/squids/SquidReportClients.htm)

How to post

 * Option 1: Post it to mediawiki.org (especially suitable for user scripts)
 * Option 2: Post to github.com or gitorious.org
 * Make sure you attach a license statement

= Parking lot =

Mobile Photo Viewing challenge
Help Mobile Wikipedia optimize selection of photos to view in more detail. Build an app, or extend the existing mobile gateway, to demonstrate your ideas.

Pointers:
 * MobileFrontend
 * Android app frontend

Mobile Contribution
Wikipedia is being accessed through mobile devices increasingly over time, but contribution through mobile devices is more challenging than on desktop computers. How can we make simple contributions, such as rating articles (ArticleFeedback) available to, and optimized for mobile devices.

Pointers:
 * API:Articlefeedback
 * Article_feedback

Collaborative Photo Review
The Commons media repository of Wikipedia gets thousands of images uploaded each day that need to be organized. Build an app, or extend the existing mobile gateway for making categorizing, sorting and labeling images be fun to use, targeting more casual computing devices such as tablets or mobile devices?

Social Networking Wikipedia Challenge
Everyone reads, chats, tweets on popular social networks about recent happenings around them. Wikipedia articles change at the speed of thought when events happen around the world. Wouldn't it be cool to have most recent major edited articles tweeted or a Commons photo you liked posted on Facebook. If you're an social app whiz, you can help.
 * Build apps to integrate your edits or popular edits with Twitter and Facebook.
 * Post favorite photos to Facebook on your friends walls.
 * Tweet about an article you enjoyed editing or reading on Wikipedia.

(TODO: Add Pointers)

Micro-contribution Framework
Many contributions to Wikipedia are granular and simple to perform, but relatively complex to find and perform. How do we build a framework for automatically finding work to be done, and providing users with a stream of small tasks they can perform in batches while reducing the effort required to perform them. How do we reward users for performing these taks. An example of a micro-contribution may be a possible spelling error: words in Wikipedia that do not exist in Wiktionary can be presented to a user who can determine if the word is really misspelled and select or enter the correct spelling.