Changes

Jump to navigation Jump to search
443 bytes added ,  01:10, 15 March 2018
m
minor edits
Line 27: Line 27:     
=== Sugarizer School Box ===
 
=== Sugarizer School Box ===
  −
  −
==== Goal #1: Sugarizer Raspberry Pi Images and Improving the Internet-In-A-Box Ansible Installer for Sugarizer ====
      
:
 
:
Line 35: Line 32:  
:
 
:
    +
==== Goal #1: Sugarizer Raspberry Pi Images with build scripts ====
 +
:
 
:The first goal is to create a Raspberry Pi image and build scripts based on Raspbian that can serve Sugarizer to a classroom full of students. This is being created because the Raspberry Pi is inexpensive, widely available and many such Sugarizer School Boxes can provide a cost-effective way of reaching out to more students and communities through Sugar.  
 
:The first goal is to create a Raspberry Pi image and build scripts based on Raspbian that can serve Sugarizer to a classroom full of students. This is being created because the Raspberry Pi is inexpensive, widely available and many such Sugarizer School Boxes can provide a cost-effective way of reaching out to more students and communities through Sugar.  
   Line 42: Line 41:  
:*start a browser session running sugarizer client so a single user/instructor can use it by connecting a display to the Pi.
 
:*start a browser session running sugarizer client so a single user/instructor can use it by connecting a display to the Pi.
    +
:Improvements to the Internet-In-A-Box [https://github.com/iiab/iiab/tree/master/roles/sugarizer Ansible playbook] for Sugarizer will also be made in this section.
 +
:This will include making sure that the IIAB playbook uses the latest version of sugarizer with all available functionality and ensuring that it works.
    
==== Goal #2: Heroku Button====
 
==== Goal #2: Heroku Button====
   −
: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.
   
:
 
:
 
[[File:Herokubuttonreadmeexample.png|center]]
 
[[File:Herokubuttonreadmeexample.png|center]]
 +
:
 +
: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.
 
:
 
:
 
:A Heroku Button is a simple HTML or Markdown snippet that can be added to READMEs. Clicking a Heroku Button will take you through a guided process to configure and deploy an app running the source code referenced by the button.
 
:A Heroku Button is a simple HTML or Markdown snippet that can be added to READMEs. Clicking a Heroku Button will take you through a guided process to configure and deploy an app running the source code referenced by the button.
Line 73: Line 75:  
|Community Bonding
 
|Community Bonding
 
|
 
|
*Finish node.js performance analysis for Sugarizer-server and post the results for the community. 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.  
+
*Finish node.js performance analysis for Sugarizer-server and post the results for the community.  
 +
*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.  
 
*Set up a blog for posting my weekly progress.  
 
*Set up a blog for posting my weekly progress.  
   Line 86: Line 89:  
|
 
|
 
|
 
|
*Create a Raspbian Image build for the Pi3 that has an Access Point and Sugarizer-Server running on boot. I will use hostapd and dnsmasq to create an access point as shown in this [https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md article].
+
*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].
 
*This project will involve writing some bash for the build and I’ll use these resources for inspiration:
 
*This project will involve writing some bash for the build and I’ll use these resources for inspiration:
   Line 105: Line 109:  
|
 
|
 
|
 
|
*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 ensure that it works.  
+
*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.  
 
|-
 
|-
 
|04
 
|04
Line 124: Line 129:  
|
 
|
 
*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.
*Explore [https://github.com/Unitech/pm2 pm2] as a solution to do solve this or use other features of pm2 to enhance reliability.  
+
*Explore [https://github.com/Unitech/pm2 pm2] as a solution to do solve this or use other features of pm2 to enhance reliability.
 +
:*Monitoring
 +
:*Development Workflow with CI
 +
:*Run updates using pm2
 
|-
 
|-
 
|06
 
|06
Line 166: Line 174:  
|
 
|
 
|
 
|
*Test deployment options thoroughly on different VPS providers. *Try to use Packer or Terraform on the Bash + Docker script written in Week 8 to improve compatibility between VPS providers.
+
*Test deployment options thoroughly on different VPS providers.  
 +
*Use Packer or Terraform on the Bash + Docker script written in Week 8 to improve compatibility between VPS providers.
 
|-
 
|-
 
|11
 
|11
Line 195: Line 204:  
: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.   
   −
:In the summer of 2016, I worked as a full-time intern for the same organization. I added automated AWS S3 Backups to their in-house deployment tool,  
+
:In the summer of 2016, I worked as a full-time intern for the same organization. I added automated AWS S3 Backups to their in-house deployment tool, [https://frappe.io/blog/development/deployment-for-everyone. Central].  
:[https://frappe.io/blog/development/deployment-for-everyone. Central].  
   
:This included writing Ansible playbooks and Python that would set up automated backups for all their production servers for their enterprise clients. This was NOT an open source contribution but I’m mentioning this here because it is a major reason for my familiarity with Linux and Deployment.  
 
:This included writing Ansible playbooks and Python that would set up automated backups for all their production servers for their enterprise clients. This was NOT an open source contribution but I’m mentioning this here because it is a major reason for my familiarity with Linux and Deployment.  
   
:Some presentations depicting my work at ERPNext can be viewed [https://drive.google.com/drive/folders/0B70J3r6c_RnCdUp5MmNPQWlmV00?usp=sharing here].
 
:Some presentations depicting my work at ERPNext can be viewed [https://drive.google.com/drive/folders/0B70J3r6c_RnCdUp5MmNPQWlmV00?usp=sharing here].
    
: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.
      
: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.
Line 209: Line 215:  
=== Project and the Community ===
 
=== Project and the Community ===
   −
'''If the project is successfully completed, what will be its impact on the Sugar Labs community?'''
+
===If the project is successfully completed, what will be its impact on the Sugar Labs community?===
 
*:'''Rishabh Nambiar'''
 
*:'''Rishabh Nambiar'''
 
:: rishabhn@protonmail.com, [https://twitter.com/rish4bhn Twitter]
 
:: rishabhn@protonmail.com, [https://twitter.com/rish4bhn Twitter]
Line 218: Line 224:     
   
 
   
===== Answers from the Community=====
+
=== Answers from the Community ===
 
:
 
:
 
*:'''Michaël Ohayon - mohayon75@gmail.com (Potential GSoC Mentor)'''
 
*:'''Michaël Ohayon - mohayon75@gmail.com (Potential GSoC Mentor)'''
Line 250: Line 256:  
=== 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-Web projects or the Sugar projects.
 
: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.
Line 260: Line 266:       −
=====Workload analysis for sugarizer-server=====
+
====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.  
 
: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.  
 
: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.  
Line 268: Line 274:  
::* 30 requests/second
 
::* 30 requests/second
   −
'''Describe a great learning experience you had as a child.'''
+
====Describe a great learning experience you had as a child.====
    
:working-on-it
 
:working-on-it
   −
'''More questions I'd like to ask'''
+
====More questions I'd like to ask====
 
  −
:I wanted to know if I should add more details about the implementation of the tasks in the proposal and I would also love to recieve any kind of feedback from the community.
      +
: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 with setting up CI wherever it's required.
 +
:I'd love to receive feedback from the community!
    
[[Category:2018 GSoC applications]]
 
[[Category:2018 GSoC applications]]

Navigation menu