User:Johnnorro/GSoC 2012 application

Identity
Name: John Norrington Email: johnnorro@gmail.com Project title: Integrate "upload from Flickr" and other photo-sharing websites

Contact/working info
Timezone: BST (UTC+01:00) Typical working hours: Monday - Friday, 10am - 5pm IRC or IM networks/handle(s): johnnorro on Freenode, j.norro on Skype

Project summary
Photo sharing websites such as Flickr and Picasa have vast quantities of images that are released in the public domain or with attributive licenses. Many of these images would make an excellent addition to Wikimedia Commons.

This purpose of this proposal is to add 'upload from Flickr and Picasa functionality to the UploadWizard extension. It will maintain the license and metadata information. Furthermore it will permit multiple uploads at once using Picasa albums and Flickr collections and sets, allowing selection, renaming and categorization.

This will benefit Wikimedia by automating a lot of the work in the importing of images that are hosted on photo sharing websites. This will allow contributors to upload many more images, faster.

Required deliverables

 * Upload a picture from Flickr using UploadWizard, maintaining license and metadata information
 * Upload a picture from Picasa using UploadWizard, maintaining license and metadata information
 * Upload whole/part of a set from Flickr using UploadWizard
 * Upload whole/part of a album from Picasa using UploadWizard

If time permits

 * Match MediaWiki categories to Flickr tags
 * Add search functionality for Flickr and Picasa
 * Add other photo-sharing website eg. Photobucket

Project schedule

 * May 14th: End of university exams
 * May 14th - May 21st: Research developer documentation and APIs before project commencement
 * May 21st: Start coding
 * May 21st - May 23rd: Write scripts to extract photo, license and metadata from Flickr and Picasa
 * May 24th - May 25th: Write scripts to convert photo metadata and licenses
 * May 28th - June 6th: Add single image upload from Flickr to UploadWizard with categorization and naming
 * Create HTML elements (form to enter photo id, div to show image with information)
 * JavaScript to get image using AJAX and check license
 * PHP to import the image
 * June 7th - June 8th: Extend single upload image to upload from Picasa
 * June 11th - 15th: Write scripts to parse album/collection/set from Picasa/Flickr into a feed
 * June 18th - June 28th: Extend UploadWizard to allow upload from multiple files via feed, allow selection, renaming and categorization
 * Create HTML elements (div to show multiple images with form for renaming, categorization and selection)
 * JavaScript to get images and metadata using AJAX
 * PHP to handle image selections, import selected images and store metadata
 * June 29th - July 3rd: Add other photo sharing websites eg. Photobucket
 * July 4th - July 6th: Auto-categorization using tags
 * July 9th - Stop coding new features
 * July 9th - July 13th: Prepare mid-term evaluation
 * July 16th - July 20th: Documentation
 * July 23rd - July 27th: Testing and bugfixing
 * July 30th - Aug 3rd: Pre-deploy review
 * Aug 6th - Aug 10th: Merge with trunk
 * Aug 13th - Aug 20th: Final evaluation

About you
I am a Computer Science student at the University of Strathclyde, Glasgow in my penultimate year. Over the last three years of my course my coding skills have improved tremendously and I now feel competent enough to undertake a task such as this project. I have experience in writing code in many languages including Java, PHP, C and JavaScript. I have completed freelance work for small businesses including the development of a interactive website and a widget for a eBay store, both extensively using jQuery. I have also been playing around with functional programming in Haskell and have been finding it unique and an interesting way to solve problems.

I have a passion for doing voluntary work. Over the last three years I have served on the committee of the university skydiving club, including as the current captain, which has taught me alot of essential organisation, teamwork and communication skills. As part of my duties on the committee I have overseen charity events that have raised thousands and I built the current club website with phpBB, Joomla and a few custom modules including a random image generator that uses the Picasa Web Albums API and a event list that uses the Facebook Graph API. Recently I was elected to serve as Media and Communications officer for the university Sports Union, a position that I accquired due to the previous work that I have put in with the skydiving club.

Getting to work on MediaWiki would mean a lot to me. It would be a Summer job that I would enjoy and truly passionate about. Wikimedia and its various projects have most definitely made an impact on my life. I use Wikipedia to research something almost every day and regularly use other Wikimedia projects and other websites that run a Wiki based on MediaWiki. Over the years I have contributed to lots of articles on various wikis and I would love the opportunity to do a set of work as large as this to give something back to the community.

Participation
My usual working hours are 9am-6pm midweek. While I'm working I will be on Freenode as well as contactable via Skype and email. On my non-working hours I am still contactable by email which I am able to respond to fairly quickly (providing I am awake) and on Skype while I am at a desktop.

During coding, if I discover any difficulties that I cannot overcome by reading the documentation or a search on the internet, I intend to then use the vast amount of help and support that is available to me from MediaWiki, including the IRC channel and talking to my mentor. I will be keeping regular contact with my mentor to ensure they are kept up to date with the project progression and of any problems that I have encountered. My MediaWiki user page will get a weekly update showing the progress that has been made.

The source code will be available on a GitHub repository which I will be keeping up to date every day of the project. A great benefit of this is that my mentor and others will be able to quickly view the source code that I am working on and view the changes and progress that I have made, for themselves.

Past open source experience
I use alot of open source software in my day to day business. From desktop programs to web applications such as PhpBB, Joomla and of course, MediaWiki. Over the last few months I have studied alot of the code of MediaWiki in order help me better learn and understand it, and have submitted two patches in that time. (12021, 29236)

APIs

 * Flickr API
 * Picasa Web Albums Data API

Relevant Work

 * Mass uploading your Flickr photos to Wikimedia Commons
 * Converting Flickr license into Creative Commons