User:Siriuswapnil/Blogs/SecondBiWeeklyReport

= BiWeekly Report II - GSoC '20 = With a couple of weeks into the program, I now feel very comfortable into the Open Source environment. The workflow is very functional and there’s a lot of learning involved. These two weeks of the Community Bonding period were very crucial for me in understanding the structure and the code base I will be working on. I had some great interactions with my mentors and now, seems we are on an even platform to start working on the project.

What my project is all about :
So let me start by giving a brief introduction of my project and what I will be working on during the course of the program.

My project is a part of the Internet in A Box platform, which essentially aims to provide some of the most fundamental features of the Internet to those, who have little to access to the Internet itself. Aiming to provide the world’s free knowledge, from the most renowned in the business, including the likes of Wikipedia, Khan Academy and a whole lot others. And its not just that, by offline internet, we mean providing really fundamental features of today’s generation like email facility, file storage, file sharing etc.

Another cool feature of IIAB is the ability to give offline maps to people. With open source map tiles from organisations like OpenStreetMap, IIAB is able to provide this functionality to those seeking locational services, but limited to areas with no Internet Access.

My project is a subset of various enhancements that can be done to IIAB Maps. In simple words, it is concerned with displaying overlays and additional information on maps that were otherwise static, which would make them more interactive and more functional to the end users.

What I did this week :
Since, me and my mentors had a mutual consent to starting the project early, it was a great decision for me, as it enabled me to understand the otherwise massive codebase and the technology stack used early on, and that is proving to be a massive headstart for the rest of the coding process. These two weeks I was involved in setting up the IIAB development environment on my system and testing out various features.

The installation process of IIAB development environment is handled by Ansible, which is an open-source application deployment and configuration tool that really makes it easy to install and keep track of different components involved in making everything work as one.

The entire development process, can be summarised in a few points mentioned below :

Understanding the Development Process

 * 1) IIAB basically needs a server to operate from. The server has the offline content and when started, it has its own wifi hotspot and devices connected to it, or the wifi network powering IIAB, can access the content with ease.
 * 2) Ideally, the recommended hardware for an IIAB installation, is a $35 Raspberry Pi. But it can also be installed on various Linux distros. The most popular one being Ubuntu. The Installation Manual for implementers is very detailed and can be found here.
 * 3) In the last one week I have switched from Ubuntu18.04 desktop to Ubuntu 20.04 Server to Ubuntu 18.04 Server Edition, which finally worked for me.
 * 4) For best practices, and the most obvious approach is to use a VM. So the Ubuntu 18.04 server actually acts like a RPi and we can access the IIAB homepage from the host machine, which would be analogous to the user’s own device, in real world scenarios.
 * 5) We actually use multiple cloned VMs, an approach suggested by Tim, so that we don’t have to go over the hassle of re-downloading and re-configuring the base install every time we mess up with any component. The structure of those multiple VMs is mentioned below.
 * 6) Once, the VM is set, a normal implementer can follow the steps on IIAB Installation Github Page, but since will be working on the project, we will need to install it from our own versions. These versions are our own forks of the stable IIAB install file. In my case, I was supposed to fork from George’s repo for IIAB and IIAB Admin Console, which in turn was forked from IIAB master. This was because there were inconsistencies and a lot of test features on George’s version and specially he has work done in the area, that I am supposed to work in. For maps, we have a separate branch by the name iiab7.2-devel that we will be using for pushing overlay changes to the maps on IIAB master.
 * 7) So in the end, for development work, I have installed the IIAB from my own branch( forked from iiab/maps -b iiab7.2-devel) and any changes I make, if they are complete, I will be required to submit a PR and then finally in the end we can compile everything and commit to master.

So, this in short summarizes the entire workflow that I will be following. The detailed installation process will be posted in an upcoming blog.

Peace.