User:Rahul21/GSoC2014 Proposal

Identity
Name: Rahul Maliakkal Email: rahul14m93@gmail.com Project title: Audio and Video Interaction Location: Ahmedabad, Gujarat, India. Academics: 4th Year Computer Engineering Undergraduate at U.V Patel College of Engineering, Mehsana, Gujarat, India Blog: http://21freebird.blogspot.in/ Link to WikiEducator Page: http://wikieducator.org/User:Rahul21/GSoC2014_Proposal

Contact/Working info
Timezone: IST (UTC +5:30) Typical working hours: Very flexible. I can adjust my work hours to anytime between 14:30–21:30 UTC (20:00–03:00 IST) and can work on the weekends for 5 hours extra. IRC or IM networks/handle(s): Rahul21 (Freenode) Modes of Communication: I plan to have a skype meeting with my mentor atleast once a week. Keeping weekly blogs and interaction via the IRC are few methods of mine that I generally stick while working in an open-source project.

''I live in Ahmedabad, a metropolitan city with 24/7 power supply and a good enough and uninterrupted Internet Connection. So working online will not be hampered by any means.''

What is the goal of your project? What are the outputs?
Goal : To implement a complete solution for recording user audio/video content in the wiki.

Outputs :
 * The output of this project will be that teachers and students will be able to record audio/video in the wiki.
 * Upload the file and get a link to the audio/video file which can be placed in the related wiki page.
 * The Author will be able to maintain a list of recordings.

How does your project benefit the OERu or WikiEducator?
Benefits:
 * After the successful completion of this project WikiEducator will have a audio/video recording tool.
 * Authors of a particular course can add audio/video content to their "Online Course" thus making it more interactive.
 * Students can also communicate back with teachers using short audio/video clips.
 * Set's the framework of audio/video recording in WikiEducator.
 * Audio/Video Recording using WebRTC will be fully supported by all browsers at some point, and WikiEducator will have a tool to record by then.

Basic Workflow

 * I have explained the workflow for an Audio Recorder hereby.
 * The Basic Audio Recorder consists of 4 Buttons "Record", "Stop", "Clear" and "Upload".
 * Once the "Special page" is loaded, the browser asks the user to get the access of his microphone.
 * The User then clicks "Allow". See Image 1.
 * On pressing the "Record" button, the author starts to record his voice. The word "Recording" indicates the browser is in a recording state. See Image 2.
 * When the author finishes recording his voice he/she can press the "Stop" button and a preview of the user's recorded voice is available to the author. See Image 3.
 * If the author is not satisfied by his recording he/she can press the "Clear" button and record his voice again.
 * If he is satisfied then he can click the "Upload" button.
 * On clicking the "Upload" button the user a dialog box will open, which asks the author "What is the scope of the usability of this media file ?", it contains 2 options :
 * Widely Usable : The media will be uploaded to Wikimedia Commons. Use : A Teacher authoring a 5 minute clip explaining some difficult point could be widely useful.
 * WikiEducator Specific : The media file will be uploaded to WikiEducator. Use : A student responding with a 30 second reflection is probably only useful to others on WikiEducator. See Image 4.
 * Demo that I built Audio Recorder
 * The layout for the Video Recorder will also be similar.
 * The author will also be able to View the audio/video files that he has recorded and to which Course where they uploaded in a Sortable Table. See Image 6.

Technical Details

 * I plan on implementing this using 3 API's for Audio Recording
 * To Implement audio/video recording I plan on using "MediaStream API" aka "getUserMedia" to get Access to User's Microphone.
 * The Web Audio API is an API designed to manipulate and play audio assets on a Web page or application.
 * Finally the third API is a JavaScript recorder library called Recorder.js.
 * For recording video :
 * Similarly to record video I plan on using the JavaScript library "Whammy.js".
 * Using Canvas to record video in different formats.
 * All these Audio and Video recordings will be elegantly placed on jQuery Dialog UI.
 * To upload any file to Wikimedia Commons or WikiEducator, the information template has to be followed. Some important fields of the Information Template are :
 * Description: This can be populated by the Section Name.
 * Date : Get using the inbuilt date function.
 * Source: Name of the extension.
 * Author: The name of the author( Only logged in users can record ).
 * Permissions: All the recordings will be licensed under "CC BY-SA 3.0"
 * Since by default Audio is recorded in .wav format and MediaWiki Upload does not support .wav format. We will need to install the "Timed Media Handler" which will enable uploading .wav support to MediaWiki.
 * If we want .ogg flavors of our recording then we will need an instance( server ) with ffmpeg and ffmpeg2theora. ( WikiMedia Labs can help us with that )
 * A Drawback of existing webRTC technology is that we cannot record audio and video together, they are recorded as 2 different streams. A solution to this is to ffmpeg to combine the two streams at a server.( WikiMedia Labs is a good choice )
 * Browser Compatibilty:
 * Works Perfectly in the latest version of Chrome.
 * Works well in the latest Firefox Nightly and dev version.
 * No IE support

How does this GSoC project for WikiEducator /OERu fit into your long term goals and personal development?
I believe in "Sharing Knowledge" to make the world a better place and that is exactly what WikiEducator does. Developing Software for educational purposes is one thing I always loved. From the point of view of personal development, internships like GSoC teaches me a alot about team work and work ethics. It gives me immense pleasure just to think that the tool that I will be building will be used by many people for educational purposes.

Why are you the best person to work on this project?
Since I have a good experience with the MediaWiki engine, it wont take time to adapt and thus giving a much better chance of reaching the finish line. I have always made it a point to complete the task in hand, so if given an opportunity I will give what it takes to complete the project. Also since I have had an experience of participating in GSoC once, I have a good idea about sticking to the schedule and working under the guidance of a mentor.

What MediaWiki experience do you have?
I have got good MediaWiki experience up my sleeve. I interned with Wikimedia Foundation as a part of GSoC 2013 and thus got a good insight of the MediaWiki codebase then, I have conducted workshops in my institution about "Bundling MediaWiki Extensions" and "Contributing to MediaWiki". Here is complete list of the bugs that I have solved for MediaWiki Bugs I Have Worked On. I was also a speaker at FOSSASIA( Asia's largesst open source conference where I gave a talk on my extension "Pronunciation Recording Tool" that I built for Mediawiki.

What other Open Source projects have you worked on? (links to code?)
I participated with Wikimedia Foundation as a part of GSoC 2013 during which I developed a "Pronunciation Recording Tool" for Wikimedia Foundation. The code can be found here Link

What other commitments do you have between 19 May and 18 August?
No I do not have any prior commitments. Since my college gets over by April end, I will be totally free and thus be able to give all the time necessary to complete the project.