October 2011 Coding Challenge/Mobile



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

Wikipedia's current primary mobile experience is through the mobile site. An extension to our software (MediaWiki) called "MobileFrontend" manages that experience. Once you've familiarized yourself with both MediaWiki and the MobileFrontend extension, as well as the API, it should be relatively straightforward to make changes.

If you're more comfortable in app development, our Android app (based on the Phonegap framework) is very easy to get into; see below.

Some questions to think about:
 * What's the call to action for a Wikipedia user to upload photos? Is this part of the reader experience, or a separate experience?
 * What can we do with location data to help surface which articles need images?
 * How do we ensure that photos have some basic metadata and correct licensing info attached? See our UploadWizard as an example. Most mobile phone uploads should be much simpler as they will be the work of the person who has the phone.

Using the MediaWiki Upload API
If you're going to upload pictures, you probably need to know how the Upload API works. See the rest of the API documentation as well, and play with the live API.

Using Location APIs
GeoNames has a great API that allows you to pass in a latitude and a longitude and get back a long list of Wikipedia articles about nearby places. Here's an example query for that API. You can also read more about how GeoNames works at the GeoNames site.

You can also use the Wikipedia API to get further properties of these articles, e.g. '''|London|Paris&prop=images&redirects&imlimit=max which of them have images.

Mobile Application Development for Wikipedia
PhoneGap is a great open source platform for mobile development. There's an Android Wikipedia app which uses Phonegap and which you can fork on Github.

Easily prototype your ideas before you code
Balsamiq is great tool to help you visualize what your mobile workflow might look like before you start coding. It has built in support for iOS and and a community plugin for android