User:Hrishy/GSOC2014-Proposal

Book management in Wikibooks/Wikisource

 * Public URL: Complete Proposal here
 * Bugzilla report: 53286, 52435
 * Announcement: []

Name and contact information:

 * Name: Rishabh Shukla
 * Email: rishy.s13@gmail.com
 * IRC: rishy
 * Linkedin: http://www.linkedin.com/profile/view?id=317401677&trk=nav_responsive_tab_profile
 * Resume: https://drive.google.com/file/d/0B-dsu5rNzX2VTS14UjBMdk1nRkk/edit?usp=sharing
 * Github: https://github.com/rishy
 * Location: Jammu, India, Google Maps Link
 * Contact: +919469442968
 * Typical working hours: 0900 - 1300, 1500 - 1800, 2200 - 0200(UTC+5:30 Hours)

Synopsis:
Book Management in Wikibooks/Wikisource aims to create a fully functional interface to create and edit books and similar articles on Wikibooks and Wiksource websites. This project will also make some amendments in BookManagerV2 extension which was developed in GSOC 2013, link for the project proposal Improve support for book structures. My project will use this last project as the base and will create a tool that will allow users to migrate the previous page like books to make them usable for BookManagerV2 by creating a JSON structure based on prefixes of the pages of books. It will also develop an optimized algorithm for finding previous/next links in the nav bar more efficiently. Right now the algorithms needs to look through a large number JSON entries to find the links for previous and next page, which in turn results in very slow processing.


 * Possible mentors: [|Raylton]

Required deliverables:

 * Ready for installation of BookManagerV2 extension.
 * Tool for migrating existing books to be used by BookManagerV2.
 * Optimized algorithm for finding previous/next page links.
 * Test cases and results
 * Complete Documentation

Optional deliverables:

 * Brushing the UI to make it more accessible through mobile devices.
 * Adding some missing one-touch events in the view of work done in previous GSOC like, Watchlist, protect, print, etc.

22nd April - 15th May: (Introduction with Community and Codebase)
Week 1: 22nd April - 30th April

Understand the codebase, development workflow of mediawiki, including coding standards and other norms to be adhered to, discuss everything mentor on daily basis.

Week 2: 1st May - 8th May

Get involved with the Wikibooks and Wikisource communities, so as to get their viewpoints about the features to be implemented and any new request that we can accommodate.

Week 3: 9th May - 15th May

Design the use cases and wire frame for the project and discuss the same with the mentor to make it as sophisticated as possible.

16th May - 22nd June: (First Phase of Development)
Week 4 - 5 : 16th May - 31st May (Creating an intuitive UI)

Begin with the Coding. Tweaks with the basic UI of the extension, as suggested by the community. So as to make it easier to access for any future development. Modify the reading and editing process to make those more stable as mentioned in the goal.

Week 6 - 8: 1st June - 22nd June (Automated tool for existing books)

Understand the structure of different pages of books, how they are stored, etc. Use the acquired information to create a tool that recognize the pages of the same book, by using certain prefixes. Create the automated JSON structure for any book which can then be used by BookManagerV2 extension for packing up the various pages as a single book. Also document the work till this point of mid-term evaluation.

22nd June - 20th July: (Second phase of Development)
Week 9 : 22nd June - 29th June (Investigate the existing code to generate links)

This will start initially with examining the existing algorithm and understanding it thoroughly. In this time shortcomings of the existing algorithm will also be noted down along with the possible solutions.

Week 10 - 12: 30th June - 20th July

Then after deciding the approach to be taken most probably we will use the caching and other modifications to create faster links for navigating to previous and next pages. Any other code modification to create a much more optimized algorithm.

Second Development phase is kept a bit longer so that we can also accommodate the optional deliverables if time permits.

21st July - 4th August: (Testing Phase)
Week 13: 21st July - 28th July

Test the UI for any discrepancy and fix them. Also test the migration tool which generate the JSON data for pages by using dummy pages and checking whether those conforms to BookManagerV2 requirements.

Week 14: 29th July - 4th August

Thoroughly test the algorithm with demo books, boundary testing will also be done by creating demo books of large sizes, so as to check the efficiency of the algorithm. Other than this any further polishing and code clean up will also be done in this phase.

5th August - 18th August: (Documentation and Final Review)
All the documentation will be carried out in this phase. Two weeks are dedicated for any further amendments in the documentation and for final run of the code so as to check every running criteria before the project submission.

Participation:
For this project I will be mainly working with Git so as to maintain proper workflow and also the public accessibility of the code which can be tracked and reviewed at any time by anyone since being on an open source platform. I will also create a page at mediawiki which will be kept updated with my current work during the project development. I will add the link for the same on my user page.

I am also always going to be active on IRC on #wikimedia-dev and #mediawiki channel so as to discuss any sudden issues that I am facing at any time.

I am also subscribed to mediawiki-I and wikitech-announce mailing list, so as to remain updated about all the happenings in the codebase and on mediawiki in general.

About me:
I am a 3rd year undergraduate student of Computer Science and Engineering at Shri Mata Vaishno Devi University, Katra, Jammu, India. I heard about GSOC in my freshman year from one of my seniors. I was really fascinated by the idea of “Open Source World” as a whole and also about working and contributing to it during summers.

During this summers my sole focus is going to be this GSOC project and this is my priority. From April to 10th of August I am going to be completely dedicated for this project and can assure you that I will give 45+ hours weekly to make this project as awesome as possible. Also there are no boundations on my working hours and my availability in the community. My working hours can be very flexible since I don’t have any school or any other thing to get indulged into during this time.

Although after 10th August my schools will be starting. So, I’ll already be done with the major portion of the project by then, including Coding, testing and most of the documentation work. I will also try to get done with the documentation within that time. But still even after that I can definitely work for 5-6 hours after my school so it won’t be a problem.

I have been into open source development for more than last 2 years and till now I must say that it has been an awesome journey which I want to carry on with this project. Contributing in open source projects brings an unique pleasure and satisfaction, which is the fuel of my work.

This project acknowledge the very basic problem we all encounter while browsing through wikibook and wikisource pages and when I first saw it on ideas page it just caught my eye and seemed very obvious “must-have” thing for wikibook and wikisource.

Past Experience:
As mentioned I have been involved with open source community for a while now. Almost all of the projects I have done in last two years were based on open source philosophy. I developed those using Git and most of them can be found at https://github.com/rishy.

I have developed my college technical fest and cultural fest websites of last three years.In one of my project I developed a SPOJ kind of online judge system to run algorithmic competitions in my college. I am also the organizing member of OSUM club at my college which conducts open source activities and imparts know how of open source world into students.

After working on a good number of projects the best skill I have acquired is how to manage a big project, how to divide your time and resources and what should be the proper deadlines and most importantly the workflow of open source projects. These were the most significant skill I learned, after obvious new web technologies.