User:Vvv214wth/UploadWizard

--Proposal Title: Extending UploadWizard to more easily upload books

--Public URL: https://www.mediawiki.org/wiki/User:Vvv214wth/UploadWizard

--Bugzilla report: https://bugzilla.wikimedia.org/show_bug.cgi?id=47561

--Announcement: http://article.gmane.org/gmane.science.linguistics.wikipedia.technical/69714

--Synopsis: The book uploader is a proposed customization on the Extension:UploadWizard targeted to fulfill the needs of the Wikisource community. Users can import books using metadata instead of a process of configuration.

--Name and contact information

Name: Tianhao Wang

E-mail: vvv214wth@gmail.com

IRC or IM networks/handle(s): vvv214wth

Location: Shanghai, China

Typical working hours: 12

--Diliverables

-Introduction: When a user wants to upload a book, he or she has to go through UploadWizard, they are dealing with a workflow designed specifically for picture contributors. Therefore there are no specific fields for book data. Moreover, the user has to create an "Index:" page for the file with exactly the same data as in Commons, since the data is not propagated. This project will save users much time by allowing them to import the metadata of the book and get rid of all the steps.

-Implementation Details: To better explain the project let's firstly compare the current implementation and how I intend to improve it. Current situation: When a user wants to upload a book, he or she has to go through steps thought UploadWizard, they are dealing with a workflow designed specifically for picture contributors. Therefore there are no specific fields for book data. Moreover, the user has to create an "Index:" page for the file with exactly the same data as in Commons, since the data is not propagated. Proposed project: This project can be deployed as modification to the UploadWizard: the developers has already built Flickr compatibility into the UploadWizard interface. This project will build interface to upload books using a file containing the metadata of the book[required]. Then if it succeeds, upload several books at the same time may be a challenge[optional]. At the same time, there are a lot of patches laying around and I can get them merged in[required].

-Milestone 1: From Start of GSoC until May 21st

Configure my computer and set up the environment, by following the steps on wiki, and I will try to review the code of UploadWizard. During this time, I will contact my mentor and figure out (several) good ways of doing this project. After this process, I will understand the structure of UploadWizard and have a insight of what I need to do. Pre-work is done in this period.

-Milestone 2: From June 4th to June 19th

Maybe I will have some ideas of what to do with this project after the discussion, this time I can discuss these ideas with my mentor. Maybe I can try some methods now, and I will read the coding conventions and code procedure before really coding. 10% work is done.

-Milestone 3: From June 20th to July 4th

It's itme to pick one or two ways to do this project, during this period, contact and reference to books/community is very important. I can just give a simple implementation, and test them. 25% work is done. -Milestone 4: From July 5th to July 19th

Go on coding, and then I can modify some codes according to the suggestions of my mentor. Testing and optimize my code will be done during this peroid. 50% work is done.

-Milestone 5: From July 20th to August 3rd

In this peroid, I will modify and optimize the code according to the feedbacks from users. Discuss with my mentor the ways to improve and the future of this project. 75% work is done. -Milestone 6: From August 6th to August 13th I will merge all the patches of UploadWizard and make them work well with each other[required]. This project comes near an end, I can start writing papers and documents now[required]. By the end of this period, I plan to fix the remaining bugs and successfully finish the project. 99% work is done. -Milestone 7: From August 14th to August 17th (Post GSoC period) After the GSoC period I want to talk to my mentor about future work that can be done. If problems appears or new features are required, I will be glad to help solving them. My intention is to start working in some core features of UploadWizard after the GSoC. Almost done, and it's time to start a challenge! --About Me

I am an undergraduate student in software engineering at Fudan University, China. I’m a software enthusiastic with experience in different programming languages, like Java, C, Python, and PHP. This opportunity will be a very good one for me to practice and work for real use. Just thinking of my code will be used by so many people, I get very excited. This project will be very useful at the same time, it will save the uploader much time. At the same time, wikis are so great that they change the way we look at the world. I've seen one of the website from my university is built using wiki, and there will be many more in the future around the world. I just can't wait starting this project!

--Participation

Work style of mine: get up at 10am and do some trivial things; after lunch, code the afternoon away; after dinner, code the evening away; after midnight, discuss with guys from mediawiki on IRC; and sleep at 2am. IRC is a very good place, many good guys there, these guys are available 7/24, and many log files can help me too. Any questions can be solved there. Actually my mentor is also active there, I can report my progress every day to him from IRC. As to the progress, I intend to publish my progress in a blog, so other people can see how how the project is progressing. I also want to put some tips about the development in UploadWizard to help other people. Sources can also be shared on IRC and my page on wikimedia.

--Past open source experience

I don't have free software experiences till now but I plan to contribute from now on. I think it's good to be open and get a better world, I'm very excited to contribute to the open source community. --Any other info

I have a high GPA(3.80/4, rank #1) and a good understanding of the basics of computer such as OS and Computer Systems, although they are not practical knowledges but it will help me when some optimization or future thinking is needed, and a high GPA means a good learning ability. I've done some android app and web development at school, though they are very small, they are very good for me to learn about mobile and web apps.