Google Summer of Code 2020 Idea List

Do you want to apply with us? We have a page that describes how to increase your chances of success. Please read it carefully.

Read our GSoC Quick Start!

General suggestions and warnings

Merge OpenWISP django modules

Languages & technologies used: python, django.

OpenWISP 2 is composed of several python packages, some of which are decoupled from the rest of OpenWISP, this has been done for good reasons which are described in the following section of our documentation: OpenWISP values: software reusability means long term sustainability .

After some years in which OpenWISP 2 has been deployed and maintained we came to the conclusion that in some cases we went a bit too far with this practice, which has resulted counterproductive in some cases because it increases maintenance overhead and complexity.

The goal of this project idea is to merge some modules which perform identical operations (although with some distinction) in order to bring down the complexity of OpenWISP, hence lowering maintenance costs while keeping the extensibility and reusability of these key modules.

These modules are:

Each of this pair performs the same function, the package prefixed with "openwisp-", for example "openwisp-ipam" extends a base package (in the case of this example it's django-ipam) and adds features that are specific to OpenWISP, like multitenancy (different organization using the same application without interfering with one another).

This separation over time is brought more complexity than advantages to the project, so it's now time to put a stop to it. We just have to make sure each OpenWISP module is still extensible and reusable so other developers can use it as a base for their custom applications.

Measurable outcomes:

Improving OpenWISP Monitoring towards its first release

Languages & technologies used: python, django, timeseries DB, javascript.

The monitoring module of OpenWISP has not yet been released officially, but unreleased version is available in a repository, the goal of this project idea is to bring important improvements to that unreleased module in order to arrive to a first release and include openwisp-monitoring in the OpenWISP ecosystem.

Measurable outcomes:

OpenWISP Notifications Module

Languages & technologies used: python, django, javascript.

This project idea consists of extracting the notification module currently implemented in the alpha openwisp-monitoring so that it lives on its own and can be more easily integrated with other openwisp modules.

Measurable outcomes:

Netengine: pull monitoring info from network devices

Languages & technologies used: python, NetJSON, SNMP, HTTP, OpenWRT, Linux.

Netengine is a python library that aims to provide a single API to extract common information from network devices using different protocols (eg: SNMP, SSH, HTTP) and different firwmares (eg: OpenWRT, AirOS).

The library kinda worked but was not brought to production level work and since OpenWISP 2 is going to have a monitoring system soon, wa want to rewrite this library to bring its implementation to production level.

NOTE: backward compatibility does not have to be maintained we can freely change and improve the API and internal structure of the library if we think the change is going to improve the quality of the implementation.

WARNING: to work on this project you need an AirOS device; OpenWRT can be installed in a virtual box VM, but AirOS cannot (at least not as easily). If you don't have an AirOS device compatible with the latest version and you do not indend to buy one you cannot work on this project.
If it ever happens that you get accepted but you fail to buy an AirOS device, you will be failed.

Measurable outcomes:

NOTE: this is one of those projects that sounds easy but is not.

Apply with us

Do you want to apply with us? We have a page that describes how to increase your chances of success. Please read it carefully.

Get started!