My name is Marcos Gutierrez, I am from Argentina and this year I participate in the GSoC 2017 in Freifunk. My main task is to incorporate LuCI2 into LibreMesh and to adapt or rewrite the modules that are currently used.
LuCI2 – UI
In my first approach to LuCI2 I realize that there is much more to do than it seemed. The development of Luci2 is still looking for a more stable path, there are good ideas, but a resolution, to my understanding, is incomplete. Only the base UI build weighs 1.4MB, this far exceeds what LibreMesh requires. So I should explore some alternatives to drastically reduce the size.
LuCI2 – UBUS
It seems to me the right choice to interact with UBUS through an API rest avoiding the rendering of LuCI2 on the router. For now the interaction with the frontend is programmed as an AngularJS service, but it could be abstracted from the Framework, published as a separate package, strengthening the possibility of using lighter or updated Frameworks.
AngularJS, Gulp, Bootstrap, Icons….
The development of Javascript in the last years has a difficult rhythm to follow, and more than everything to maintain. Decisions about which frameworks to use may be correct at the beginning of development and look outdated when a stable release is published. This happened to LuCI2, the solution is to modularize as much as possible to make small parts reusable, agnostic and maintainable. This way, versions developed on different frameworks can coexist, mobile applications, even command line. In addition, most web libraries are not designed to take up little space. In the context of embedded devices it is problematic to choose libraries developed for the web only because they are the most popular.
Roadmap
- Make the core elements of LuCI2 modular and abstract from the web framework.
- Look for alternatives to AngularJS that better fit the limitations of the routers.
- Try to implement retrocompatibility with the modules already developed
- Document the necessary changes to migrate components.