Rishabhnambia
Joined 10 March 2018
m minor timeline edits |
|||
| (19 intermediate revisions by the same user not shown) | |||
| 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 | : 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 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. | ||
::*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 43: | Line 47: | ||
:This will include making sure that the IIAB playbook uses the latest version of sugarizer with all available functionality and ensuring that it works. | :This will include making sure that the IIAB playbook uses the latest version of sugarizer with all available functionality and ensuring that it works. | ||
:'''Collaboration''' | :'''Collaboration & Testing''' | ||
:Sugarizer already works really well when deployed locally on a Raspberry Pi and Neighbourhood view is also functional. | :Sugarizer already works really well when deployed locally on a Raspberry Pi and Neighbourhood view is also functional. | ||
:*On completion of Goal #1, the image build will be tested at real Sugarizer deployments with the help of the community. | |||
====Goal #2: Heroku Button==== | ====Goal #2: Heroku Button==== | ||
| Line 50: | 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 64: | 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 77: | Line 81: | ||
|Community Bonding | |Community Bonding | ||
| | | | ||
*Set up a blog for posting my weekly progress. | *Set up a blog for posting my weekly progress. | ||
*Discuss and reshape the Timeline after discussion with my mentor(s). | |||
*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]. | ||
|- | |- | ||
|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. | ||
* | *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 111: | Line 112: | ||
| | | | ||
| | | | ||
*Continue to work on the Raspberry Pi image and the build scripts and publish them. | |||
*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. | ||
| Line 119: | Line 121: | ||
| | | | ||
*On the IIAB Sugarizer install, add safeguards and checks to reduce MongoDB corruption issues caused by incorrect shutdown methods. | *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. | ||
*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. | ||
*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. | ||
:* | :*The aim is to remove the possibility of data loss during after updates. | ||
|- | |- | ||
|06 | |06 | ||
|June 21 - June 29 | |June 21 - June 29 | ||
| | | | ||
| | | | ||
*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 end of June. | |||
*The project should ideally be 90% complete by the | |||
*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 144: | ||
| | | | ||
| | | | ||
* | *Test Heroku Button deployment. | ||
*Test | *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. | |||
* | *We can use this release as a test for the upgrade processes created in Week 5. | ||
*Improvements to the upgrade process will be made. | |||
|- | |- | ||
|09 | |09 | ||
| Line 167: | Line 159: | ||
| | | | ||
| | | | ||
* | *Write a Bash + Docker script to deploy Sugarizer-server on a VPS.This will be done the traditional DevOps way using Ansible. | ||
* | *The Ansible component will not take much time because a similar play has already been written [https://github.com/iiab/iiab/tree/master/roles/sugarizer here]. | ||
|- | |- | ||
|10 | |10 | ||
| Line 175: | Line 166: | ||
| | | | ||
| | | | ||
* | *Continue working on the Bash + Docker script. | ||
* | *Use Packer or Terraform on the script to improve compatibility between VPS providers. | ||
|- | |- | ||
|11 | |11 | ||
| Line 183: | Line 174: | ||
| | | | ||
*Test deployment options thoroughly on different VPS providers. | *Test deployment options thoroughly on different VPS providers. | ||
* | *Take help from the community for testing the scripts on a larger scale. | ||
|- | |- | ||
|12 | |12 | ||
|6 Aug - August 14 | |6 Aug - August 14 | ||
|Final Evaluation | |||
| | | | ||
*Keep a final buffer week for added tasks. | |||
* | *Prepare final submissions. | ||
|- | |- | ||
| | | | ||
| Line 196: | Line 188: | ||
| | | | ||
|- | |- | ||
|} | |} | ||
| 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. | ||
:*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 | :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- | |||
: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.==== | |||
:*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! | ||
==== | ====Describe a great learning experience you had as a child.==== | ||
: | :Well, the most significant learning experience I can recollect is when I learned how to “learn”. | ||
: | :This is something entirely personal as different individuals require different learning methods. | ||
:I don’t remember exactly when or how I found out but I finally realized that I can learn only by “doing” and not by reading or writing about concepts. | |||
: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. | |||
[[Category:2018 GSoC applications]] | [[Category:2018 GSoC applications]] | ||