User:TasneemLo/Outreachy11-3DFormats

Allowing 3D file uploads in Mediawiki commons
Public URL - http://www.mediawiki.org/wiki/User:TasneemLo/Outreachy11-3DFormats

Related phabricator tasks - T3790, T54655

Project Outline
With all sorts of filetypes like SVG, PNG, JPEG, GIF, TIFF, MIDI, OGG, WedM, DjVu, PDF ... (well, basically a lot of them), Wikimedia Commons is one of the biggest databases of media files. 3D images have been on the rise, where nowadays even mobile phone applications can stitch images into a 3D panoramic image. A large number of 3D model formats have come up, and are being used extensively. This project aims to allow users to upload these models on Wikimedia Commons along with a preview and an interactive view for ease of viewing.

The major goals of this project are: Mentors: Mark Traceur
 * Panoramic images
 * 3D Model (STL binary and ascii)
 * 3D Model (X3D or AMF files)
 * 3D Model + Animation (.blend files)

Use cases
There is already some demand demonstrated for this in the Wikimedia Commons' requests page.

Panoramic images will be useful to show monuments in a better way and also to show large images in a better manner.

STL files are one of the most popular 3D model formats which are used to design all aspects like machine parts, furniture, 3D printing, etc.

AMF is majorly used for 3D printing softwares, where it has more features than STL - giving color and so on.

blend files are a great way to showcase educational videos. They are essentially the equivalent of animated GIF in 3D and would be a great help to the community to show short videos or actions.

Communication
I will always try to stay logged into IRC (Channels #mediawiki, #mediawiki-dev during my working hours and will try to contribute back to the community as much as I can. I am extremely regular in replying to emails and also to comments on phabricator and gerrit (as they send notifications to my mail). I plan to prepare a weekly report of things done and send it over to my mentors and update it on this page in the Timeline section. All source code written by me will be regularly pushed to gerrit so that my mentors can review it when they're free. I will keep my mentors updated about the progress through what ever form of communication they prefer (Email or weekly IRC meetings). All discussions regarding design and implementation will be public :)

Initial homework (Nov 17 - Dec 7)
This section encompasses work that will be done before the official coding period begins.
 * Get accustomed to the file formats mentioned above - use then with javascript and check out what all can be done with it.
 * Learn a bit of three.js and other webgl related plugins.
 * Find existing projects (eg: MediaGoblin) which already have this and understand how they render these files.
 * Work on refining the timeline/plan for the project more so that I never find myself in a situation where I do not know what to do :P.

Week 1 (Dec 7 - Dec 13)
Understand how to create a new file format in mediawiki commons and check the

Week 2 (Dec 14 - Dec 20)
Find which file format to make for Panorama and show a dummy preview for now. Begin working on static preview of panorama

Week 3 (Dec 21 - Dec 27)
Complete the static preview for the panorama and begin work on interactive preview.

Week 4 (Dec 28 - Jan 3)
Complete the interactive preview

Week 5 (Jan 4 - Jan 11)
Write tests and make sure it works well. Attempt to push this as a patch to master.

Week 6 (Jan 11 - Jan 17)
This is a buffer week to make sure everything is on track.

Week 7 (Jan 18 - Jan 24)
Create file format for STL files and make a dummy preview for now. Begin working on static preview of STL.

Week 8 (Jan 25 - Jan 31)
Show top, left, right, bottom static previews of the STL file and begin working on the interactive preview.

Week 9 (Feb 1 - Feb 7)
Complete the interactive preview of STL.

Week 10 (Feb 8 - Feb 14)
Make tests, and clean up code and so on. Try to push this as a patch.

Week 11 (Feb 15 - Feb 21)
Add the same for support for X3D files.

Week 12 (Feb 22 - Feb 28)
Complete the code for X3D files

Week 13 (Feb 29 - Mar 6)
This is a buffer week to make sure everything is on track.

Extra time
If I have extra time after this, I'll be working on blender files. At the very least, it should be possible to shop blend files. Best case scenario, make a player of it.

Personal Information
Name - Tasneem Lohani

Email - tasneem.lo.31 [at] gmail.com

IRC Nick - TasneemLo

User Profile - User:TasneemLo

Timezone - UTC + 5:30 (IST - India)

Location - India

Typical working hours (Flexible to ensure deadlines are kept)
 * IST : 10am to 1pm and 3pm - 9pm
 * UTC : 4:30am to 7:30am and 9:30am - 3:30pm

About me
I'm a college student from India, and at my college I learn a lot of varied things. I've made and designed a few websites earlier and am familiar with PHP, Javascript, HTML/CSS. I've also dabbled in android development (although I do not own an android phone right now). I have a very varied skillset and love doing things that interest me and make me learn new things. I've recently started contributing to opensource software, and Mediawiki was the right fit for me as I'm well versed with web technologies.

Current experience with Mediawiki

 * Have setup the development and debug environment on the core.
 * Basic familiarity of code and code conventions.
 * Understood the process of submitting a patch and review.