==Profile==
**Name** : Siddhartha Sarkar
**Time zone** : UTC +5:30
**Email** : sid.nitdurgapur@gmail.com
**IRC nick** : infobliss
**Github** : https://github.com/infobliss
**Location** : India
**Working hours** : 1:00 pm to 9:00 pm UTC +5:30
=Synopsis=
The project aims to create a tool that uploads images from a GLAM to Wikimedia Commons with the following objectives.
* To minimize the number of steps.
* To make the process of uploading easier for the non-technical users by mapping GLAM's metadata to the Commons metadata automatically.
* To enable the user to choose a set of relevant images from a GLAM site and upload them thus avoiding uploading of unnecessary images and minimizing processing time.
We create a Flask app that uses OAuth for authenticating the Commons user. After the login the app allows the user to choose a set of images from a desired GLAM and upload them in batch to Commons. In addition we would like to do some metadata mapping for some of the GLAMs so that end user doesn't have to worry about entering image details like creator, licenses etc. In summary we intend to provide a tool to the users to upload images from a GLAM to Wikimedia Commons most efficiently.
**Mentors**: @Basvb(python, batch uploading experience, Commons)
**Co-mentors**: @zhuyifei1999(Code-review, python and tools), and @tom29739(labs, commons, python)
=Timeline=
| **Period** | **Task** |
|------------ |-----------|
|May 4 to May 29|**Community bonding period**. Studying existing tools for uploading media to commons. Studying the Commons metadata fields in depth. Planning the design of the tool including both the frontend and the backend. Compiling a list of GLAMs. Adding and structuring the corresponding tasks in Phabricator. Requesting access to Tool Labs.|
|May 30 to June 5|Designing the basic UI templates for the FLASK app. Study the API of a number of GLAMs to decide what metadata suits the best for writing a generic file title generator module based on the metadata extracted from the GLAM API. Write the relevant code.|
|June 6 to June 18|Design the core elements of the FLASK app including the modules for license checking, metadata mapping and batch upload. Learn how to do the OAuth authentication using Wikimedia Commons login credentials and integrate that into the tool.|
|June 19 to June 21| Contacting with a number of GLAMs to consider the viability of having a "Upload to Wikimedia Commons" button on their image collection site. Design an action plan based on the input received from this communication.|
|June 22 to June 26| Testing Round 1: Sanity Testing, exploratory testing, automation testing and documentation. |
|June 26 to June 30|**Phase I evaluation**|
|June 30 to July 5| Work to make the tool have the ability to provide the flexibility of choosing a number of desired files (may be by providing checkboxes against the image thumbnails) and quickly upload them to Commons (may be by a single click button)|
|July 6 to July 10| Design a template for the metadata mappings and easy way to update/edit them.|
|July 11 to July 16|Take input from all the stakeholders including the GLAMs regarding the UI and work on the UI part extensively.|
|July 16 to July 20|Receive feedback and do changes if necessary.|
|July 21 to July 27|Testing Round 2: Exploratory testing, automated tests and bug fixes and documentation.|
|July 28|**Phase II evaluation**|
|July 29 to August 7|To give the option to search for images based on a searchstring across the selected GLAMs and upload the desired ones.|
|August 8 to August 16|Write metadata mapping for a number of GLAMs.|
|August 17 to August 21| Testing Round 3: testing the robustness of the app with the new metadata mappings already created and bug fixes.|
|August 22 to August 28|Freeze the code. Create a page in the Wikimedia Commons on our tool where people can suggest new GLAMs for metadata-mapping and possible changes in metadata mapping for existing GLAMS. Announce the tool to the wikimedia community somewhere on Commons.|
|August 29 to September 5 |Mentors submit final student evaluations.|
|September 6|**Final results of Google Summer of Code 2017 announced**|
|--------------|-------------------|
=Deliverables=
- Early and robust design of the tool.
- Creating Tasks in Phabricator.
- Getting Tools Lab access.
- Creation of the UI templates.
- Writing a generic file title generator module.
- Design the FLASK app backend components.
- Providing OAuth authentication with Wikimedia Commons.
**Phase I evaluation**
- Receiving inputs from the relevant GLAMs and possibly add a button for single click image upload.
- Designing a template for the metadata mappings.
- Make the final UI.
- Providing search option across selected GLAMs for uploading.
- Improving the app based on feedback.
**Phase II evaluation**
- Writing metadata mapping for a number of GLAMs.
- Writing easy-to-read documentation and user guide of the tool.
- Create a Commons page about the tool for receiving suggestions for future enhancement.
**Final evaluation**
=Participation=
- I will make a new repo on git and maintain two branches. Code will be uploaded to the dev branch periodically and will be merged with the master branch once review and testing is done.
- I will be online on IRC in my working hours ( 1:00 pm to 9:00 pm UTC +5:30) to collaborate with the mentors.
- I will use Phabricator for managing bugs and subtasks.
- I will be available in gmail to be contacted when needed in the non-working hours.
=About me=
Currently I am pursuing MS in Computer Science in the Indian Institute of Technology, Delhi. I am a patient learner and like to work in collaboration. To me dedication to one's work is the primary ingredient of satisfaction. This is my first participation in GSoC. During the summer GSoC will be my first priority since I won't have any other commitments during this period.
**I have been contributing to Wikipedia as a translator for some time now. I am inspired and thrilled by the vision of wikipedia of making contents available in every natural language. I think contributing to wikimedia will impact the world in a very positive manner. At the same time for me it will push the horizon even farther by letting me collaborate with the excellent wikimedia community members. Most importantly I will be making something that will make the world's largest free encyclopedia, among other wikimedia sites, richer in content and organization.**
=Past Experience=
I have experience in working with C++, Java, Python, HTML, CSS, PHP among others. Among databases I mostly worked on mysql, Oracle DB and among VCS I worked with Tortoise SVN.
I maintained and enhanced a video server website in IIT Delhi for streaming recorded lecture videos (http://etsc.iitd.ac.in) to the IIT Delhi community.
At IIT Delhi I have made several contributions such as configuring and incorporating a captcha to Moodle, an open source course management system.
Earlier I had also worked for improving the features of a proprietary software as well.
==Microtasks carried out==
- T161332: Flask Backend for Single Image Batch Upload : This is a Flask app that uploads images in batch from the GLAM called Nationaal Archief when called by the link like serverIP/app/glam and an id is provided into a web form..
- https://github.com/infobliss/Flask-Backend-for-Single-Image-Batch-Upload
- Uploaded a number of images to Wikimedia using pywikibot (**both UploadRobot() and site.upload()**).
- https://commons.wikimedia.org/wiki/Special:ListFiles/Infobliss
- Designed a basic UI for the MVP(Minimal Viable Product)
- OAuth authentication with wikimedia commons credentials is in progress.
=Other Info=
My wikimedia global user page is [[https://meta.wikimedia.org/wiki/User:Infobliss| here]].