Summer of Code/2014/Javascript Collaboration For Sugar

About you

What is your name?
My name is Arsalan Ahmad.

What is your email address?
arsalanahmad1993@gmail.com


What is your Sugar Labs wiki username?
My username on sugarlabs wiki is Arsalan Ahmad.

What is your IRC nickname on irc.freenode.net?
ArsalanAhmad

What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
My first language is Urdu but I have good communication skills in English.

Where are you located, and what hours (UTC) do you tend to work? (We also try to match mentors by general time zone if possible.)
I am located in Lahore, Pakistan, and I usually work from 3 am to 6 pm (UTC). I also work late nights (Pakistan standard time), but I try not to.

Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?
I have created several (but rather small) contributions in open source. I'm listing them below:
Circle Counter:
I haven't yet studied computer vision but a friend of mine who was studying CV had an assignment where he had to count circles in images. I found the project interesting and thought about doing it without any library or complex filters. The algorithm I came up with is very very simple and is just a demo. It has flaws, but those can be fixed easily. I did it as a proof of concept.
Here's the link:
https://github.com/ArsalanDotMe/CircleCounter

Name That Color:
I created a simple open-source library that returns the closest named color for a certain hex value passed as an input. For example, it should return "red" for "#FF0000". I used some open data sources with permission to make it. I also created a companion windows phone app that uses this library to take a picture of something and then find out what color that thing is. It didn't turn out as good as I expected because in real world, the lighting conditions matter a lot. Plus the camera doesn't capture perfect colors. It's more useful with computer generated images, I guess.
https://github.com/ArsalanDotMe/NameThatColor

Crime Map Lahore:
I'm part of a civic hacking movement called the Lahore Brigade (part of Code for America) that develops open source civic solutions that aim to help the community and the society. The app listed below is a proof of concept made in a 2 day hackathon. I'm currently working with the Lahore Brigade to create a new full-fledged app that will come online in a few days. It's made for Windows 8.1. Half of the app is made in javascript and the other half in C#. I'll update you guys with the new app in just a few days.
Here's the original hackathon app link:
https://github.com/codeforpakistan/CrimeMapLHR

Time Table Processor:
I created a simple program that removes unwanted clutter from the time-table of my university. Currently, the time table has all the classes of all the batches listed in one file. It is very hard to differentiate your own classes from another batch's. This program lets you select which batches you want removed from the time table and generates a new excel file that contains only the chosen batches.
Here's the link:
https://github.com/ArsalanDotMe/TimeTableProcessor



About your project

What is the name of your project?
JavaScript Collaboration For Sugar

Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

Introduction

Currently web activities are lagging behind the standard python activities in terms of functionality, API and the information sharing between activities. Also, I believe that JavaScript will emerge as the standard scripting language in the next few years so it is essential for sugar to support it. And since there are a lot more JavaScript developers than python-ones, I believe that adding efficient JavaScript support will open the doors for greater activity contribution. I aim to work with the developer team behind sugar to develop a collaboration strategy for sharing information between activities and then implement the said collaboration model into the JavaScript API. I will then update documentation for this new API so that future developers can easily make web activities that enable collaboration just like the standard python-built activities.
During the summer program I have to make the new collaborative JavaScript API and its updated documentation for sugar-web. I will be using JavaScript mostly for updating and adding collaborative features in the API and will also work with HTML/CSS to develop sample activities that showcase the new API.


What is the timeline for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.

Week / Days Work to be Done
before 20th May
(Pre-program preparation)
*Explore the sugar code.
* Create sample sugar web activities.
*Study the collaboration techniques used by python activities.
* Study collaboration techniques and algorithms used in other apps and domains.

Deliverables
-> Plan of action for collaboration.
-> Sample sugar-web activities.

20th May - 27th May
(Week 1)
*Discuss and finalize collaboration strategies with mentors and developers of the sugar community.
Deliverable
-> A finalized specification document for the new API.
27th May - 3rd June
(Week 2)
*Start implementing the API.
3rd June - 17th June
(Week 3,4)
* Develop collaboration API and finalize.
17th June - 24th June
(Week 5)
* Test everything! And start writing the documentation.
24th June - 1st July
(Week 6)
*Mid-Term Evaluations
*Buffer Week 1
*Will complete the work that has to be done as a part of the evaluation and complete any remaining work.
1st July - 15th July
(Week 7,8)
*Start making the sample web activities that use the new API.
15th July - 22nd July
(Week 9)
* Start completing the documentation about the API.
22nd July - 29th July
(Week 10)
*Buffer Week 2
29th July - 5th August
(Week 11)
* Write guides on making the sample apps. * Finalize and proofread the documentation.
5th August - 12th August
(Week 12)
*Expected Pencil Down Date
12th August - 19th August
(Week 13)
*Refactor the code and conform to the coding standards and coding style.
19th August - 26th August
(Week 14)
*Firm Pencil Down & Final Evaluations


Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

I have very good development and time management skills and I'm excellent at managing time. I have successfully developed many apps in a very short amount of time. In 2012 Micorosft WOWZAPP competition, I started with Windows development as a complete beginner and in a week, I managed to single-handedly develop a game using only HTML5/ Javascript. The game is called Space Frenzy and it won me the competition in the games category. I also have a work experience working on the corporate sector as I completed a seed management system with a web interface for a national level agricultural company.
I am also a Microsoft Student Partner at my campus and often organize and conduct technical workshops. I recently created an app for a Pakistani startup called "#KyaSceneHai" in phonegap using angularjs in just a single week. Javascript, after C#/.NET is my favorite programming language and I have a lot of experience developing games and apps on it.
I did all that while following my regular university classes and doing hobby projects side by side.
In short I want to stress that I have great time management skills and can work in pressure.

You and the community

If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.
Arsalan Ahmad : Because of my work, sugar web activities will be able to collaborate effectively with other activities and it will bring the web apps of sugar on par or even ahead of the python apps.
It will attract a lot more developers to sugar because JavaScript is more widely used and adopted.
What will you do if you get stuck on your project and your mentor isn't around?
If I get stuck and there's no-one to help, I will try to talk with the community to get more experienced insight on the issue. I will also look for similar problems in other platforms and see how they have solved that certain problem

How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?
I will update my progress on my blog http://arsalan.me and will update the progress on any other source recommended by the community.

Miscellaneous

Send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "logout".

Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.
I am new to the sugar community and haven't yet done a request. Describe a great learning experience you had as a child.
As a child, I used simple metal blocks, some strings and a keychain to create a contraption that allowed me to turn off the light from the comfort of my bed in winters. It allowed me to easily read at night.

Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?
I belong in a country where there's a huge need for software like sugar because of the poverty and the low standard of education, yet there is almost no awareness about sugar or GSoC. As part of the team of the local ACM chapter, I aim to cunduct workshops for sugar in my university and invite real school kids to learnd and try out sugar.