A Decade in Review

The ten year journey that brought us Software-Defined Telecom

Dec 31, 2019

As we say goodbye to 2019 and the decade of the twenty-teens, I am amazed at how the landscape has changed in the world of communications and how Software-Defined Telecom has played a role in those changes. Some of the things we are able to do now don't exactly match what I was imagining back then...but the end result is even better. It’s important to take pause at junctures like this and reflect on where we came from and where we are headed.

Back in 2009, FreeSWITCH was only 4 years old (3 to the public since it took us a solid year to build the first working prototype). This was an era where VoIP was a dark art, ridiculed by most, especially the Telecommunications industry. Those of us who came from the early days of VoIP had perfected our witchcraft, conjuring anything we wanted with our fancy C code and Linux servers. Armed with hardware cards that converted telephone circuits into IP, we were able to gateway the old world to an exciting new era in telecommunications where you were not held prisoner by expensive physical hardware or proprietary soft-switches with basic functionality.

SIP was just starting to get adopted by a larger audience, IP phones started to gain functionality and the industry was trying to figure out how they could leverage this at a grander scale. Cisco already had their own hardware-based solutions and were doing quite well at getting the mainstream to accept the idea of phones that plug into network jacks. At this time, networks ran slower and countless SIP devices chattering nonstop actually created some congestion; the noise level and size of SIP often created bottlenecks and even killed the phones, so it took a certain level of engineering to even create a properly function large-scale sip network. This was when I was already daydreaming about something more scalable and more logical than just basic SIP which was a true masters class in academic over-engineering and too many cooks in the kitchen.

On the server-side, we at FreeSWITCH were making great strides in finding ways to scale SIP over a wide area network and create a platform that could move high-density calls as well as to terminate them for software application hosting. We were hitting milestones like saturating an entire 100mb pipe with calls or crashing hardware-based SIP-to-TDM gateways like a lucent TNT max just with a legitimate stream of test calls.

Looking back (it was probably apparent then too) it feels straight out of the Matrix with green and black unintelligible text scrolling on obscure vt100 terminals as FreeSWITCH chirped out its detailed debug logs while performing the tasks it was configured to do. To my team and all the early adopters of FreeSWITCH, it was beautiful poetic music unfurling on the screen but its hardly something a small-to-medium enterprise will want to try to discern and there was clearly a lot of work to be done at communicating with our stack for “the rest of us”

Back then JSON was super new and there were way more tools around XML. Coming from the world of apache, XML seemed like a good compromise between human-readable and machine-parsable. We used XML where it made sense, going back to the inception of FreeSWITCH in 2003, and pioneered a new way of doing call control via XML with our dial plan and http-based real-time integrations. XMPP seemed like an amazing signaling path.

Our friends at Google were working on solving that problem with something called Jingle, a form of signaling over XML-XMPP that would later become what we know today as WebRTC. We created a module for Jingle and in fact, a completely separate library called libdingaling...for lack of a better name. We could already make and take calls over this new fangled network that was previously only usable from a desktop client. This created a whole new fad of terminating Gmail’s free phone service, and Google voice into FreeSWITCH, and doing fun things with all the free calling goodness.

Alas, one of the reasons Google’s offering was free (and still is) was because they could not crack the nut of making it high quality, easy and reliable ( the holy grail in the world of IP communications.) This was when I was already trying to figure out how to rise up from our arcane terminals and make the mainstream see how great Software-Defined Telecom could be.

A new trend started back then to create an IP PBX as a product. This came, of course, from seeing the adoption of Asterisk, the open-source PBX stemming from the late 1990s. Many were racing to create a product by putting Asterisk on some embeddable hardware platform or rackmount server and slapping a classic point and click UI behind it to control some SIP phones.

By the time I was asked to help build a PBX appliance in 2009, FreeSWITCH was much more than a PBX, it was a full-blown soft-switch and application platform purposely built to address all the shortcomings and pain I suffered from trying to build products from other technology stacks. Because of this, making a PBX was not a tough job for us but there was still a lot of detail to go over to make things fool-proof. We created a fully functional phone system out of our technology for Barracuda networks, saving them from the tyranny of existing phone vendors and learning a ton about what it takes to simplify things to a level that makes it as easy as it is powerful.

What I began to dream about back then was, what if we take all the aspects of telecom and convert them into software so it will be possible to horizontally scale endlessly. We have this amazing telephony stack but what else do we need? We have to have a protocol that lets us orchestrate many of them, a network architecture that can quickly expand to match needs and a way to find a true balance of elegance and simplicity while keeping all the power and channeling it to the end-users through the ingenuity of developers and administrators.

I’ve spent nearly the whole time since then working on this problem. Some others in the industry were happy to just take the status quo and see how far that would take them but I suppose that may be a luxury we can’t enjoy. As the source of countless modern RTC services and the most widely deployed open-source soft-switch, we are burdened with a prime directive to keep pushing the technology forward, not just milk it until it dries up. This requires a really good team of professionals all dedicated to this mission and motivated by the desire to do the best with what we have to work with above all else.

It’s amazing that our crazy new ideology that started with 3 people has blossomed into a massive open-source community lead by a company we created from scratch to truly take our technology to the next level by creating tools to allow developers and users alike to create their own telecom network and distribute it anywhere in the world.

SignalWire was only opened to the public in 2018, so it’s a tiny part of this 10-year story, but it is the culmination of all of the experiences that made it possible. Many of the ideas I’ve been working on can finally be realized and we can, at last, add Software-Defined Telecom to the list of ways that digital transformation simplifies business and eliminates the need for heavy expensive ancient physical communications technology.