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]] |