Changes

Jump to navigation Jump to search
184 bytes added ,  11:15, 27 March 2018
m
Line 7: Line 7:  
:'''Sugar Labs wiki username:''' Rishabhnambia
 
:'''Sugar Labs wiki username:''' Rishabhnambia
 
:'''IRC nickname:''' rishabhnambiar
 
:'''IRC nickname:''' rishabhnambiar
 +
:'''Github:''' https://github.com/rishabhnambiar
 
:'''Languages:''' English
 
:'''Languages:''' English
 
:'''Where am I located? and what hours(UTC) do I tend to work?'''
 
:'''Where am I located? and what hours(UTC) do I tend to work?'''
 
: I'm located in Mumbai, India (UTC +05:30).
 
: I'm located in Mumbai, India (UTC +05:30).
: Work Hours: 5:00 AM to 2:00 PM UTC
+
: Work Hours: 5:00 AM to 1:00 PM UTC
    
:'''Past experiences with Open-Source projects:'''
 
:'''Past experiences with Open-Source projects:'''
   −
:* I have worked with an open-source organization called [https://github.com/frappe ERPNext] sporadically between 2016 and 2017.
+
: I have worked with an open-source organization called [https://github.com/frappe ERPNext] sporadically between 2016 and 2017 as a part of their Developer Operations team.
 
   
 
   
:* I added an AWS S3 Integration to Frappe, a Python framework that powers ERPNext.
+
::* I added an AWS S3 Integration to Frappe, a Python framework that powers ERPNext.
:* https://github.com/frappe/frappe/pull/4272
+
::* https://github.com/frappe/frappe/pull/4272
:* Here’s a PR I made that has some Ansible:
+
::* Here’s a PR I made that has some Ansible:
:* https://github.com/frappe/bench/pull/473/
+
::* https://github.com/frappe/bench/pull/473/
:* I've been making minor contributions since May 2016.
+
: I've been making minor contributions since May 2016.
    +
::*https://github.com/frappe/bench/pull/473 [Ansible]
 +
::*https://github.com/coding-blocks/content-downloader/pull/7 [Python]
 +
::*https://github.com/fossasia/meilix-generator/pull/110 [HTML, CSS, JavaScript]
    
=Project Description =
 
=Project Description =
Line 51: Line 55:  
:
 
:
 
[[File:Herokubuttonreadmeexample.png|center]]
 
[[File:Herokubuttonreadmeexample.png|center]]
:
+
:::::::::::::::::::''<small>Fig. mockup for a Heroku Button in README.md</small>''
 
:The second goal is to simplify the way to deploy Sugarizer in the cloud. The priority in this section is get a [https://blog.heroku.com/heroku-button Heroku Button] for sugarizer up and running.
 
:The second goal is to simplify the way to deploy Sugarizer in the cloud. The priority in this section is get a [https://blog.heroku.com/heroku-button Heroku Button] for sugarizer up and running.
 
:
 
:
Line 65: Line 69:     
:If things go as per the timeline till the 2nd evaluation phase, I will also be making a Bash + Docker script for sugarizer deployment. Ansible, Terraform or Packer can be added to the script to allow compatibility for different VPS providers. As the Docker build for Sugarizer-server and Ansible installer for IIAB already exist, this will not take long.
 
:If things go as per the timeline till the 2nd evaluation phase, I will also be making a Bash + Docker script for sugarizer deployment. Ansible, Terraform or Packer can be added to the script to allow compatibility for different VPS providers. As the Docker build for Sugarizer-server and Ansible installer for IIAB already exist, this will not take long.
      
=Timeline=
 
=Timeline=
Line 79: Line 82:  
|
 
|
 
*Set up a blog for posting my weekly progress.  
 
*Set up a blog for posting my weekly progress.  
*Finish node.js performance analysis for Sugarizer-server and post the results for the community.  
+
*Discuss and reshape the Timeline after discussion with my mentor(s).
*The analysis includes parameters like file download size for every page/activity, frequency of page visits, processing required per request and seeing how the Pi server behaves in different conditions.  
+
*Investigate the causes of MongoDB crashes faced by Sugarizer users and formulate a solution.
 
|-
 
|-
 
|
 
|
Line 91: Line 94:  
|
 
|
 
|
 
|
 +
*Analyze Sugarizer performance on the Raspberry Pi using parameters like file download size for every page/activity, frequency of page visits, processing required per request and seeing how the Pi server behaves in different conditions.
 
*Create a Raspbian Image build for the Pi3 that has an Access Point and Sugarizer-Server running on boot.  
 
*Create a Raspbian Image build for the Pi3 that has an Access Point and Sugarizer-Server running on boot.  
 
*Use '''hostapd''' and '''dnsmasq''' to create an access point as shown in this [https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md article].
 
*Use '''hostapd''' and '''dnsmasq''' to create an access point as shown in this [https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md article].
*This project will involve writing some bash for the build and I’ll use these resources for inspiration:
  −
  −
:*https://github.com/sugarlabs/rpi23-gen-image
  −
:*https://github.com/iiab/iiab-factory/tree/master/box/rpi
  −
   
|-
 
|-
 
|02
 
|02
Line 104: Line 103:  
|
 
|
 
*Continue to work on Raspbian Image build and test on my Raspberry Pi 3.  
 
*Continue to work on Raspbian Image build and test on my Raspberry Pi 3.  
*Images should be available to the community and for testing.
+
*This project will involve writing some bash for the build and I’ll use these resources for inspiration:
    +
:*https://github.com/sugarlabs/rpi23-gen-image
 +
:*https://github.com/iiab/iiab-factory/tree/master/box/rpi
 
|-
 
|-
 
|03
 
|03
Line 114: Line 115:  
*Improve the [https://github.com/iiab/iiab/tree/master/roles/sugarizer Ansible playbook] for installing Sugarizer on the Internet-In-A-Box installer.  
 
*Improve the [https://github.com/iiab/iiab/tree/master/roles/sugarizer Ansible playbook] for installing Sugarizer on the Internet-In-A-Box installer.  
 
*This will include making sure that the IIAB play uses the latest version of sugarizer with all available functionality and ensuring that it works.  
 
*This will include making sure that the IIAB play uses the latest version of sugarizer with all available functionality and ensuring that it works.  
*On the IIAB Sugarizer install, add safeguards and checks to reduce MongoDB corruption issues caused by incorrect shutdown methods.
   
|-
 
|-
 
|04
 
|04
Line 120: Line 120:  
|
 
|
 
|
 
|
 +
*On the IIAB Sugarizer install, add safeguards and checks to reduce MongoDB corruption issues caused by incorrect shutdown methods.
 
*Study how to make the Sugarizer School Box communicate with the Android and iOS apps.
 
*Study how to make the Sugarizer School Box communicate with the Android and iOS apps.
 
*Implement and test on multiple Android devices/tablets.
 
*Implement and test on multiple Android devices/tablets.
|-
  −
|
  −
|
  −
|
  −
|
   
|-
 
|-
 
|05
 
|05
 
|June 12 - June 20
 
|June 12 - June 20
|
+
|Phase I Evaluation
 
|
 
|
 
*Formulate a robust upgrade process to ensure that Sugarizer updates are installed successfully without losing any data to instances that have been deployed.
 
*Formulate a robust upgrade process to ensure that Sugarizer updates are installed successfully without losing any data to instances that have been deployed.
Line 138: Line 134:  
|06
 
|06
 
|June 21 - June 29  
 
|June 21 - June 29  
|Midterm Evaluation
+
|
 
|
 
|
 
*Generate a Heroku Button for one-click Sugarizer-server deployment.  
 
*Generate a Heroku Button for one-click Sugarizer-server deployment.  
*The project should ideally be 90% complete by the midterm evaluation phase.  
+
*The project should ideally be 90% complete by the end of June.  
 
*So my goal at this stage is to have a functional Raspberry Pi image build for Sugarizer, significantly improved IIAB Ansible install script and the Heroku Button.  
 
*So my goal at this stage is to have a functional Raspberry Pi image build for Sugarizer, significantly improved IIAB Ansible install script and the Heroku Button.  
 
|-
 
|-
Line 149: Line 145:  
|
 
|
 
*Test Heroku Button deployment.
 
*Test Heroku Button deployment.
*Test the Sugarizer School Box Raspberry Pi image at real '''Sugarizer deployments''' with the help of the community.
+
*Test the Sugarizer School Box Raspberry Pi image at real Sugarizer deployments with the help of the community.
 
|-
 
|-
 
|08
 
|08
 
|July 09 - July 13
 
|July 09 - July 13
|
+
|Phase II Evaluation
 
|
 
|
 
*If the Turtle/Music Blocks release is on schedule, I will add it to the Sugarizer Pi Image build.
 
*If the Turtle/Music Blocks release is on schedule, I will add it to the Sugarizer Pi Image build.
 
*We can use this release as a test for the upgrade processes created in Week 5.
 
*We can use this release as a test for the upgrade processes created in Week 5.
 
*Improvements to the upgrade process will be made.  
 
*Improvements to the upgrade process will be made.  
|-
  −
|
  −
|
  −
|
  −
|
   
|-
 
|-
 
|09
 
|09
Line 175: Line 166:  
|
 
|
 
|
 
|
*Use Packer or Terraform on the Bash + Docker script written in Week 9 to improve compatibility between VPS providers.
+
*Continue working on the Bash + Docker script.
 +
*Use Packer or Terraform on the script to improve compatibility between VPS providers.
 
|-
 
|-
 
|11
 
|11
Line 186: Line 178:  
|12
 
|12
 
|6 Aug - August 14
 
|6 Aug - August 14
|
+
|Final Evaluation
 
|
 
|
 
*Keep a final buffer week for added tasks.
 
*Keep a final buffer week for added tasks.
Line 196: Line 188:  
|
 
|
 
|-
 
|-
|
  −
|August 06 - August 14
  −
|Final Evaluations
  −
|
   
|}
 
|}
   Line 205: Line 193:     
:I believe I can complete this project because of my love and fascination for Linux and my previous work experience with Ansible, Docker and Python.
 
:I believe I can complete this project because of my love and fascination for Linux and my previous work experience with Ansible, Docker and Python.
:This is the first time I’m applying for GSoC and Sugar Labs is the only organization I’m applying to because this project is a really good fit for my skill-set.
      
:*I mentioned my experience with an open-source organization called [https://github.com/frappe ERPNext] above.   
 
:*I mentioned my experience with an open-source organization called [https://github.com/frappe ERPNext] above.   
Line 214: Line 201:     
:*In the summer of 2017, I was at [https://angel.co/cube-consumer-services-1 Cube] as a  Full-Stack Development Intern. Over the summer, I built a Python based (bottle.py) web application that automated a lot of maintenance tasks for the Operations team that included web scraping and API Development. I also containerized the application using Docker and Docker-Compose.
 
:*In the summer of 2017, I was at [https://angel.co/cube-consumer-services-1 Cube] as a  Full-Stack Development Intern. Over the summer, I built a Python based (bottle.py) web application that automated a lot of maintenance tasks for the Operations team that included web scraping and API Development. I also containerized the application using Docker and Docker-Compose.
 +
 +
:This is the first time I’m applying for GSoC and Sugar Labs is the only organization I’m applying to because this project is a really good fit for my skill-set.
    
= The Project and the Community =
 
= The Project and the Community =
Line 234: Line 223:  
::4) I think you can start thinking on your proposal. You can continue to discuss with us to talk about the project but also the community and the impact of that project.
 
::4) I think you can start thinking on your proposal. You can continue to discuss with us to talk about the project but also the community and the impact of that project.
 
::5) For the deployment part we have two options that would be nice to have.
 
::5) For the deployment part we have two options that would be nice to have.
::* a really simple automation like heroku single click deploy (https://blog.heroku.com/heroku-button). This is the killer feature we should definitely have.
+
::* a really simple automation like heroku single click deploy (https://blog.heroku.com/heroku-button).  
 +
:::'''This is the killer feature we should definitely have.'''
 
::* the devops way using tools like Ansible and Terraform and Packer.
 
::* the devops way using tools like Ansible and Terraform and Packer.
 
::'''One major thing for all platforms is to think about the upgrade processes, how can we update the devices/server without losing data.'''
 
::'''One major thing for all platforms is to think about the upgrade processes, how can we update the devices/server without losing data.'''
Line 251: Line 241:     
'''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?'''
 
'''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?'''
:In the Community Bonding period, I will create a blog for myself and I will share my weekly experiences and progress through it.
+
:In the Community Bonding period, I will create a blog for myself and I will share my weekly experiences, progress and plans for the next week through it.
 
+
:During the coding period, I'll attend the Development Team Meetings and will also be available on IRC (#sugar) when I'm working.
    
= Miscellaneous =
 
= Miscellaneous =
    
====Setting up a Development Environment====
 
====Setting up a Development Environment====
:I wasn’t sure if this project falls under the Sugar-Web projects or the Sugar projects.
+
 
 +
:I wasn’t sure if this project falls under the Sugar-Desktop projects or the Sugar Web projects so for a relevant screening task, you can check a Sugarizer deployment I’ve done at http://rishabhn.xyz:8080/
 +
 
 
:I've deployed Sugarizer on my Raspberry Pi 3 and a VPS with Docker and without it.
 
:I've deployed Sugarizer on my Raspberry Pi 3 and a VPS with Docker and without it.
 
:It works really well and I haven’t run into any major issues.
 
:It works really well and I haven’t run into any major issues.
   −
:
+
====Tell us something about yourself that will make us like you more.====
[[File:Locustsugarizersmaller.png|center]]
+
:*I believe I’m a good candidate for this project because I’m an avid distro-hopper. The process of merely installing new Linux distributions and setting them up the way I like takes a large chunk of my time. So, the Sugarizer School Box isn’t just some project I’d like to do for GSoC, it’s something I’ll actually enjoy building!
:
+
:*I come from a family of musicians so I’ve turned into an amateur singer and guitar player as I’ve grown up. I also know my way around recording instruments and vocals. If the Sugarizer School Box project didn’t exist, I would have picked a Music Blocks project for sure. Maybe I can work on it sometime in the future!
 
  −
 
  −
====Workload Analysis for sugarizer-server====
  −
:I've been testing the page load times for some activities using Locust, a user load testing tool written in Python that lets you test site performance by swarming it with users.
  −
:This will fulfill one of the tasks in the node.js performance analysis of sugarizer-server which lets us know the size of the file download per page/activity and response times as the number of users increases.This analysis will be important when I run them on the Raspberry Pi WiFi AP along with the other tasks in parallel. I will try to replace this section with a more complete analysis before the final proposal.
  −
 
  −
:''PS:'' ''This screenshot is not a good indicator of real-world performance because:''
  −
::* 300 users
  −
::* 30 requests/second
      
====Describe a great learning experience you had as a child.====
 
====Describe a great learning experience you had as a child.====
Line 282: Line 265:  
:Now, I just use that concept to try learning whatever I need to. It’s all about getting your hands dirty and putting in the work.
 
:Now, I just use that concept to try learning whatever I need to. It’s all about getting your hands dirty and putting in the work.
   −
====More questions I'd like to ask====
     −
:*I've taken a lot of freedom in making the timeline and I'm not sure if I've given enough time to the important things.
+
 
:*If something I've given time to isn't very important then we could replace that something else.
  −
:*Would you like to see even more implementation details? (I've added some in the Timeline).
  −
:*I'd love to receive any feedback from the community!
         
[[Category:2018 GSoC applications]]
 
[[Category:2018 GSoC applications]]

Navigation menu