[lime] GSoC

Delete this message

Reply to this message
Author: Ilario
Date:  
To: LibreMesh. org project mailing list
CC: Henrique, Nemael, Hiure, Bruno
Subject: [lime] GSoC
Dear all,
This year we got 2 (!!!) projects funded for Google Summer of Code (GSoC)!
You can see the full list of projects accepted for Freifunk organization (Freifunk allows us to participate with them) here:

https://summerofcode.withgoogle.com/programs/2024/organizations/freifunk

The official coding period starts on the 27th of May.

I will list here the students and the mentors, but please introduce yourselves!
The "students" are:

Henrique for creating a Pirania release compatible with the next LibreMesh release (Pirania is a special kind of captive portal, Hiure can you add details on this project?).

Nemael for implementing a detection mechanism for the configuration of ethernet ports: the router should realize that an ethernet port has been plugged to some other kind of device, and configure the ethernet port accordingly (Gio can you add details on this project?).

The official mentors are:
Hiure, Bruno, and myself.
BUT we really need the help of the community in order to do a decent mentoring work.

I start shooting some random info, please people add stuff.

First thing I would suggest, is to fork the lime-packages repository to your git account (Github if you use it, or anything else), specifically I would suggest working on top of the 2024.1 branch, which is the one for the next release (and has been tested at least by Pony and Hiure).

Then I would recommend the "students" to start playing with this pull request, which is from a past GSoC:

https://github.com/libremesh/lime-packages/pull/938

here you can find instructions about how to run LibreMesh in a virtualized environment.
As you can see, the pull request has not been merged yet, as there are some unresolved comments. Feel free to contribute your patches there, if you like.

Then I would suggest compiling the 2024.1-rc1 release candidate code in two (theee?) ways:

with the ImageBuilder (with or without Docker, up to you) following these instructions:

https://github.com/libremesh/lime-packages/blob/master/README.md#using-the-imagebuilder-1

and with the BuildRoot following these instructions adapting them for OpenWrt 23.05.3 and LibreMesh 2024.1-rc1 tag or 2024.1 branch:

http://libremesh.org/development.html#compiling_libremesh_from_source_code

The firmware images that you create these ways, you can run also in the virtual environment as described in the pull request above. Especially the BuildRoot allows you to compile your code and try it. But you can also edit the code on a running router (most of LibreMesh packages are written in interpreted languages, like Lua or Bash, so you can simply SSH into the router and modify the files. If you mess up too much, the reset button can reset all the changes taking the router back to the code present in the flashed firmware image), try both ways :)

At some point, you will surely need two-three physical routers.
I am not updated on which are currently the affordable and supported ones.
Anyone, suggestions?
Also, you can ask in the GSoC Freifunk chat for students...
Some models, mostly old, are mentioned here:

http://libremesh.org/docs/hardware/

If you go for the Xiaomi Mi router 4a Gigabit Edition, beware that the latest ones are shipped with a firmware that cannot be replaced.
If I remember correctly, Cudy WR1300 was a good option but 5GHz radio had some problems with OpenWrt 23, not sure.
Make sure to check the report from Pony, where there is also a list of routers:

https://lists.autistici.org/message/20240224.195742.4837407c.en.html

I would dare to say that we should work on DSA-supported routers. DSA is a "recent" thing for managing the hardware switch inside the routers, it is a kernel thing that replaces swconfig that was made by OpenWrt people, from what I understood. You can see if your router is using DSA running this command:

https://github.com/libremesh/lime-packages/blob/cc6af1119bd72d9eea91845046d5aafc1d6b716d/packages/lime-system/files/usr/lib/lua/lime/utils.lua#L598

In order to know that before buying the router, you can check if the target (the classification that OpenWrt does of rouers according to their CPU, please correct me if something is wrong) is mentiones as ported to DSA in the release notes of OpenWrt 21, 22 or 23:

https://openwrt.org/releases/21.02/notes-21.02.0#initial_dsa_support

https://openwrt.org/releases/22.03/notes-22.03.0#more_targets_converted_to_dsa

https://openwrt.org/releases/23.05/notes-23.05.0#highlights_of_device_support

BUT, plenty of communities still use ath9k routers (target ath79) that have not yet been supported by DSA in OpenWrt... So maybe we could also try to support those...?

Ciao!
Ilario