Network Software integration - for programmers

I’d like to start this thread for programmers.

This is so that we can help those who have the time and much of the expertise, but don’t want to spend $5000/year just for software (even though it can really be worth it), to still build reliable networks. (Even though there is https://ucrm.ui.com/ which is good, it is not for programmers who want to change or improve it. At this point if you can’t pay for software, I would recommend you use UCRM to manage your network, if you are going to have anchor tenants or regular customers who must pay monthly.)

This thread is for people who do programming and who want to help make more compatible network software and work on standards for network billing, monitoring, hotspots, support and planning - and to make it easier for different software to work together.

I’d like to share https://dagelf.github.io/netsoftfind/ which was one of the things created with a $5k FIRE grant: https://fireafrica.org/theme/default/files/final-report---libre-router.pdf (https://fireafrica.org/grant)

You can type in “freeradius” or “php” and “FOSS” and find all the FOSS software that uses php and works with freeradius. It’s not complete, but it will just take a week to bring it fairly up to date - and in the process you can learn a lot about how other programs work because you will need to test it and reverse engineer it to an extent. I also want to get the contact details for the leaders of different projects on it, so that they can easily be contacted to discuss ways of integrating their software to other software.

If you can take some time and know of some network software, please add it to the json file and do a pull request.

I have been thinking of ways to improve network software standards and interoperability, and the steps to me seem clear:

  1. Organize some events where people can work on network software- and get to know the software of others.
  2. Extend netsoftfind with a crawler that can keep the metadata up to date
  3. Create a database analyzer that can map similarity of the database fields, and that can be used to build database bridges or translators between the different software so interoperability can be built quicker - and so that whole programs don’t need to be replicated or rebuilt within other projects. (A sort of live-bidirectional-migration if you will)
  4. Look at the whole ecosystem and explore doing an RFC for a possible IETF interoperability standard, that future devices can be extended with - but with a focus on making it as concise and interoperability-focused as possible.

I’m aware of a bunch of efforts - and some of the software listed, are actually “collections of software”, held together with a custom framework - where the 3rd step above was done manually, or is taken care of by a specific package that most of the other packages support. (I don’t think any of the easy free ones are “plug and play” ready yet, but I’m sure they will be shared here at some point.)

The thing is, that, some packages are really well engineered, and duplicating them could take many years - so if they could just be more easily integrated with other packages, a lot of value could be unlocked - Many people do daily / weekly / monthly / yearly recons or migrations or syncs, but a lot of time can be saved not having to maintain two or more separate copies of the relevant operational data if a tighter integration could be built.

Unfortunately, very seldom to people care about other peoples’ code or community, and are all to eager to start from scratch and create “their own” thing, that they understand… while this might solve their problem, and help them learn a lot in the process, it actually makes the problem of bringing communities together harder - many would argue that it is already too hard, and use it as a justification - which is even the more reason that I am following this approach - and I am doing it with very few resources still.

If anybody has ideas, or resouces, or are keen to do regular online (or in person) hackathons, or want to pitch such events for funding to get the right people together, lets put our heads together here!

1 Like

I’m too busy at the service layer to spend much time at the network layer, but if I can lend any previous experience with standards I’m happy to.

I’m surprised there isn’t a standard all of these are implementing? There used to be SNMP but that was ISO stack based, so seriously hard to implement, I’m not sure if there is anything similar these days ?

It might be that rather than getting all the network gear to talk the same standard, you could build a shim library, that library would have a common API, and then provide - hopefully small - pieces of code that communicate to each individual boxes API. This is what we did for the decentralized /P2P storage space, where dweb-transports is a library that shims into IPFS, GUN, WEBTORRENT, WOLK. If someone wanted to do something like this in the network space then anyone wanting could play could just implement the shim for the device they cared about and then use any of the management code you’d written.

I’m saying this with a certain amount of ignorance about these specific devices, I don’t know if there is enough commonality, but I’m guessing that functionality such as “display all connected DHCP devices” and stuff like that is common across all of them.

I’ve had the same problem for the last 15 years :thinking: I do count myself lucky to be able to take some more time to think… but yes, it’s pretty hard.

It’s ridiculous, right!? It’s the exact peer development problem. I mean, if you asked someone from Huawei or Ericsson, they would think we’re delusional, because there are standards - many, and they’re all misnamed, eg. I just read about the “CPRI” (“Common Public Radio Interface”). The problem is that their standards are expensive to implement, and thus out of reach, and impractical, for those who stand to benefit from it the most.

image
Source: https://xkcd.com/927/
More information: https://www.explainxkcd.com/wiki/index.php/927

I guess it’s a bit of an art to not over-engineer it, and to not leave it too open ended either, and to apply it in the right context - there are many to consider… it’s got to be of use, and it’s got to add enough value so that it will gain widespread adoption and create a trajectory towards something more usable.

This is exactly the step 2. I have seen the word “shim” many times, but I never thought about what a “shim” is… so we learn! Thanks!

It’s pretty amazing really - everything is glued together with standards. Literally… you’re raising an important point that is worth clarifying: perhaps the usability or UI needs to be part of the standard, actually, or perhaps we simply need to look for UI or usability standards and apply some of them to our world.

Well, I’m glad I’ve found a space where it looks like this discussion can grow and hopefully flower :partying_face:

UI or usability “standards” are a game the Standards industry uses to extract more money from you, but which noone really pays any attention to !

The word shim comes from a small wedge used to fill a gap, so its the same for code - instead of trying to get each of IPFS, GUN, WEBTORRENT, to talk the same standard, which would require them all to agree to something that might make technical sense but could be tough to get past the business people, you build a small bit of code (usually a 100 - 200 lines and buildable in a day) that converts their API to a common API, and then any code above that (UI, management etc) just has to think about one API. Once we’d done that, WOLK and FLUENCE built their own shims.

1 Like