**This is a proposal for outreachy(Round-11) to add ZIM support to OCG.**
= Proposal=
**Public URL: **T73660
== Name and contact information ==
**Name: **Adisha Porwal
**Email: **porwaladisha@gmail.com
**Irc Nick:** adisha
**Mediawiki User:** Adishaporwal
**Location: **India
**Time Zone: **UTC+5:30
**Typical working hours: **3:00 PM to 12:30 AM (Indian Standard Time)
==== Internet Presence ====
**Github Profile: ** [[ https://github.com/adishap/ | adishap ]]
**LinkedIn Profile: ** [[ https://in.linkedin.com/pub/adisha-porwal/8a/458/30a | Adisha Porwal ]]
**Twitter : ** [[ https://twitter.com/AdishaPorwal | @AdishaPorwal ]]
== Synopsis ==
Mediawiki is the wiki engine behind Wikipedia, all Wikimedia projects and thousands other Web sites.Mediawiki hosted content can be made available for offline usage through the Collection extension (written in PHP). The [[ https://www.mediawiki.org/wiki/Extension:Collection | Collection ]] extension allows to easily create collection/selection of articles: so called books ; One time created, books can be exported in the PDF format. The PDF exporting backend itself is not provided by the Collection extension, it's done with a JavaScript based solution called [[ https://www.mediawiki.org/wiki/Offline_content_generator | Offline Content Generator ]](OCG). Presently,OCG only supports PDF format.This project will provide functionality to support [[ http://www.openzim.org/wiki/ZIM_file_format | ZIM format ]] to OCG. The ZIM file format allows to store web pages (with images, videos, etc...) in one extremely compressed file.
=== Skills ===
# Node.JS
# HTML
# PHP
# packaging
=== How it will benefit MediaWiki or Wikimedia projects? ===
# Mediawiki hosted content can be availed offline in ZIM format to read everywhere with a reader like Kiwix.
# the project will also help to integrate the functionalities of OCG and [[ https://wikitech.wikimedia.org/wiki/Nova_Resource:Mwoffliner | MWOffliner ]]
=== Possible Mentors ===
# [[ https://phabricator.wikimedia.org/p/cscott/ | C. Scott Ananian ]]
# [[ https://phabricator.wikimedia.org/p/Kelson/ | Kelson ]]
== Milestones and Deliverables ==
| **Milestone ** | **Description** | **Duration** | **Deliverable**
| -------------------------- | -------------------------- | -------------------- | ------------------
| Milestone 1 | Envision Phase | Before 17 November 2015 | Development enviroment setup
| Milestone 2 | Community Bonding Period | 17 November - 7 December 2015 | WorkFlow of project
| Milestone 3 | Production of metadata about ResourceLoader Modules | 7 December 2015 - 12 December 2015 | Metadata about ResourceLoader modules
| Milestone 4 | Downloading ResourceLoader css/javascript dependencies | 13 December 2015 - 27 December 2015 | Modules export functionality by OCG
| Milestone 5 | Conversion into HTML tree | 28 December 2015 - 15 January 2016 | Standalone HTML tree
| Milestone 6 | Invoke 'zimwriterfs' to create the ZIM file | 16 January 2016 -3 February 2016 | 'zimwriterfs' will be invoked to convert HTML tree to ZIM format
| Milestone 7 | Debian Package creation for zimwriterfs | 4 Febuary 2016 - 25 February 2016 | Debian package of zimwriterfs
| Milestone 8 | Final Code Review and Documentation | 26 February 2016 - 7 March 2016 | Source code, Project Report
== Schedule ==
**Before 17 November - __Milestone 1__**
- Remain in constant touch with mentor(s) and community.
- Getting myself familiarize with development environment.
- Getting myself familiarize with working of Node.Js and packaging.
- Study required docs.
- Fix some bugs along the way and get my hands dirty with code.
**17-November-2015 to 6 December 2015 - __Milestone 2__**
- Discussion on workflow for development phase with mentors and community
- Get myself familiar with architecture and implementation of OCG and MWOffliner
**7 December 2015
**Actual Coding period begins
**7 December 2015 to 12 December 2015 - __Milestone 3__**
- Send request to API sandbox to get metadata related to css/js dependencies. For example: Ex: http://en.wikipedia.org/w/api.php?action=parse&format=json&page=MathML&prop=modules for getting modules and related metadata of page MathML.
**13 December 2015 to 27 December 2015 - __Milestone 4__**
- Currently, the ResourceLoader dependencies are not retrieved by the OCG crawler module.OCG and MWOffliner should download correct modules necessary for each page.
- Their is a possiblity that multiple pages may use the same module, so to avoid ambiguty of downloading same module multiple times we can list all the modules used by each page and convert the list into set as every element in set is unique. Finally after the conversion into set, we can make request to download every module present in the set.
**28 December 2015 to 15 January 2016 - __Milestone 5__**
- Transform the bundles genrated by OCG into standalone HTML tree.
**16 January 2016 to 20 January 2016**
- Test the portion of project completed and Documentation for Milestones achieved
- Getting my self familiar with working of MWOffliner
**20 January 2016 to 26 January 2016**
- Invoke zimwriterfs using OCG
- Discuss with mentor(s) with the future work on related milestone
**26 January 2016**
Mid Term Evaluation
**27 January 2016 to 3 February 2016 - __Milestone 6__**
- Convert HTML tree to ZIM format using zimwriterfs
**4 February 2016 to 22 February 2016 - __Milestone 7__ **
- Getting my self familiar with packaging
- Create Debian package of zimwriterfs
**23 February 2016 to 29 February 2016 - __Milestone 8__ **
- Code Review by me and mentors
- Inact information from code review
- Conduct several tests
- Document the project
**1 March 2016 to 7 March 2016**
- A buffer period required for final polishing of work.
**7 March 2016**
Firm Pen Down
== Participation ==
==== Communication of progress ====
- **IRC channel**: I'll stay online on IRC at #kiwix, #mediawiki-parsoid, #wikimedia-dev in freenode, in my working hours.
- **Email**: I will report my progress using mails weekly.
- The project report will be updated on the [[ https://www.mediawiki.org/wiki/User:Adishaporwal | sub-namespace ]] of my user page.
==== Where I would turn for help? ====
- **Solve by myself:** Searching on websites like google, stackoverflow, askubuntu, etc
- **Seek help from community:** Ask for help on irc channels, mailing list and personal email address.
==== Source Code ====
- Source code will be pushed to gerrit.
= About Me =
I am Adisha Porwal, a fifth year student of an integrated masters program in [[ http://iips.edu.in/ | IIPS-DAVV ]] with computer science major.
I am enthusiastic and active member of [[ http://iips.edu.in/dc | Development Center ]](DC) of my college. Development Center aims at bringing people closer to open source technologies. As a DC member, I have taken workshops on Python, HTML, CSS for college students and went to village to teach basic of computers to girls.
Programming is something I enjoy. I use Python, PHP, Javascript, CSS, HTML, Mysql for my projects. My projects can be found at my [[ https://github.com/adishap/ | github profile ]].
For contributing to open source world, version controlling systems are something one should be aware of. I am familar with git internals. For my projects, I use Github to version control and share my code with world. While contributing for Wikimedia, I got aware of Gerrit too.
During outreachy internship, I promise to work for at least 40 hours a week and do not have any other obligations that can interfere.
== Current Experience with Mediawiki ==
- Have set-up the development environment of core , OCG and MWOffliner.
- Basic familiarity of code and code conventions.
- Understood the process of submitting a patch and review (phabricator, gerrit and git).
==== Microtasks and Bugs====
- Currently working on OCG should download resourceLoader js/css dependencies (T114788)
- Search input cut off in noJS mode (T98829)
- Empty message on watchlists is not center aligned (T103727)
== Past Experience ==
=== FOSS Projects ===
I am a FOSS fan and my first encounter with it was Linux.
As a FOSS user, I use Ubuntu 14.04 as my operating system, Mozilla Firefox for browsing and PHP, Python and other open source languages for programming.
However, as a open source contributor , I began with Mediawiki few months ago and submitted few patches in extension MobileFrontend and mw-ocg-bundler.
=== Other Projects ===
- Alumni Portal for institute ([[ https://github.com/adishap/alumniportal | Github Link ]])
- Complaint Management System for a organisation ([[ https://github.com/adishap/complaint_box | Github Link ]])
- Team and Score Management System for a college Event ([[ https://github.com/AkankshaRathore/Event-Result-View | Github Link ]])
My more work can be found on my [[ https://github.com/adishap/ | github profile ]].
== Other Information ==
**Do you meet the eligibility requirements outlined?:** Yes
**Preferred pronoun:** she
**Education:** Student at [[ http://iips.edu.in/ | International Institute of Professional Studies,DAVV ]] graduating in December 2016
**How did you hear about this program:** A friend who was past intern of Outreachy (round 9) and GSoC 2015