Introducing v1 of Dana - The Stream Gatekeeper
Introducing v1 of Dana. Dana took it's name from a film with many streams in it; Ghostbusters. You should know that Dana is the Gatekeeper so it only feels right to name the project Dana - The Gatekeeper of Streams, or Dana - TSG for short.
The story behind Dana started at AstriDevCon 2017; the Asterisk team open sourced a project called Cyber Mega Phone 2K. It's a barebones app that has a HTML file, a JavaScript file and that's it. It seems pretty simple and barebones but it's also pretty complex and difficult to follow but it does serve a purpose. That purpose is to enable developers to get started with Asterisk's internal SFU released in Asterisk 15. The Asterisk team are the first ones to say that they're not web developers and let's just say Cyber Mega Phone made my eyes bleed.
This year, the gauntlet was thrown down to the "web developer" in the room to do a better job so that no-one needed to pull their eyes out of their sockets any longer. Dana is far from finished but ultimately it's a demo project using modern JavaScript standards and its at a decent enough level to release it to you lot - the Asterisk Development community. It uses React, it's setup using node and yarn and it utilised the create-react-app project to get started so by default it enables you to write your app the way we now write front-end apps - splitting up code into different files, bundling them up and all of the other goodness you get from writing for the Modern Web.
Dana supports screen sharing, device selection, previewing the chosen device before joining a room and of course accessing Asterisk's SFU via simulcast via Unified Plan only (Dana has no support for Plan B as both Firefox & Chrome use Unified now). It will soon support basic chat functionality as well as live transcription by using Asterisk's new External Media API. Internally Dana utilises JsSIP as the library that helps with the signaling between the browser and Asterisk. Dana also uses the Material-UI framework to enable a pretty nice looking app with almost no styling on my behalf.
Lastly, why did I build something new and not just enhance Cyber Mega Phone 2K? It's a good question and I did think about asking the Asterisk dev team if I could do just that but I do believe Cyber Mega Phone has it's place. React isn't the only way to go in Web Development, far from it; and so I believe Cyber Mega Phone should remain as that bare bones app - even though it looks horrendous.
You can go use it today. Expect bugs, expect certain things to not have any error checking around it. Find a bug - make sure it's not already reported and make an issue on the github repo :) Even better, fork the repo and then make a PR back with a fix.
You can use Dana with your own Asterisk at https://dana.nimbleape.xyz/
Dana also supports Dark/Light mode CSS theme changes - which is pretty damn nice.
More features/bug fixes will come in the coming weeks around the consulting work that pays the bills :) Enjoy!