Summer of Code/Student application template


About you

  • What is your name?

Rahul Gaur

  • What is your email address?

rahul.nbg@gmail.com

  • What is your Sugar Labs wiki username?

Rahul_Gaur

  • What is your IRC nickname?

iamaregee2@irc.freenode.net

  • What is your primary language?

I speak english and hindi

  • Where are you located, and what hours do you tend to work?

I live in New Delhi/NCR and I have flexible work hours and I am online between 15:00 hrs to 23:00 hrs (UTC)

  • 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 not been involved with any Open Source project, but most of the work I do is Open Source and it could be found on my github page.I want to get involved with an Open Source project and contribute to it because most of the resources, softwares and the programing skills I have achieved so far is mainly possible because of the Open Source community.If I seek GSOC as opportunity to contribute back to the community.


About your project

  • What is the name of your project?

Project Sharing WebSite for SugarLabs

  • 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?

Goal of this project is to implement a Project Sharing site to foster collaboration and sharing of Open source projects over the internet.The website upon the completion would also provide REST-API’s , so that the services of the website could be utilised by the Sugar Activities to share the project on the site and it will also provide the third party developers to integrate the services in their own apps.

Over the course of GSOC , there would be lot of additions and removal of unwanted components from the project , which would be based on discussing various ideas with the community.

I have been coding in Python since last three years and I recently started with JavaScript , HTML5 , CSS3 . I plan to put all these together in my project.

I am using Django with bootstrap(twitter) for my Mock Up and it's responsive design , so it would be supported by all modern web browsers and mobile/tablet devices.

I am using Django for backend development and I plan to use Django's built in ORM for Database schema.I also have some experience with Pinax project , but I don't intend to use it rather I plan to use numerous social feature apps in pinax leveraging the ability of pluggable apps offered by Django.

The apps that I could easily integrate with my project are notification , login , authentication , sign up and OAuth authentication app just to name a few provided by the pinax project.

Deliverables :

  • Social Features : Followers , Like , favourites , share .etc
  • Authenticated API's :Ability to post projects from various Sugar Activities
  • Separate landing pages for different audiences (kids, teachers, parents, etc.)
  • Gallery : Ability for users to create portfolio of their projects.
  • Multi-language support : Adding support for international Languages



In this project my main efforts will be three major task to complete.Despite that , all three enhance the sharing , collaboration and learning efforts with Sugar.

  • What is the timeline for development of your project?

Roadmap:

  • Phase 1 ~
  • May 27th ~ June 7th :

My University exams would probably be over by this time , and this is the time I would start working full time on my project. I am planing to use Django/Python to develop this Website During this week I would do my research , community bonding , going through the Source Code. Completing My Proof of Concept/ Mockup . Discussing my strategy with the community and my mentor .

  • June 10th ~ June 17th:

I would start fleshing out the code from my proof of concept stage to more functional stage . During this time I would be working on developing the frontend for the site. I would be using bootstrap with django to achieve this goal. I aim to setup a basic infrastructure with things like authentication, user profiles , project details and galleries by this time.


  • Phase 2 ~
  • June 18th ~ July 18th :

Authentication / Authorization : As of now , for my proof of concept I am considering OAuth as , I haven't worked much with OAuth , I just have a very superficial knowledge of Open Id and Open Authentication protocols and their working. I have already started learning about OAuth and I hope to be in a better state when I reach this time frame. However the final implementation would be based on discussing ins and outs of OAuth and other similar alternatives. I also plan to integrate features like FB connect, Twitter connect and Google connect, so that users can connect and avail the services using their existing id’s. I am planing to implement Facebook API’s to offer ‘Share’ ‘Like’ ‘Comment’ and similar features for twitter. These features would enable users to share their projects with friends and family who are not on Sugar Labs (project sharing site) . Thus would enable Sugar Project to reach to a wider audience .

  • July 19th ~ August 1st :

By the time we reach the mid-term evaluation , my goal would be to have a functional authentication and authorization mechanism along with the other basic social networking services up and running by this time. This is the Time I would start implementing REST-API’s for my project. I plan to use on of the following frameworks to do so : Django-REST-Framework - [0] Django-Tastypie - [1] I have done quick example apps for both the frameworks which could be found on my Github repos. I am yet to study the above frameworks more deeply , so the final choice for this would be made after discussing and evaluating both the frameworks for different scenarios. Making sure that Authorization/Authentication module and APIs play nice with each other . Do my documentation and testing my work and blogging about the achieved milestones . Adding Multi Language support.


  • Phase 3 ~
  • August 2nd ~ August 15th :

During this time frame , my main objective will be to write a python wrapper for the REST-API’s offered by the WebSite. This python client would make it easier for the developers to further integrate the web services offered by the website into their own work. Integrate Project sharing features into the existing Sugar Activities . This would require better understanding of the Core Sugar Codebase. I would be doing mostly examples on how to achieve this functionality. Writing Documentation to help other developers on how to integrate the services with other Sugar Activities. August 15th ~ September 1st : I have taken some amount of cushion time in the above to account and adjust for any unforeseen circumstances. If there is any major change we have to make and start certain aspects of project from the scratch , this cushion time would allow for accommodating those changes in the project. I plan to dedicate this time frame specially towards improving the code quality , fixing bugs improving efficiency testing performance and quality of the code written. This stage will be followed by writing and improving the documentations for the newly added features and APIs. Tidying up any lose ends and ensuring that the code is properly organized and documented.. Making sure everything which I did is available on Launchpad/Github and other source repositories.


  • September 1st ~ September 22nd :

