GSoC Final Blog-OpenWrt Device Page

Greetings! Hope everyone is staying safe! 🎉

I am Aditi, and this is my last blog post for Google Summer of Code 2021!

As this journey comes to an end, I would like to summarise the wonderful experience I’ve had over the period of 10 weeks. Though, my interaction with OpenWrt has been before that, and I am positive, this is not the end of my contributions to the wonderful community!

Google Summer of Code with FreiFunk

Before talking about the details of my project, I would like to write a small acknowledgement of my 10 week journey.

It has been a really exciting journey! I learnt more about Git/GitHub and React in these 10 weeks than I had learnt in past one year of working by myself. GSoC allowed me to improve my communication skills by talking in communities!

These 10 weeks working with FreiFunk(OpenWrt) finally enabled me to get over my impostor syndrome. The mentors and admins have always been helpful even after I made quite a few mistakes in a few commits.

I would like to thank the community for tremendous amount of support and patience! 😊

Project Progress

The project repository can be found here.

So, as per my first blog, we planned on achieving the following over the summer:

The main aim of OpenWrt Device Page Project is to create an overview of OpenWrt supported devices to simplify user choice of acquiring new devices. The project can be broken down into two major sub-tasks:

  1. Creation of input form from a JSON Schema to simplify the process of adding device metadata to the github repository.
  2. After creation of input form, the second step is to render the device pages. The device pages will have search masks, to search specifically for devices with certain features like USB port, WiFi6 etc.

The form has been build with the autocomplete functionality (which has been quite a challenge!). However, there are still some issues that need to be fixed.

Future Scope

One of the major next steps of the project is to use the device data to create device pages. The device pages would have search option to search devices on the basis of USB Port etc.

[GSoC’21] OpenWrt Device Page

‘Tis the week 5! 🎊

Greetings! I am Aditi, and I am at the end of fifth week of my ten week “summer of code”.

Experience So Far

The first five weeks have been really amazing. When I started working on the device page project, it seemed as if there was a clear set of tasks that need to be done. Everything felt pretty straight-forward!

But while working hands-on, I realised I’ve learnt so much along the way. My first task of the project included improving the device data form, allowing easier input of data.

The form is designed in React with the help of React-JSON-Schema-Form. The hardest part of form implementation was to use Custom Components to facilitate onChange events. Due to asynchronous behaviour of React.useState(), it was challenging to manage form states. The project allowed me to do a plethora of exploration on React Hooks. In addition to it, it compelled me to read extensive documentations, find out a lot of ways in which React Hooks don’t work fine. To quote, Thomas A. Edison,

Thomas Edison - 10,000 Ways That Won't Work - Due

In addition to that, the project gave me an opportunity to engage with open source communities, raise some issues, discuss it with maintainers!

Progress

The project essentially involved two tasks:

  1. Creation of input form from a JSON Schema to simplify the process of adding device metadata to the github repository.
  2. After creation of input form, the second step is to render the device pages with search masks, allowing users to search specifically for devices with certain features like USB port, WiFi6 etc.

The step one of the project is done i.e., creation of an input form: with the autocomplete functionality and saving the device data in form of YAML, A demo of which can be seen here:

Now, after the completion of step 1, for the next few weeks, we’ll be focusing on working on rendering of device data for device pages.

Looking forward to another half full of learnings and new experiences! 🎉

OpenWrt Device Page – GSoC 2021

Greetings everyone! 🎉

I am Aditi. And this summer I will be working on the project “OpenWrt Device Pages”. In this blog post I’d like to talk a little about me, my project and my first week!

About me

Hey!!👋
I am Aditi Singh, a Computer Science student from India. I have been studying programming since past 3 years.
After a little exploration, finally, out of so many appealing domains, I found the one for me – Web Development.
I’ve been working on web development for past 6 months. In January, I heard about open source from a college senior. The idea of writing hundreds of lines of code which can be used by thousands of people piqued my interest. The best part being people did it just for their love of coding and contributing to something bigger than themselves. So after a little bit of struggling with my impostor syndrome for a while, I gathered up the courage to start contributing to open source.

Open Source can be a little overwhelming to begin with but then it turned out to be an absolutely amazing experience. Never ever before I’ve had such a supportive and encouraging environment.
Later in March I found out about GSoC, and through GSoC came across – Freifunk. After surfing through hundreds of projects OpenWrt device page was that one idea that sounded fascinating to me and was closely related to my domain.

About OpenWrt

The OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable file-system with package management. It allows you to customise the device through the use of packages to suit any application. Hence, freeing it’s users from application selection and configuration provided by the vendor For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customisation, to use the device in ways never envisioned.

About OpenWrt Device Page Project

The main aim of OpenWrt Device Page Project is to create an overview of OpenWrt supported devices to simplify user choice of acquiring new devices. The goal is to evaluate the user needs and plan new device pages based on the user requirements to make it convenient for users to select right devices. Since, OpenWrt has a lot of data it becomes overwhelming for new users to find suitable devices that caters to their needs. So,to simplify the project can be broken down into two major sub-tasks:

  1. Creation of input form from a JSON Schema to simplify the process of adding device metadata to the github repository.
  2. After creation of input form, the second step is to render the device pages with search masks, allowing users to search specifically for devices with certain features like USB port, WiFi6 etc.

The first week of GSoC

After the community bonding period, we have been working on creating atomic tasks for the project along with the mentors with weekly milestones. The first task is to create a pretty input form to store device metadata into a github repository.
We have a basic input form ready from the JSON Schema implemented using React JSON Schema form. The RJSF community has been helpful in providing assistance to desired functionality. Upcoming major tasks include, modifying the input form to allow auto-fill and info button functionalities.

Apart from this I had to get an overview of Jekyll/Hugo functionality, understanding how YAML works to help with the project later on!

It has been quite a learning experience and I am looking forward to achieving more amazing things this summer with Freifunk! 🎉