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:
- Organize some events where people can work on network software- and get to know the software of others.
- Extend netsoftfind with a crawler that can keep the metadata up to date
- 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)
- 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!