By this time I would be reaching the firm pencil down date. Initially I plan to stage this project on Openshift platform by redhat. This would allow me to gain real time user feedback on my work. Even Though the load handling capabilities would be low on Openshift (free account) , but this would give us an idea how the projects performs under production environment.. Perfecting any design requires lot of patience and time, so I plan to dedicate this time frame specifically towards perfecting my project. Key point to gain traction on any web service is consistency in design , layout , performance and constant user feedback.. I have a limited experience with web development, but what I feel is the real time consuming part is not about the design and layout even though no design is perfect and there is something new to add every time. What really consume time is finalizing the project , so it could serve it’s actual purpose ie: be useable. I would be reviewing my code , improving it as per the user feedback in order to provide a better user experience.



Links ~ Below I have provided links to some of my experimental work I am doing for this project: [0] : https://github.com/aregee/restful [1]: https://github.com/aregee/restpie [2] - https://github.com/aregee/sugar-labs_project


  1. Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described.

Most of the work I do is Open Source , here is a link to my GitHub Profile - https://github.com/aregee. Most of the technologies I plan to use for this project are the ones I have some amount of previous experience.It’s just that I haven’t used them all together ,but my elementary fundas for these technologies is strong . Here is the link to my first Django app staged on OpenShift :http://resworks-rahulgaur.rhcloud.com My college doesn’t have an online portal to serve Examination Results online , so I took the opportunity to participate under KRDS - Facebook hackathon couple of months back and developed this app.Over the last two - three months , I am working closely with my college administration and professor on this Application.By the time the next college session starts , I hope to deploy this app on cloud , but College Administration is insisting to deploy app on the college servers only.We are working very dedicatedly on this project and we hope to release this project along with couple of additional modules and currently we are working on adding attendance module to this project . Recently I did some frontend web development for the college . The Cultural Society of my college was organizing Technical Fest , so for that I designed a website leveraging javascript library impress.js along with HTML5 and CSS3. http://www.scrietscs.org . I have been coding in python for last three years , and I have been using it for all sorts of purpose which range from writing scripts handle things like deploying code on cloud , exploiting and experimenting something or other with python for android. I am highly self motivated , pro foss and dedicated learner and If provided an opportunity , I am confident enough that I can complete this project in the above mentioned timeline. I believe that completing this project will help me to gain some sense of how real world software development takes place and benefit me with the understanding of teamwork plus time management so that when I graduate from the college next year I would have most of the skills needed to begin a career in web development.


You and the community

  • Profits for Sugar Labs

Facilitate the users of the Sugar Labs with an ability to share their work on a platform which would promote collaborative learning and development of projects.The site would have social networking features and integration with the popular social networking services would help the projects and the Sugar community to reach to a wider audience. I plan to deploy and develop my project on Openshift and add upstream to github , with a copy of app deployed on OpenShift we can get real time feedback from the users and improve upon the work.I think there must be number of people from New Delhi/NCR area involved with Sugar Labs.We can meetup and initially plan a deployment of Sugar platform at some public school nearby (probably after mid-term evaluation).I can also get some help from IIT-Delhi Linux User group , they are helpful breed of coders :) . There are times when we do get struck and I agree it could be demotivating and one feels lost without a proper guidance.Best way to overcome such situations is to be composed and documentation plus source code.I use lots of open source technologies everyday and at times I feel the need to customize the code or make some changes to it.Knowing what you want and how to do it is not the key , I feel the key is Documentation and understanding the source code.What I have experienced is that most of the time I know what I have to do , but I just couldn’t figure out what part of code do I need to change.So sticking with the rule of thumb , I would go for documentation and source code of the technology I am using as this gives me brief idea about how the particular function/feature is designed and how it works. I would be doing a weekly blogs over the weekend covering the hardships and achievements which I have accomplished over the week.Besides this I would be communicating my work over the mailing list and I am also active on the IRC , so this would help me to discuss my problems and share my progress over the course of GSOC.



Miscellaneous

  • I would probably fit in a T-Shirt of L (Male) size.
  • As a kid , one of the best learning experience I had has been with the Computers and precisely WEB. Internet and world wide web is what that has fascinated me and nothing else comes even close.The Web and computers has given me/ even whole mankind a power to share the ideas , knowledge , earn a living and do good to society in a million ways.I had my first “wow” moment way back in 5th grade I guess.I had just started with internet and one day while browsing some site on IE , I accidently clicked *view source* and there was whole lot of text on my screen which I could correlate to the webpage I was browsing.Quickly I realized that I could save the source and make changes to the text part to display some text that I want.That’s the moment when I realized that what I want to do in my life.I wanted to create websites .Another such *wow* moment came when I switched to Ubuntu/Linux way back in high school ;-)
  • Ever Since I joined the college (3 years now ) , I have been actively promoting FOSS and helping kids to get started with Coding/familiarising them with computers.Giving presentations around my neighbourhood to foster better learning skills and evangelising foss technology , be it my college or my school. I try to present a picture that coding is fun , interesting and show kids lots of demonstration of *cool* programs that they could make easily and which does accomplish certain task like writing a script to hide files on their computers/mobiles instead of demonstrating how to generate the Fibbonaci series and calculate the golden ratio :). Once they develop interest in coding and computers , they move to the harder and algorithmic problems.
  • Here is a link to one such presentation I recently gave at my college : http://aregee.github.io/demo-impress.js/
  • I am dedicating my full summer time to my GSoC Project , here I would like to sate my schedule.I have my End Semester exams running upto 27th of May , this would be the time when I would be occupied with College and my involvement would be low. I would be in touch over the emails.Besides this I have a preplanned family in the end of June (24th to 28th) which would consume my four days apart from this my goal is to work full time on my Project.