Several factors came together to build enough motivation to start this project:
- The ease-of-use discussions we have been having with the Village Telco project. Just how easy can we make Asterisk to set up?
- In particular the 10-click-install meme in this Village Telco blog post.
- Making the IP0X embedded Asterisk products easier to use. Asterisk is really really hard for people who don’t know Asterisk. Even with the current batch of Asterisk Now based GUIs on the IP0X they are way harder to set up than say a router, especially if you don’t know Asterisk already. The promise of the easy to use Asterisk “appliance” hasn’t been delivered.
I also wanted to play with some ideas like:
- Lower the technical bar as far as possible. Can my wife and kids set up an Asterisk based phone system?
- Pre-configure everything in the name of swift set-up. In the current version on Mini Asterisk you can’t even choose the extension number of your phone – it’s pre-configured. For new users too many choices can be a bad thing.
- For more advanced features allow and encourage access to the conf files. Many of the problems with Asterisk GUIs occur because they try to control every Asterisk feature available. This leads to zillion-option GUI screens that are overwhelming for newbies, and problems when the conf files and the GUI don’t play together. Instead I have tried to make a really simple GUI that has very basic features. For anything advanced then edit the conf files (which the more advanced users probably know anyway). The GUI has been carefully written to play nicely with conf files, mixing the GUI and direct conf file editing is encouraged.
- The Asterisk programming model is ignored by Mini Asterisk. There is no mention of dial plans, or Zap/1 or other arcane knowledge. Instead we talk of Phones and Phone Lines.
In an ideal world I would have used something like FreePBX but that is just a bit too heavy to run on an IP0X. I tried a Blackfin FreePBX port a few years ago with some success but it hasn’t progressed since then.
For Mini-Asterisk I started out trying to use the built in Asterisk AJAX/Astman system but after a few days got stuck when multiple events were being returned for one call. So I wimped out and used plain old CGI technology. Yep, a bunch of shell script, HTML, and just a little Perl for grokking conf files. I actually enjoyed writing a web app using shell script. Sick and twisted I know. Much to my surprise I could build GUI screens really quickly using shell script. Performance isn’t an issue, as it’s only single user.
The only time I got stuck was when I had to come up with a regular expression. This is like coding in Klingon, so I would spend 30 minutes on the command line pressing up-arrow, mess with a few characters, up-arrow try again etc. But strangely rewarding when they finally work.
Is this a worthwhile addition to the Asterisk space or I am wasting my time? Not sure, but I’ll be shipping Mini Asterisk on the IP0X from now on so lets see how it goes. It also runs on x86 for those people who want a simple, lightweight GUI to run a few IP phones and make a few VOIP calls without installing an ISO. Please give Mini Asterisk a try and tell me what you think.