Changes

Jump to navigation Jump to search
Line 19: Line 19:  
'''Have you participated in an open-source project before?'''  
 
'''Have you participated in an open-source project before?'''  
   −
I have not contributed to an open source organisation as such.  But, in these last two months, I have been continuously tweaking the code of turtleblocksjs and done some pull requests which eventually got merged.
+
In these last two months, I have been continuously tweaking the code of turtleblocksjs and done some pull requests which were merged.  
 
Openness, and accessibility of open source excites me. To contribute to and benefit from this immense pool of talent and knowledge is what drives me. Here are the reasons why I think I will love to work on an open-source project this summer :  
 
Openness, and accessibility of open source excites me. To contribute to and benefit from this immense pool of talent and knowledge is what drives me. Here are the reasons why I think I will love to work on an open-source project this summer :  
   −
* I believe in the philosophy behind open source. This world is hard to imagine with the contributions of open source communities to the society.
+
* The opportunities provided by the organization are same as those I want my career in.
 
* It will open a door for me  to meet and work with brightest of the bright people working for Sugar Labs.
 
* It will open a door for me  to meet and work with brightest of the bright people working for Sugar Labs.
      
== '''About the Project''' ==
 
== '''About the Project''' ==
Line 33: Line 32:  
'''Description of the project in 10-20 sentences. What am I making? Who am I making it for, and why do they need it? What technologies (programming languages, etc.) will I be using?'''
 
'''Description of the project in 10-20 sentences. What am I making? Who am I making it for, and why do they need it? What technologies (programming languages, etc.) will I be using?'''
   −
Because of the ease of use and distribute, Javascript is the extended environment to be for Sugar. This project is all about redesigning the collaboration framework for javascript environment using '''websockets api in node.js'''.
+
This project is all about redesigning the collaboration framework for javascript environment using '''implementations of websocket in node.js'''. As of now, Sugar has the collaboration mechanism for python-based activities(for python environment). But, the web activities are still devoid of it.
   −
This collaboration framework will enable a lot of collaborative application on the sugar platform in javascript environment like XMPP IM Chat Service, Collaborative File Editing, Collaborative Turtleblocks,File Sharing and what not. The functionality of the collaboration framework will be similar to that in python environment but implementation varies greatly to enhance the scalability and efficiency. This enhancement is clearly visible with the approach of using websockets. It will decrease the use of bandwidth greatly(no need to include HTTP Headers). At the same time, polling will also be ruled out from the scenario making the io independent and clutter-free.
+
This collaboration framework will enable a lot of collaborative applications on the sugar platform in javascript environment like Collaborative File Editing, Collaborative TurtleblocksJS, File Sharing and what not. The functionality of the collaboration framework will be similar to that in python environment but implementation varies greatly to enhance the scalability and efficiency. This enhancement is clearly visible with the approach of using websockets. It will decrease the use of bandwidth greatly(no need to include HTTP Headers). At the same time, polling will also be ruled out from the scenario making the io independent and clutter-free.
    
We also need to ensure the reusability of the code while designing the framework. Hence, inspirations have to be taken from the structure of collaborative framework used in the python version.
 
We also need to ensure the reusability of the code while designing the framework. Hence, inspirations have to be taken from the structure of collaborative framework used in the python version.
Line 41: Line 40:  
The implementation of the project goes like this :
 
The implementation of the project goes like this :
   −
Backend will consist of two parts. One for serving normal HTTP requests and other for web socket requests. For serving HTTP requests, I will use Node.js based web framework called '''Express'''.
+
Backend will consist of two parts. One for serving normal HTTP requests and other for web socket requests. For serving HTTP requests, I will use Node.js based MVC framework called '''Sails.js'''.
    
