It used to be the wild west but FCC is tightening up (maybe even going too far, we'll see). STIR/SHAKEN and KYC (know your customer) rules are making it more expensive for providers to allow any traffic over their networks. Shady providers would look the other way at spammers pumping traffic (providers getting paid); shady providers mix legitimate traffic in so upstream carriers can't just block them, etc.
Now, there's more regulatory teeth to go after the shady providers allowing this traffic.
I know FreeSWITCH and Kamailio both have WebRTC connections available, so if you use a SIP client in the browser over WebRTC to the server, you can plug into telephony networks on the server side.
We use Kamailio's WebRTC implementation heavily in Kazoo along with our libwebphone client. The transport is abstracted so Kazoo deals with the device and its configs; the Kamailio instance the browser connects to does the TLS termination for WebRTC. FreeSWITCH has the smarts for the SDP DTLS bits. And it all just works real nice together.
Curious how the Erlang->C++ progress is going? I asked a bit over a year about it (which I think prompted the pre-emptive note :) ); obviously not owed an explanation but perhaps you can get a quick update on whether the migrations are more painful than expected, or the scope of changes in-/decreased, etc?
We've used RabbitMQ since 2010 in KAZOO. I would argue, save one or two instances in the intervening 10 years, that RabbitMQ is the most stable piece of the infrastructure. I think it might be the only open-source project we build on that we haven't committed upstream to because we haven't encountered any issues in our usage.
The Regrarians [0] is another avenue to explore - I find Darren a bit more grounded in science than your average "permie" and appreciate the work he's doing, integrating holistic systems design (see Savory Institute), permaculture, and Yeoman's keyline design work. It seems more of a toolbox approach vs what can feel like "doctrine" at times from permaculture. Perhaps more suitable to larger farming operations than backyard gardens but still worth reading, I think.
Kazoo [0] offers this as a config option on devices (which can represent SIP desk phones, soft phones, WebRTC endpoints, or call-forwarded cell phones): call_forward.require_keypress [1] There's a lot of re-inventing of telecom wheels required (if even possible) with TwiML (and clones).
We have a fair bit of property tests in KAZOO now, using PropEr[0], an open source implementation in Erlang.
Fred (of Learn You Some Erlang) wrote a great book/site[1] on property testing in Erlang and Elixir, well worth the price of the book.
I find property testing is a muscle; the more time I can spend writing them, the "better" I get at writing useful tests. But the muscle atrophies quickly for me, so having the existing tests helps speed up getting into the mindset again.
I think the model checking (proper_statem in the PropEr code) is the real winner though. We can model a part of our system, write state transitions and then test those against both the model and a running system and compare our results. Any discrepancy points to either the model or the system being wrong (which is its own joy/pain to figure out).
We're happily plugging along on KAZOO [0] since 2010 at 2600Hz. Erlang is a force-multiplier for us. Approaching 300K LOC and ~10 Erlang engineers (depends if Karl is writing code or CTO-ing that day) today.
Nikola[0] has an orgmode plugin[1] that works fine for my blog. After I write something up, nikola builds the site (incremental build), I can view it locally to verify the rendering, and finally rsync the changes up to the web server.
I have a simple script that receives github webhooks on PR merges to master that fetches the latest version of master and builds the site. So from PR merge to the docs site being updated is now seconds of time.
We also integrated building the doc sites into our CI process so PRs will fail if they would cause mkdocs to fail to build the site (borked yaml, make sure docs are included in the yaml, other things).
This has been a boon for our community of users and developers. Coupled with our AST parsers that look for code changes that require doc changes, we're getting better about alerting developers of the need to document something, and reviewers of the need if the developer forgot. Not a panacea but has significantly improved doc coverage for Kazoo which has a broad set of APIs available to different types of users.