User:Davidpardz/GSoC 2012 application

After gathering some information and checking some code, this is a proposal by me, David Palacios (User:Davidpardz) to implement the idea of integrating upload from Flickr using the UploadWizard extension, and it is intended to be used to participate in the 2012 edition of Google Summer of Code.

Identity

 * Name:
 * David Palacios


 * Email:
 * davidpalaciosrdz@gmail.com


 * Project title:
 * Integrate "upload from Flickr"

Contact/working info

 * Timezone:
 * (GMT-06:00) Guadalajara, Mexico City, Monterrey


 * Typical working hours:
 * 5pm to 2am


 * IRC or IM networks/handle(s):
 * davidpardz on Freenode
 * davidpalaciosrdz on Google Talk


 * Other contact details
 * Twitter: @davidpardz

Project summary
With an user interface, UploadWizard is an extension that assists the user in uploading media to Wikimedia Commons with a step-by-step wizard. The beta version allows the user to upload multiple files at once, although it is use only for simple cases; in the short term, it is expected to replace the old form with UploadWizard.

Unlike UploadWizard, the old form used to upload media to Wikimedia Commons has the option to upload images from Flickr. Adding this feature to the extension implies using the capabilities that the extension take advantage of, which includes analysis of metadata and hash of a file to prevent duplicate images. Besides, this feature implies handling commons issues and doing an extensive search to detect copyright infringements which can lead either to prevent uploading images that in the future will bring issues or to save time to the reviewers. It's worth to mention that there are several tools that the user/uploader can use to accomplish this (it won’t be necessary to start codding from scratch), but having one tool to do it might save time to the user and increase participation from the contributors.

Required deliverables
Adding this feature to the extension will cover the following topics:
 * Adding the proper user interface to UploadWizard extension (HTML, javascript).
 * Making sure only images with licenses permitted by Wikimedia Commons are uploaded.
 * Handling cases such as “No known copyright restrinctions” but “No commercial use”.
 * Making sure that the images don’t come from an user listed on Commons: Questionable Flickr images.
 * Looking at uploader reputation by checking out the status of past images uploaded by her/him. (Dependind on results tags may be applied).
 * Taking advantage of the EXIF info to detect copyright infringement (Date and time).
 * Making sure that the reviewers and the FlickreviewR has the necessary to do their contribution:
 * a valid link
 * the description page showing the license (given by the user or retrieved automatically).
 * EXIF
 * Providing an already filled out version of Template:Information.
 * Presenting to the user a panel to categorize the images depending on its tags at Flickr.
 * When possible, draw on Flickr API to post a comment on the image's Flickr page indicating it has been uploaded to Wikimedia Commons.
 * Documenting for developers and non-developers.

If time permits
A much better outcome could:
 * have the “going back” option (UploadWizard).
 * have the option to upload videos from Flickr.
 * have a more explicit documentation.

Project schedule
Every of the following steps will include interaction with my mentor and the community, making changes when necessary and error handling.


 * April 24 – May 6: Learn more about types of licenses and the ones available at Wikimedia Commons. Learn about the templates and tags applied to an image uploaded to Commons. Read discussions about Copyright issues to gather as much info as possible. Try and test available tools to upload images from Flickr. Although I have already done most of foregoing, this must be clear to develop a better feature.


 * May 7 – May 20: Brush up coding conventions (Javascript, CSS and PHP) and how to document code for MediaWiki. Read both MediaWiki architecture and Security for developers in detail. Read about extensions architecture. Do the training session (diff and patch and git – I am familiar with git and TortoiseSVN) and watch the videos available for Javascript performance. Set up work environment. Install the extension and create a “sandbox” for changes.


 * May 21 – May 27: Get familiar with the source code of the UploadWizard extension and the API of Flickr (discuss if a new key will be necessary); learn from their documentation and conventions.


 * May 28 – June 3: Propose the modifications to the user interface (mockups)


 * June 4 – June 10: Start coding the interface of the new feature.


 * June 11 – July 1: Handle copyright cases:
 * June 11 – June 17: Verify that the license of the uploaded image matches some of the Wikimedia Commons permitted licenses. Handle images that comes from questionable users
 * June 18 – July 1: Verify the status of images uploaded from the current user. Make the most of the EXIF data. Extract info suitable to detect copyright issues. Verify that the reviewers and the FlickreviewR will have the info necessary to do their contributions.
 * July 2 – July 8: Mid-term evaluations. Extract metada to provide a filled out version of the Template:Information.
 * July 9 – July 22: Start working on the panel to categorize accepted images
 * July 23 – July 29: Use the API of Flickr to post comments on the image’s Flickr page.
 * July 30 - August 12: Coding review, testing and bug fixing.
 * August 13 – August 19: Documentation and final comments
 * August 20 – ...: continue with improvements, deployment, work with the “if time permits” topics, work with gadget until it is the only tool for uploading media to Wikimedia Commons.

About you
I’m currently studying Computer Science and Technology in Monterrey, Mexico. I would describe myself as a person concerned for its community. I truly believe that education can change some troubles out there and Wikimedia Foundation has been doing a great job contributing to bring a more accessible knowledge. I have already done some social service/contributions and now I want to combine that passion with my passion for coding and make a contribution to the world along with Wikimedia Foundation. Besides what has been said, I find GSoC as opportunity to start contributing with the open source community, which I find it to be a field where you can learn as many as you want, quite apart from doing so by duty.

Doing the right thing has led Wikimedia to be where it is at. Handling copyright issues will strengthen its commitment to being a repository of reliable knowledge, and I want to be part of it. I like challenges and I am enthusiastic about taking up new ones so here I am fighting for my place in the open source community.

Participation
I was a contributor for one and a half year of the official weekly newspaper of the University where I’m currently studying, writing a column about emerging technologies and tech advices. I have coordinated online groups with little interaction face to face, so I don’t think communication will be a problem.

I plan to make a weekly report (Sundays-Mondays) with information similar to a Scrum: what I did, what I plan to do and what stops me (Google Docs). I will use Git for publishing the source code and the talk on my user page for interaction. I am the kind of person who likes to do some searching before to ask how to do something, I will adjust this to the time given for the project and get the most of the mailing list and the IRC channel. I have always wanted to have a blog but time has not allowed me, so this could be a good time to start blogging with reports.

Past open source experience
I don’t have any experience in writing code for the open source community. I hold experience in web development using Javascript, CSS, PHP and MySQL. I have used jQuery in several school projects and I feel quite confident with it, besides I extensively used it at my last internship. I implemented Facebook login in one of my school projects what may help me to learn the API of Flickr easily (many of the concepts are similar). I have experience using TortoiseSVN.

Any other info

 * This is one of my last projects: http://proyecto.montse.me/
 * Here is some code I wrote when designing a Google Wave Gadget https://code.google.com/p/coler-gadgets/source/browse/trunk/professor/withTabs/UI_professor.js