I’ve been following the expansion of our network-profiles repo and I keep growing a stronger and stronger idea that it’s becoming harder and harder to understand which of the various configs works best.

LiMe has the amazing goal to help automate and standardize all of the best-practices for mesh networking out of the box, and yet the defaults don’t seem to work at their best. The default network-profiles/libremesh/default profile still uses adhoc, the ath10k workarounds still need to be stolen from the quintanalibre profile, and I only learned about the babel flavor from the MieresLliure profile.

Furthermore I still believe that running a diff of the entire lime-defaults file between profiles is cumbersome, and I believe one should be able to override a single setting [like the wpa2-psk setting for the APNAME network] without needing to copy-paste the entire lime-defaults file, and changing that single setting, especially so that in the future, when the default lime-defaults gets better, all profiles inherit the new changes while only maintaining the specific overrides they have applied. Also sometimes I see settings applied in uci-defaults rather than in lime-defaults, and that too is confusing.

This is in addition to the fact that there are of course several dev branches on the lime-sdk repo, which further complicates things, but it is necessary as we all know to make things move forward.

I think we should be adopting a “master profile” approach where the default is the best option out there. Say MieresLliure tries out babel and that works out better than bmx6, we implement that into default, and everyone can benefit, making that the new default. Say instead that an A/B test reveals bmx7 works better, we pull that and make that the default. We’ve made 802.11s the new default some time back, but still loads of profiles out there use adhoc.

I’m saying that too much of the config is profile-specific, whereby I think a profile should literally only have customizations inside, like the name of the community or of the public network name. And yes of course we should still be able to force bmx7 the default, but only for dev purposes, run a public test [A/B or whatever], gather data in a scientific way, and determine publicly which of the results should be pulled and made the default, thereby pushing the new config to all existing profiles [because - for example - the openNET.io profile won’t have a long lime-defaults file specifying bmx6 or babel, it’ll simply say “make the public network called openNET.io and password Aurora42+”, and nothing else, unless explicitly specified].

This would allow for a much lower fragmentation [think of it kind of like project treble in the android world].

I love LiMe and strongly believe that a highly consistent and lightweight customization will avoid the apparently inevitable fragmented and confusing future several open projects out there suffer from.

Let me know what you think