Web socket server will be implemented using '<nowiki/>'''ws'''<nowiki/>' : simple to use and one of the fastest WebSocket implementation for node.js. For message handling and datastore, I propose to use '''Redis. '''Redis is an open source, BSD licensed, advanced <strong>key-value cache</strong> and <strong>store</strong>. It is often referred to as a <strong>data structure server</strong> since keys can contain strings, hashes, lists, sets,sorted sets, bitmaps and hyperloglogs.
 
Web socket server will be implemented using '<nowiki/>'''ws'''<nowiki/>' : simple to use and one of the fastest WebSocket implementation for node.js. For message handling and datastore, I propose to use '''Redis. '''Redis is an open source, BSD licensed, advanced <strong>key-value cache</strong> and <strong>store</strong>. It is often referred to as a <strong>data structure server</strong> since keys can contain strings, hashes, lists, sets,sorted sets, bitmaps and hyperloglogs.
 +
 +
For permanent storage of data, I am proposing to use '''MongoDB'''. The agility and scalability of mongoDB inspired me use this for the project.
       
'''What is the timeline for development of my project?'''  
 
'''What is the timeline for development of my project?'''  
 +
 +
Better ideas come to me while working; hence in my timeline I have stated my discussions with my mentor many times. This will help me better understanding and might add some new features to the program. I also intend to continuously assess the system based on continuous user based tests on the interface. I also intend to take continuous feedback on my progress from the community. I intend to keep enough time to assess the feedback and make further changes thus, ensuring the completeness of the system.
 +
 +
Here, I present my proposed timeline :
 +
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Week !! Assignment
 
! Week !! Assignment
 
|-
 
|-
| PreSummer Phase And 1st Week || Deciding Upon the framework for the project and discussing its nitty-gritties
+
| ''' PreSummer Phase <br />Community Bonding Period ''' || Discussions on the current proposed framework for the project and discussing its nitty-gritties with the community and my mentor.
 +
|-
 +
| ''' Week 1 <br /> Coding phase 1 ''' || Preparing Unit Tests
   −
Making a simple XMPP Instant Messaging Application using websockets integrated with TurtleBlocksJS with jabber.sl.o as jabber server
+
'''Deliverables''' : Unit Tests which are to be used and improved upon throughout the project.
 +
|-
 +
| ''' Week 2 <br /> Coding phase 2''' || Making a simple Instant Messaging Application using websockets along with canvas sharing integrated with TurtleBlocksJS. This will give us the idea of how everything has to be developed.
 +
'''Deliverables''' : An open-to-all turtle canvas in which anyone can work and chat(like a main chat).
 
|-
 
|-
| 2nd & 3rd Week || Design the presence API.
+
| ''' Week 3 & 4  <br /> Coding Phase 3 ''' || Design the presence API.
    
Create the UI for neighbourhood and integrate it with presence and chat API.
 
Create the UI for neighbourhood and integrate it with presence and chat API.
 +
 +
'''Deliverables : ''' Fully-functional Neighbourhood with the functionality to send request to collaborate.
 
|-
 
|-
| 4th Week || Adding features like turtle and canvas sharing with TurtleBlocksJS
+
| ''' Week 5 <br /> User Enhancement Request Phase '''  || Integration of the work of coding phase 2 and 3. Code will be open for community to submit user enhancement requests.
|-
+
 
| 5th Week || Enhancing the reusability of the code to its fullest.
+
Enhancing the reusability of the code to its fullest will also be one of the main concerns in this phase.
 +
 
 
Mid-Term Evaluation
 
Mid-Term Evaluation
 
|-
 
|-
| 6th & 7th Week || Listing down the collaboration features
+
| ''' Week 6,7 & 8 ''' || Listing down the collaboration features. Implementing the features decided after discussing. This period can also be used as buffer period.
 +
 
 
Implementing them weekly.Can also be used as buffer period.
 
Implementing them weekly.Can also be used as buffer period.
 
|-
 
|-
| 7th & 8th Week || Implementing Video Sharing
+
| ''' Week 8,9 and 10 <br /> Soft Pencils Down ''' || The framework will be open to the community and unit tests will be carried out incrementally.
 +
 
 +
|-
 +
| ''' Week 11 & 12 <br /> Firm Pencils Down ''' || This time will be used for bug-fixing and preparation of design documentation.
 
|-
 
|-
| 9th,10th,11th and 12th Week || Implementing the features decided after discussing. This period can also be used as buffer period.
+
| ''' Week 13 - INFINITY ''' || Become an active contributor to Sugar Labs and keep in constant contact with the community.
 
|}
 
|}
   Line 87: Line 105:  
Have a look of my past work :
 
Have a look of my past work :
   −
[https://github.com/abhinavanurag18/checkmate2014 '''Checkmate''']
+
* [https://github.com/abhinavanurag18/checkmate2014 '''Checkmate'''] : An online 2-hr event to test the intelligence of the participant. Users have to solve the questions and bid for a multiplier(like 2x means if correct, 2 times the base point of the question will awarded. Deduction will also be done in the same proportion.) on the basis of two metrics : no. of users already solved that question and the accuracy of the submissions. This two metrics helps user to decide the toughness of the question and hence, the bidding multiplier. This is a completely js-driven application having the support php for backend work.
 
  −
[https://github.com/abhinavanurag18/Network-Programming '''Network Programming Assignment''']
     −
'''Compiler Assignment''' : I am making a Context-Free Language using LL(1) parser. This is an ongoing assignment. Hence, code cannot be uploaded.
+
* [https://github.com/abhinavanurag18/Network-Programming '''Network Programming Assignment'''] : Problem statements are included in the repository. Language used : C.
   −
[https://github.com/abhinavanurag18/connectusers '''ConnectUsers''']
+
* '''Compiler Assignment''' : I am making compiler for a Context-Free Language using LL(1) parser. This is an on-going assignment. Hence, code cannot be uploaded. Language used : C.
   −
[https://github.com/abhinavanurag18/Imap '''Imap''']
+
* [https://github.com/abhinavanurag18/connectusers '''ConnectUsers'''] : A chrome plugin to link linkedin and Angellist. Any user going through linkedin profile of someone will get the link to same person on Angellist. An algorithm was designed to equate two profiles on two different websites. Language used : JavaScript.
   −
'''[https://github.com/abhinavanurag18/Stock-Market-Simulation Stock Market Simulation]'''
+
* [https://github.com/abhinavanurag18/Imap '''Imap'''] : A plugin to display the no. of visitors of page(of a website) belonging to various places across the world(displayed on a google map). This feature is going to be used on www.infibeam.com. Language Used : Ruby with Ruby-On-Rails.
    +
* '''[https://github.com/abhinavanurag18/Stock-Market-Simulation Stock Market Simulation]''' : An Online virtual trading application(simulation of stock trading).
    +
In relevance to the project, I am currently working on a collaborative canvas drawing application. '''[https://github.com/abhinavanurag18/Collaborative-Canvas-using-Websockets Here]''' is the link.
    
== '''Me and The Community''' ==
 
== '''Me and The Community''' ==
Line 111: Line 129:  
   “I hope it means we can use collaboration under more circumstances and hence expand its utility and the community.<br />Quite simply, we want JS to be a first-class environment for Sugar, so we need a first-class collaboration mechanism.”
 
   “I hope it means we can use collaboration under more circumstances and hence expand its utility and the community.<br />Quite simply, we want JS to be a first-class environment for Sugar, so we need a first-class collaboration mechanism.”
   −
'''What will I do if you get stuck on my project and my mentor isn't around?'''
+
'''What will I do if I get stuck on my project and my mentor isn't around?'''
 +
 
 +
Firstly, I will try to get help from the community itself. Specially from the people whom I bonded with in the pre-application phase.
 +
Adding to that, I am a self learnt person and have learnt all that I know on my own through internet resources(Stack Overflow, Tech Blogs, Github, BitBucket and what not). And I am proud of this skill of mine. In case web fails, I will get back coding community comprising of seniors and professors in my college
   −
I should say that though I don’t know much, but whatever I know,I have learnt 80% of that from Internet(Stack Overflow, Tech Blogs, Github, BitBucket and what not). And I am proud of this skill of mine. In case of web sources not being helpful enough, I can always go to my professors and seniors who have been very happy to help every time I needed them.
     −
Most importantly, I will try to get help from the community itself. Specially from the people whom I bonded with in the pre-application phase.
         
'''How do I propose I will be keeping the community informed of my progress and any problems or questions you might have over the course of the project?'''
 
'''How do I propose I will be keeping the community informed of my progress and any problems or questions you might have over the course of the project?'''
   −
I am planning to maintain a wiki page for my project which I will updating time-to-time to keep the community updated about the project and its progress. Along with that, I am planning to write weekly blogs about my findings during the project in my own way ;).
+
I am planning to maintain a wiki page for my project which I will updating time-to-time to keep the community updated about the project. Along with that, I am planning to write weekly blogs about my findings during the project in my own way ;).
    
== '''Miscellaneous''' ==
 
== '''Miscellaneous''' ==
   −
'''Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.'''
+
'''Links to the pull requests I have made on a Sugar or Sugar activity bug.'''
    
[https://github.com/walterbender/turtleblocksjs/pull/184 '''Pull 1''']<br />
 
[https://github.com/walterbender/turtleblocksjs/pull/184 '''Pull 1''']<br />
Line 139: Line 158:     
'''Is there anything else you should have asked me or anything else that you should know that might make you like me or my project more?'''
 
'''Is there anything else you should have asked me or anything else that you should know that might make you like me or my project more?'''
 +
 +
Sometimes, I think what if I would have got the access of something like sugar in my childhood days. I can clearly see myself stuck with my xo machine playing with turtle and chatting with my friend abroad. I would have loved those moments. We would have cooler and smarter kids.
 +
 +
If not me, then why not the coming generation? This is the source of an enormous motivation for me to work for the development of this organisation. This project for me will always be driven by the motivation and the field of work ( which is my newly-found love : websockets. ). Hence, It will be completed with a lot of dedication and passion if given a chance.

Navigation menu