Adhearsion Blog by Jay Phillips

Adhearsion, Ruby, VoIP, Entrepreneurship

What We’re Not Admitting about Asterisk

with 17 comments

It’s time to clear up several restraining misconceptions in the telephony space. These are points I outlined during my presentation at AsteriskTag in Berlin recently, though they bear repeating for everyone’s sake.

This post is not the end of the discussion. Please feel free to leave comments on this post and subscribe to my RSS feed. This post gets a lot off my chest but I’ve a growing list of things to address very soon.

If there’s one thing I want you to understand, it’s this:

Asterisk Has Not Crossed the Chasm Yet.

I’m referring of course to the chasm in the technology adoption curve, best illustrated in the graph above (after which Geoffrey Moore’s book Crossing the Chasm was named).

To those unfamiliar with the concept, it defines five demographics of technological adopters. The first two, innovators and pragmatists (visionaries), give a new technology its first breaks; the bleeding edge is either a passion or a competitive advantage to them. Beyond these demographics exists a chasm which every technology must suffer and overcome to enter the lucrative early majority market.

One fascinating characteristic of technology adoption (which Geoffrey Moore introduces early in his book) is the false sense of security it can create when the rush of enthusiasm comes from the early adopters (left of the chasm). To the company, it’s easy to assume this adoption will continue linearly into eventual ubiquity. This misconception has crushed many a dream when the unsuspecting company ramps up just as their adoption profile plateaus at the chasm. I feel Digium has been caught up in this misconception.

I’m convinced because, in my 2.5 years of trying to make Asterisk better, I keep seeing the same kind of person approach me either online or offline at a conference. Let’s call him Otto. He’s the young, inspired hacker fascinated with the thought of controlling a phone. I was Otto once. He finds documentation, overcomes the installation, gets a “Hello World” working, then stops. Beyond that point Asterisk becomes prohibitively unintuitive and that impression sticks and becomes a reputation.

This quintessential newbie we’re calling Otto can then do two things: leave the community altogether or stick with it and complete a single project or even series of Asterisk projects. My experiences in the open-source telephony space have revealed two observations of mine you should consider:

The average amount of time a developer plays with Asterisk is less than one week.

The developer retention rate of Asterisk is less than 1%.

These observations encompass everyone who has ever considered toying with Asterisk and taken the first step. A first step may be an “apt-get install asterisk”, buying the O’Reilly Asterisk book or even cracking it open online. I’d love for you to prove me wrong on these with real market research. I actually think the median time spent using Asterisk is just one weekend and the retention rate is less than 0.1% when you consider international hackers (like those to whom I spoke in Germany recently). I passionately care about this issue because, for the time being, open-source telephony and Asterisk are virtually synonymous. I want to see the entire ecosystem ramp up their expectations. And I want to help us win this fight for the advancement of technology around the world. That’s really what’s at stake.

The error is not a marketing error. Digium is a multimillion dollar company with a clear image: they make hardware and appliances for the SMB PBX market. This brand extends to the open-source Asterisk software which inherits the reputation and the hardware from this umbrella company. People understand what it is. Otto was already sold when he dove in.

The error here — the reason why Asterisk has not crossed the chasm — is technological.

Digium and its surrounding ecosystem has not engineered a Tipping Point. Specifically, they have not engineered Asterisk to be “sticky” enough to spread like wildfire, a task which should be the core to any open-source umbrella company. After all, open-source’s strongest advantage is its propensity to cause a wildfire effect. Many companies open their source because it’s free help that has an inextricable marketing effect. (I’m loosely citing Malcolm Gladwell’s book The Tipping Point here, another must-read for technologists.)

So what the hell is wrong here? Below I enumerate four more misperceptions that I think are immensely damaging to the Asterisk ecosystem and are preventing Asterisk from becoming “sticky” enough to cross the chasm.

Truth: If You Build an Asterisk System, You’re an Asterisk Developer.

An improper (and more common) way to phrase this sentence would be “If you configure Asterisk, you are an Asterisk user.” Though only a subtle terminology difference, thinking of Asterisk “users” as “developers” opens the door for us to treat them as such.

Geeky internet citizens can likely remember seeing at some point the notorious video of Steve Ballmer running around a Microsoft stage screaming “DEVELOPERS! DEVELOPERS! DEVELOPERS!” Microsoft is starting to understand what has empowered the open-source world to become an unstoppable deus ex machina: it’s about the developers, man! Open-source is a philosophy which places developers at the forefront with the fewest restrictions. And it’s extremely successful! Last year Steve Ballmer said with a straight face “I would love to see all open source innovation happen on top of Windows.” He’s an enemy and, because he understands this principle, he’s an especially dangerous enemy. Microsoft has entered the voice market and is now competing with Digium. And Microsoft’s even doing many things right technologically! We need to react.

We can react by treating users of Asterisk as developers, not system administrators. This is a technological truth that has been glaringly obvious but shamefully ignored. By “developer” I do still mean someone who touches only the “configuration” files which Asterisk provides, not someone who modifies the C code with which Asterisk itself is written. I call these people developers for the following reason.

Truth: When You Write extensions.conf, You Are Writing Software.

To those unfamiliar with the technicalities of Asterisk, extensions.conf is the main “configuration” file in which the dial plan is written — the logic that controls the procedures that occur during calls that go through your Asterisk system.

My stating that extensions.conf is software always gets an amusing reaction from the average Asterisk hacker. It usually goes something like this:

“When you write extensions.conf, you’re writing software.”

“Well, extensions.conf started out as a very simple solution to solve Asterisk’s initially simple problems. It was not designed to be a full-feature programming language.”

“But it’s now a language with functions, control statements, loops, labels, conditions, variables, even macros and subroutines!”

“Yeah, but it’s not a programming language. It wasn’t mean to be.”

I’ve heard this from several people over and over. The Asterisk hacker with whom I’m conversing generally concedes the point after various facial color changes. Let’s at long last admit this, guys: the extensions.conf grammar (and the derived syntactical alternative AEL) are very poorly designed dynamically-typed scripting languages. Someone who modifies this file is called a programmer. The extensions.conf file is what we call software. A .conf file extension should only be used for configuration files. With these (irrefutable) assertions in place, we can start to frame the picture of what the next approach should be.

Our oversight of this subject has had an interesting effect. I’d say the biggest demographic of Asterisk users is the sysadmin type who feels no anxiety toward a “configuration file” but may feel a little anxiety toward modifying a “.c”, “.java”, “.rb” or “.py” file. This distinction between a .conf and “real code” is mostly superficial. I say “mostly” because, when the Asterisk developer must modify a C file which performs the same function as extensions.conf, the distinction is greater because she knows that there are a lot of ways to easily screw up the entire PBX, having disastrous consequences. This is exactly why Asterisk’s monolithic voicemail system has gained a bad reputation: it’s written in C and difficult or dangerous to modify.

When we acknowledge that extensions.conf is a scripting language, one abstracted deeply from the dangers of the machine language paradigm in an attempt to improve productivity, the discussions to “improve the Asterisk developer experience” inevitably conclude that a real scripting language must be used. For today’s and tomorrow’s complex uses of Asterisk, the scripting language in place now completely breaks down on several fronts.

This is not a blog post about Adhearsion, but this is where I have extensive experience on this subject through my years implementing it. When we take the first step and begin developing scripting language support for a telephony platform, I’ve found that what’s also really needed is a framework that further abstracts the legacy Asterisk paradigm into what should be a DRY (Don’t Repeat Yourself!) user experience. The framework can provide a plugin system so people can trade small units of functionality at little risk. The framework can allow better bundling of those applications. The framework can make deployment assumptions. The framework can evolve and provide new framework-level hooks into other disparate technologies that were previous unthought of.

I’m extremely passionate about this subject and can continue extensively on it. Let’s save that for later and continue. Grab my feed if you’re interested.

There’s a Difference Between an “Asterisk Application” and an “Asterisk System”

On this point it seems I diverge completely from the Asterisk status quo. During Mark Spencer’s great keynote at AsteriskTag, he gave a fun list of Asterisk applications as a way of inspiring the community to innovate. The list included about nine Asterisk “applications” such as the Botanicalls project to receive phone calls from your anthropomorphized plants when they’re thirsty, a tongue-in-cheek queue game “application” that makes people waiting in a queue play a game instead of hear music (winners move up in the queue), an application for pilots to get aviation reports from any cell or landline phone. These are all great examples of using Asterisk, but they’re not “applications.”

These are examples of Asterisk “systems.” A non-trivial use of Asterisk (such as these) usually requires many custom shell scripts that adhere your program to other technologies. Frequently they’re tightly coupled to machine-specific assumptions such as the Linux distro choice, use of CURL, directory paths, sip.conf trunk names, extensions.conf context names, hardcoded database information, IP addresses and so forth. This tight coupling prevents easy distribution, therefore no one trades implementations and everyone reinvents the wheel.

These “systems” of interlocked clockwork are required because of the deficiencies in the extensions.conf scripting language. If dial plans were written in a high-level language, there would be no need to shell out to accomplish some small unit of functionality. Everything would be a part of your dial plan software. For this reason, the solution to this tight coupling is for a scripting framework to standardize what’s most commonly done in an abstracted, high-level way. Features that were not thought of are implemented as plugins. Plugins are shared and configured to achieve the desired effect.

I think of an Asterisk application like a desktop application. If I want a call center with a sophisticated, fine-tuned web interface that shows agents prompts with AJAX from a MySQL database, I should be able to go online and click a “Download Now” button somewhere. If I run a skydiving dropzone and want an application to manage the jump schedules with telephone reminders, I should be able to go online and download something pretty close to that. This expectation of “yeah, someone’s probably thought of that — let me go check online” is one that we’ve all grown familiar with in the open-source economy. For desktop software, this expectation of abundance is fundamentally powered by the ease with which desktop applications are distributed. For telephony software, this is completely not the case.

This is also one of my motivations behind Adhearsion’s design. It should be a default expectation of an Adhearsion app that the author wants to eventually distribute it online and help build a greater telephony application community. If they don’t want to, that’s fine, but I shouldn’t stop them.

And if an open-source economy emerges around telephony applications, we’ll begin attracting people who would have never otherwise thought that they could actually use telephony to their advantage. By increasing our reach and relevance, we’ll be engineering a Tipping Point.

Telephony is Too Complicated for Every Hacker to Have a PBX in Their Closet

This is something that Asterisk has little control over. Someone building an experimental personal application inevitably must use one of these two technologies: SIP trunks or a POTS (Plain Old Telephone Service) line with an analog telephony PCI card. There are fundamental problems with both of these approaches unfortunately. I’ll start with SIP trunks.

SIP trunking is a way for any computer to terminate a call onto the Publicly Switched Telephone Network by using a premium service. The VoIP software you’re using (e.g. Asterisk) places a pure-VoIP call to this service using your account credentials. With metadata that comes along with the VoIP call, the service operates the other leg of the call and terminates your packets in a way that can reach any phone in the world.

The problem with SIP trunking is simple economics. The people making the real profits in PSTN termination realize it’s not worth the overhead to deal with small fries who push only 1,000 minutes a month through their service. Instead, they’re looking for three orders of magnitude more usage. Small fries like you and me get service through people who resell the real providers’ services and operate at scale. Most companies you’ll find online for SIP trunking are actually three to six companies downstream from one of the multi-billion dollar companies that are really doing the terminations.

The effect is poor support, poor quality, and poor features. It’s a race to the bottom and the solo telephony hackers lose most.

One thing that’ll definitely work reliably is an analog card (like those that Digium sells) that handles the analog signaling into the landline phone jack on your wall. Unfortunately, these require a considerable financial investment and, by nature, don’t spread like wildfire. One can’t take a wild ride through the world of telephony development for a weekend as just an experiment when one must to drop hundreds of dollars and spend hours configuring Linux kernel modules to get started.

I vent this here because it’s stifling the Tipping Point of open-source VoIP and there is a solution. I’ll mention that in my conclusion.

Most people want something other than a PBX

I’m going to cite another technology book to make my point here: The Long Tail by Chris Anderson.

The Long Tail is a graphical concept which visualizes diverse products in the same market. It’s a fascinating subject and is perfectly applicable to the telephony space. There are certain applications that everyone wants: they form the Big Head. Fixating on this space is the orthodox business model. Then are are thousands of niches in The Long Tail that have legitimate business needs but the demand for a product that fits their needs is much smaller. In the past, production costs made producing for these niches economically infeasible. Now, open-source, VoIP and the World Wide Web has made it possible to not only develop these niche applications on a dime but actually reach the customers as well!

This is where the importance of the application comes back around. The PBX, albeit important, is just one application and the aggregate demand of non-PBX voice apps exceeds the demand for PBXs. Voice is something that’s now universally accessible (thanks to cell phones) and universally understood (everyone understands how to make a phone call). Given the needs of the entire world in this space, it’s a no-brainer that the SMB market is a minority. If you can apply voice to a problem creatively, you can spin straw into gold. Consultants take note.

The Manifest Telephony Destiny

It’s absolutely inevitable that voice applications saturate the Long Tail over time. Thanks to the internet and the fruit it has borne, the niches will become much less ignored. Let me call this the Manifest Telephony Destiny. Just as the pilgrims settled along the east coast of America and dreamed about spreading the country’s borders across all the way to the Pacific Ocean, we’re now the pilgrims who’ve settled on the Big Head of the Long Tail graph peering toward and dreaming about what lies to the right. It’s our Manifest Telephony Destiny to reach across far, far to the right of the graph. If you’re a businessman or businesswoman in voice today, understand this principle and believe it. Talk about it at your next board meeting. It’s coming, there’s money in it, and it’s about to pass you up. Open-source telephony is the enabler and the experts will reap the rewards.

The Bottom Line

Hopefully this post shoos away the aforementioned elephants in the room. We must change these perceptions because they are damaging to the open-source space and, by association, the entire world. I really believe that.

I’ve been thinking very critically about this industry for over a year now with my entrepreneur hat on. Over the past eighteen months I’ve been to over fifteen states and six foreign countries almost entirely on Adhearsion-related business. I’ve talked to many industry visionaries, newbies, respected technologists, entrepreneurs, and the technologically illiterate. This post crystalizes some of the lessons I’ve learned on this amazing journey, but an even more amazing journey awaits in the new company I’ve formed to ameliorate in a fundamental way my many frustrations with this industry.

Here’s what I’ll let out: its name is Adhearsion Inc. and it’s not consulting. We’re currently seeking private funding. If you are or know of investors, send me an email at jay-at-adhearsion-dot-com. We think we know how to turn the industry around.

Stay tuned for more from my mind.  :)

Written by Jay Phillips

August 10th, 2008 at 12:00 am

Posted in Adhearsion, Industry

17 Responses to 'What We’re Not Admitting about Asterisk'

Subscribe to comments with RSS

  1. Hi,

    I’ve been working last year on a VoIP project for my diploma project for school using Asterisk and the Cisco Callmanager.
    Besides other things, we’ve scripted a small Rails contact application using Juggernaut and RAMI. So you could click on your contact, and the PBX originates a call to the person you’ve clicked on. If you had our web-application open you’d have been notified if a new call comes in and some information about the caller would have been displayed.

    Such CTI-apps are really interesting, since you can integrate a whole stuff of other information with it. You might e.g. combine them with your groupware-software and display your appointments of the person who is calling you, or integrate it with word/excel so that you can easily call the person who has written the document if something is ambiguous for you, …

    Unfortunately the whole stuff was actually very painful to implement on Asterisk, especially tracking if a redirect happened and some similar stuff. The whole AMI-notification messages are in my opinion hard to track (at least compared to the Cisco-JTAPI stuff Java-Event-Listeners), especially if you e.g. want to know the callerid of the other person calling you, before you pick up the phone, since the whole notification-events are somewhat channel-centric :/.

    Thus it would be of course really nice if there was some kind of higher level framework which handles all the dirty stuff for you. And of course it would be great sharing applications on top of a framework :).

    On the other side Asterisk is really great when it comes to generating your configuration automatically from e.g. LDAP (e.g. generation for your voicemail-config, …), since they are only text-files and you don’t have to mess around with some kind of SOAP-API like the CCM does. I personally have always loved the idea of having an programmable dialplan in which you can even call scripts from outside via AGI, which can do all sorts of things. Using Ruby and Adhearsion for it instead of this strange scripting language makes the dialplan very readable.

    Besides the configuration and API issues, it would be nice if there was some support for SRTP and SSIP (actually, I think this was recently added?), like other “big” PBXes have.

    Being a hobbyist, I also know the problem with the PBX at home very well. Besides the POTS and SIP access, you might also want to buy a SIP hardphone (for e.g. developing XML-services, which are btw. very cool too :) ), which are also more expensive than regular phones :(. As a result of this (and being a student -> always short on money) I stopped scripting VoIP-applications, as the project ended.

    Kind regards

    Nax

    10 Aug 08 at 10:51 am

  2. Great essay. Configuration/programmability of Asterisk is probably the final straw/barrier for the 99% of developers spending their 1st and last weekend hacking VOIP. The 1st barrier is the almost impenetrable array of terminology and acronyms for telephony newbies.

    A replacement/overlaying framework for Asterisk should consider lowing the barrier to noobs who do not know the terminology. Instead, embrace their ignorance and either permanently hide the terminology and/or teach it to the new ppl as they learn the new framework.

    Similarly, with the aim of nailing the tipping point the new framework can make some assumptions:

    * new user does not have a VOIP handset nor softphone yet (include the latter in the installer)
    * new user does not have a VOIP->PSTN plan (include a simple, international signup site)
    * new user does not have a dedicated Linux box lying around (though it is fun to point to a box on your floor and say ‘that’s where my phone calls go’)
    * new user wants outbound phone calls to work out of the box (”oh, this thing can make phone calls!”)
    * new user wants to receive phone calls (even without a PSTN phone number, perhaps a Skype-like ring-me test service could be provided to all SIP users to reenforce in their minds that their setup is working)
    * new user wants to be able to rejoice and show off their simple setup; bloggers need something to blog about; twitters need to tweet.

    Now you have positive viral messages bringing in new developers.

    Plus you need all the stuff you mentioned above, like plugins/components/systems.

    I’d love to leave the 99% of one-time weekend Asterisk hackers (I think I lasted a couple weeks back in early 2005). But as you said in your essay, the cost of becoming a part-time telephony hacker is too high to ever become a full-time telephony hacker -> developer -> professional industry consultant.

    Dr Nic

    10 Aug 08 at 5:01 pm

  3. I have one word to say for starters: BRAVA!

    I must admit, this article is one of the only articles I’ve read that hits the nail. While the Asterisk “developer” eco system enjoys a prolific number of “developers” as Jay describes them, I believe that the eco system needs to be better granulated.

    I live in Israel, which had turned into a major Asterisk PBX adopter. Israel is about 800Km from one side to the other, and we have over 15 different Asterisk PBX integrators - each one with their own version of FreePBX/TrixBox/PIAF. Apart from these 15 vendors, we over a multitude of would-be Asterisk developers, I usually refer to these as “Extension Jockeys”. I admit the term is slightly insulting, but in my perspective, there is a high difference between one who writes dial-plans and one that develops multi-part Asterisk systems, that interconnect with multiple components.

    The main problem here is when you go about and define the “Extension Jockeys” as “Developers”, your potential market suffers. It suffers because a “Jockey” is bound to do the work of a “Develoer”, when it is clear he has no idea of what to do. For example, I surely don’t expect a Jockey to inter-operate XML-RPC, Daemons and web-services into a single Asterisk application, simply because he usually lacks the knowledge.

    I agree with your description of the “Developer”, but I believe that a better granulation is required.

    Nir Simionovich

    11 Aug 08 at 6:23 am

  4. To some extent, the point of Adhearsion is to make Nir’s distinction moot. The long tail is full of opportunities that do not care about what the network is doing on the back end. Adhearsion opens up things for the innovator and entrepreneur who can hook into an asterisk blackbox and start populating the long tail. There will be plenty of work for high level developers in the big head space, but adhearsion is about getting the thousand flowers blooming.

    Jockey

    11 Aug 08 at 1:46 pm

  5. I agree with what Jay is saying, with 2 reservations:
    1) don’t ignore the administrators - they are a separate group
    from developers and need to be treated as such - think about databases and DBAs.

    2) Web 2.0 is the place where developer energy is. Asterisk needs to capitalize on this, in 2 ways:
    i) we need to adopt a web tools and techniques so web developers will feel at home immediately in asterisk. At the moment Freeswitch is much further ahead in this respect. You can give a web developer a freeswitch project and you will get something back. Try that with asterisk and you will wait a month and most likely get nothing.
    ii) We need to make it easy to integrate telephony apps into web applications. In almost all of the niches the telephony is just an extra medium (possibly not the most important), the primary interface is the web.

    - there - thats my rant!

    steely-glint

    12 Aug 08 at 12:35 am

  6. Brilliant post.

    When I was working with the Callweaver folks I really lobbied for some kind of embedded object oriented language we could use to simplify the “dial plan”. I wanted us to have a library of drop in “dial plans” you could use for your home, small business, or call center. Alas, re-engineering Asterisk is hard enough without adding features and me with no C development skills to speak of.

    The real market for Asterisk right now is where people are creating products of Asterisk as a PBX. They haven’t moved much beyond this. In the future Asterisk or something like it will be the “web Server” of voice applications but the tools are still being refined, just like in the early days of the web with perl-based cgi. Voice recognition and internationalization are challenges that the tools don’t live up to yet.
    I only hope the sad day does not arrive when the .Net extensions and tools for voice are mature are we are all standing around asking what the hell happened? We owned this space!

    Nate Smith

    13 Aug 08 at 11:45 am

  7. Fantastic post. I count myself lucky to be in the 1% that got past the first weekend, albeit just for a 6 month contract.

    Nate - I don’t think M$ will ever take this space, they will always charge for product and there will still be pstn connectivity costs.

    Of course there are alternatives to Asterisk, but only SIP servers. The pstn network will be around for some time yet.

    I wonder if web 2.0, 3.0, 4.0 are the future for Asterisk or if telephony is a different kettle of fish?

    best thing about the post is that it has got me interested in Asterisk and Ruby again…

    Jay Greasley

    13 Aug 08 at 1:31 pm

  8. Recently Jay Phillips of Adhearsion fame sent me
    a blog he’s written about Asterisk and asked me
    to respond to it, which of course I’m happy to
    do. First, I have to say that I met Jay at
    Astricon and was immediately impressed with his
    energy and excitement around Adhearsion. To say
    Jay is an out of box thinker is probably
    something of an understatement, and it is great
    to have people working with Asterisk building the
    types of tools that Jay is developing. Jay and I
    have talked quite a bit with each other on
    subjects regarding Asterisk and Adhearsion, and I
    recall an article on Adhearsion was written
    by Jay on the dock of my weekend place. I hope
    that we can continue this discussion as a
    conversation of ideas regarding how Asterisk can
    continue to evolve, even if we disagree on some
    of the notions that each of us bring to the
    table. While I may not entirely understand some
    of Jay’s issues he outlines in his posting,
    perhaps my comments on some of what I believe
    are his points will help us both better
    understand where improvements or clarifications
    can be made.

    I’m going to try to address Jay’s blog point by
    point, but it’s made complicated by Jay’s having
    mixed so many business metaphors and by leaving
    terms like “market” unspecified or variable.
    Also, Jay, like my mother, seems to have issues
    differentiating between “fact” and “his personal
    opinion”. Much as mom thinks I should like
    salmon because “it’s good”, Jay makes a number of
    assertions which are simply his opinion, but he
    states them as fact. I’ll try to point some of
    these out, and where possible I will try to use
    actual metrics to either support or refute those
    claims, and where not possible, some research
    would be required to be able to support them.
    Lets start with Jay’s largest “one thing” he
    wants us to understand, that “Asterisk Has Not
    Crossed the Chasm Yet”. The first, most
    fundamental problem with trying to address such a
    statement is that Jay hasn’t actually chosen a
    market. It’s much easier to try to decide if the
    “iPhone” has crossed the chasm or not because its
    purpose is generally clear. It’s a phone, and
    the market is consumers. But what exactly *is*
    Asterisk? Most people think of Asterisk as a
    PBX, even though it is a great deal more today.
    Is he saying that it has not crossed the chasm as
    a PBX? Jay is particularly interested in
    Asterisk as a platform underlying his technology
    for developing applications. Is it that Asterisk
    has not crossed the chasm of being the defacto
    development platform of choice for IVR
    applications? For conferencing?

    Jay says he feels like Digium has been caught up
    in the misconception of the growth of the
    visionary market. In reality though, Digium’s
    primary market is not Jay’s market, because
    Digium’s *commercial* focus is primarily on the
    SMB and to some degree Enterprise PBX market –
    almost certainly the largest *single market*
    telecom products that you can build with
    Asterisk. Digium’s *primary* business is not to
    sell to developers like Jay, it’s to sell to
    customers like Joe’s Laundry down the street,
    through resellers and channels that almost all
    fit in the early and late majority category.
    Digium’s work on expanding Switchvox and channels
    clearly indicates that we *clearly* understand
    the importance of that market and precisely *are*
    doing the right things to cross the chasm in the
    PBX market. We understand that the early and
    late majority customers are looking for a PBX
    product that is feature rich, inexpensive and
    easy to use, and that’s precisely what we’re
    building. You’re not going to be able to take
    regular open source Asterisk without any
    packaging and try to take it to your average end
    user. It needs to look, feel and smell like
    something they can actually use, and doing so
    demands the creation of a derivative work focused
    on the market you’re going for, and *that’s* what
    you’re going to cross the chasm with. Jay says
    that Asterisk isn’t sticky because it’s too hard
    for an end user to use — and for many end users
    that may be true, but that’s not the product that
    *should* be bringing them — it’s AsteriskNOW or
    Switchvox or some other, more cooked product,
    that is the right thing if you want a PBX.
    That’s like saying that Chevy 350 small block is
    a lousy product because most people don’t use it.
    It’s not a bad product, it’s just that people
    want cars, not just motors.

    Having said that though, the direct market for
    Asterisk, as a project, is of course not early
    and late majority PBX customers — it’s
    developers who want to build products that
    customers in turn will actually use. I *think*
    this is the “market” that Jay is actually
    addressing with his “Otto” example, and it is a
    market Digium is trying to pursue for Asterisk as
    the benevolent maintainer of the software — not
    as its primary commercial interest (although
    don’t get me wrong, we’re happy to sell our wares
    to developers as well!) Clearly if he was a
    traditional PBX customer without technical
    background, downloading Asterisk and building /
    installing it on his own newly installed Linux is
    not likely the best place for him to start. If
    Otto is a developer, then that’s probably a good
    way for him start (although AsteriskNOW might be
    a little better place to start). Jay calls
    asterisk “prohibitively unintuitive” and if
    you’ve never used Linux or a command line, that
    may be true, but if you’re a developer, you’ve
    configured tons of things before, and something
    like AsteriskGUI can get you off to a running
    start from which you can start fooling around
    with some of the developer technologies, although
    currently the best single source of those tools
    may be Google.

    Jay drives his opinion that “the average amount
    of time a developer plays with Asterisk is less
    than one week” and that “the developer retention
    rate of Asterisk is less than 1%” but in spite of
    being in bold print, these are not statistics but
    merely his opinion. To my knowledge, no one has
    ever really researched this, and I’m uncertain
    even anecdotal evidence of “sticky” numbers of
    developers is significantly different than any
    other major project that sees experimental use by
    the overall OSS developer community. In any
    case, Jay’s premise seems to be that Asterisk is
    simply too difficult for a developer to build
    from. Fortunately for us (and unfortunately for
    his argument), such a premise is largely in
    conflict with reality. For example, lets look
    just at a series of recent projects built at the
    Interactive Telecommunications Program (ITP) at
    New York University:

    * Botanicalls - Your plants call you when they’re
    low on water. Each plant has its own personality
    based on its species. Further development is to
    include other environmental factors.

    * I-PLATE-U - Record and retrieve messages based
    on someones license plate. Heavily uses speech
    recognition to avoid having to type on the
    keyboard

    * Popularity Dialer - Calls you and plays one of
    5 different pre-recorded “half conversations”
    including the “Cousin needs help” call, to help
    you get out of a sticky situation and the
    original “popularity” call where your friend
    calls trying to get you to join your other
    friends, but you decline because you’re on a
    wonderful date.

    * Cause Caller - Automates the process of
    allowing you to call in to politicians in support
    of various political causes.

    * Booty Dialer - Automatically calls each entry
    on your “booty call” list until someone responds
    positively to the interrogatory, at which point
    your phone rings and you are connected with them
    directly, saving lots of time.

    * Canal Street Station - Interactive telephony
    mystery which is played out by calling a toll
    free number from various public pay phones in the
    canal street station

    * Rap Happy - Allows you to use your phone to
    record rap music (presumably other music) via
    your phone.

    Now, obviously these are extremely creative
    applications of Asterisk, but what is perhaps
    most interesting about these is that the ITP
    program is not an engineering program — nor are
    the creators of these applications engineers –
    they’re artists, in the art department. This
    program has taught them to use Asterisk as a
    medium for creating telephonic art, or at least
    taught them how to accomplish telephony tasks
    without having a CS degree or years of
    development and sysadmin experience. Of course
    there are lots of other business examples that
    actually generate revenue, but the point is that
    lots of people make real applications with
    Asterisk today, even in its current form.

    So, do I think there’s no truth to anything Jay
    is suggesting on the API? First of all, like
    Jay, both Digium and myself want to see the
    advancement of the technology worldwide — that’s
    why we invest so heavily in Asterisk. How about
    this for a fact and — the largest single
    engineering team at Digium is the team dedicated
    to Open Source Asterisk development. Certainly I
    agree there are improvements that can be made.
    Asterisk has at least three different ways to
    “program” it, including the manager API, the AGI
    interface and the various extensions languages
    like AEL and LUA. Like Jay says, Asterisk and
    open source telephony are virtually synonymous
    because Asterisk has been around for such a long
    time that it is able to talk to virtually every
    VoIP and TDM telephony technology. It has
    virtually every core traditional telephony
    application (like voicemail, call queues, ivr,
    conferencing, etc) already integrated and has the
    maturity and stability to be relied upon by a
    wide variety of OEMs, enterprises and businesses.
    What Jay, Digium and I all want to do is to make
    those technologies as accessible as possible to
    the widest variety of developers who are going to
    take this core out to new places and create more
    applications that haven’t existed before.

    Jay proceeds to enumerate several specific
    concerns about Asterisk which again I’ll try to
    address. Firstly, he mentions that if you build
    an Asterisk system, you have to be a developer.
    This is no more true of Asterisk than it is of
    Apache or even SSHD for that matter. Each of
    those applications has various configuration
    files that control its behavior. In each case,
    you can either use a graphical interface or you
    can choose to configure the system by manually
    editing the files. That’s a matter of personal
    preference. By Jay’s suggestion, anyone editing
    a config file is a developer. There is probably
    a continuum between developer and user wherein as
    a system becomes more flexible, and more options
    are presented to the end user, their need for
    understanding and abstracting concepts becomes
    higher. This is precisely why Asterisk is a
    product for developers, and products like
    AsteriskNOW or Switchvox are for end users, and
    simply utilize Asterisk as the functionality
    provider. I know Jay is annoyed that
    extensions.conf is Turing equivalent, but hey,
    that’s not how it was intended to be used, and if
    you choose to use that even when there are plenty
    of other, easier to understand, easier to read
    ways of configuring Asterisk, that’s your
    prerogative just like you can choose to write in
    assembly language if you wanted to. Just because
    it’s there doesn’t mean you have to use it that
    way. What extensions.conf *is* useful for is
    listing a bunch of extensions — precisely its
    original purpose. And if you don’t want to use
    it, use the Asterisk GUI. Although Jay describes
    this as “irrefutable” evidence that configuring
    Asterisk makes you a developer, it no more makes
    you a developer to configure Asterisk than it
    does to use the bash command line, which by the
    way is substantially more complex, also is Turing
    complete, and people also use primarily for the
    purpose of simple things (launching applications
    for example) and not sophisticated software
    development.

    Jay also seems to be concerned that Asterisk is
    written in C. One of Asterisk’s core missions is
    to scale and be efficient. Writing in a language
    like C that supports that goal is important to
    allowing these creative apps that live on top of
    Asterisk to be able to scale to the number of
    users that end up wanting to actually use them.
    Yes, programming in C requires you to be careful
    in your programming, but I think it’s worth the
    extra effort to write a good program once to
    allow the end user fantastically better
    scalability in the long run.

    Leveraging Asterisk beyond just being a PBX is
    typically done at different levels depending on
    the sophistication of what is desired. If you’re
    just doing a basic IVR, you can largely do that
    within AEL (or heaven forbid, extensions.conf)
    using many of the applications and variables
    included within Asterisk. Granted, this is
    learning another language, but it’s a language
    very specifically designed for operating within a
    switch, and its efficiency is tremendous because
    it’s so tightly coupled to the operation of the
    system. Beyond the basic IVR’s, people start
    wanting to use a full-fledged general purpose
    programming language. Which language to use,
    however, is clearly not an area of agreement, as
    evidenced by the AGI and AMI bindings for Perl,
    Java, PHP, C, .NET, and many moreŠ and of course
    Adhearsion for Ruby. One important thing that I
    think we can try to do within Asterisk is to make
    primitives that more easily support binding of
    other languages. Jay talks a lot about framework
    – and framework is a great concept — but there
    are lots of languages out there, and they largely
    each have different frameworks and programming
    paradigms about them, and each attract different
    sorts of developers and lend themselves to
    different ideal applications.

    Asterisk, as with most telephony software,
    suffers from misperceptions about goals, and
    there are complaints no matter which side of the
    double-edged sword is being swung. “It’s too
    hard to configure!” is the cry that I hear from
    this post. But equally loud is the group who
    yells “I want to control all the details.” We
    agree that Asterisk is complex; but telephony is
    complex in the details. This is not dissimilar
    to Linux, firewalls, routers, mobile phones,
    Apache, databases, or a host of other complex
    systems which have various and sometimes
    competing layers of control put in place over
    them to simplify adoption and integration.
    It is possible to abstract complex sets of
    primitive elements once you have a full
    collection of those primitive elements. It is
    *not* possible to go the other way around.
    Asterisk (the project) is working towards a
    (more) complete set of basic functionality which
    allows a developer to achieve as many telephony
    tasks as possible, even when some of those tasks
    may be complex to develop if you are creating
    them from scratch. When we say “developer” in
    this instance, it could mean either someone
    directly building an application, or someone
    building an API into another programming
    environment. We are hoping and encouraging
    projects like Adhearsion, FreePBX, the various
    language libraries, and others to create
    abstraction layers and configuration layers on
    top of the Asterisk toolset in order to
    accomplish specific goals which may be far
    outside our ability to comprehensively predict or
    develop. That is what we envision as our path
    towards the “Tipping Point” for application
    developers.

    Jay continues by trying to describe a view of how
    an Asterisk System and an Asterisk Application
    are different. If you get at the core of the
    concern though, it’s that he thinks people build
    Asterisk systems in ways that aren’t the ways he
    wants to do them. He says they’re built the way
    they are because of deficiencies in the
    extensions.conf configuration format. Only
    problem with that logic is that if the
    extensions.conf format was deficient, they would
    obviously have used one of the other wide variety
    of programming techniques available (maybe even
    Adhearsion). If someone chooses to use AEL, or
    even extensions.conf to create an application of
    Asterisk, it is precisely because they *were*
    able to do it with those systems that they chose
    to do so, not because they couldn’t — again,
    having those systems doesn’t take away from your
    ability to use any one of the native languages
    and frameworks that are available for building
    applications on Asterisk. Said another way:
    Don’t complain about what languages people use
    (even if you want to call extensions.conf a
    language). Use what you like best, and let
    people choose what language they want to use!
    There certainly are a lot of them! Asterisk is
    *already* being used as an underlying layer by a
    huge number of abstraction libraries - and we’re
    hoping to continue that trend to make programming
    telephony applications easier by developers in
    their own environments. You don’t need to be a
    dialplan wizard to write applications that use
    Asterisk: “There’s more than one way to do it.”

    Now, another point that Jay makes that I think is
    valid (and one Digium is trying to address) has
    to do with how you install additional features
    and applications in an Asterisk-based
    environment. The Asterisk Marketplace is
    precisely intended to be a place to allow people
    to have applications more readily distributed,
    including through graphical interfaces, to be
    installed not just on Asterisk but on PBX
    products like AsteriskNOW and Switchvox. Sorry
    to be vague on this one; stay tuned.

    To continue on: I think the “The Long Tail”
    illustration cited could not be more perfect. If
    you look at the green portion of the curve, that
    is where Digium’s primary business focus is
    placed, and if you look at the yellow portion,
    that’s where Digium’s primary focus for Asterisk
    is placed. The former is best address by a
    product and a company, and the latter by a
    project (in this case sponsored by a company),
    where we enable lots of small micro-markets that
    can be attacked by a variety of developers
    enabled by technologies like Asterisk either
    directly or through interfaces like Adhearsion
    and others. We actually agree on this point-
    there are more end users (ultimately) on the long
    tail, even though that long tail is very long and
    thin. Asterisk, the project, is doing all it can
    to help with building apps out on that long tail
    by creating a free toolset that developers can
    use to address their infinite niche markets.
    This “long tail” will exist because of tools like
    Asterisk, not the other way around. Digium, the
    company, is creating a set of products based on
    or around Asterisk that address the head of the
    market, which by far is the largest single niche
    in the diagram by far. One end of the diagram
    supports the other - the products that Digium
    creates around the largest and leftmost portion
    of the curve creates and supports the tools that
    will enable the proliferation of independent
    applications that fill the “tail” on the right.

    After reviewing this article a few times, I am
    more unclear on what the issues are that Jay is
    actually raising. This perhaps is due to my own
    myopia when looking closely at Asterisk and also
    having a pre-conceived notion of what I feel are
    the shortcomings of the project today. As a
    possible continuance of this discussion, perhaps
    a succinct list of problem statements would help
    me in refocusing what we need to do to solve what
    are obviously to Jay issues of concern.
    Certainly I wouldn’t claim Asterisk is perfect,
    but the developers in the community and within
    Digium are interested in hearing the things that
    are necessary, and then as they are needed, the
    code can be written to fit the solution. I
    appreciate that the requirements are changing as
    Asterisk becomes more mature - we’ll try to stay
    on or ahead of the curve based on the
    perceptions, requests, and most importantly, the
    work and contributions of the community.

    Reading between the lines in this post, it’s
    clear that Jay has what he believes is a great
    idea with Adhearsion. I don’t disagree - it’s a
    very neat solution for people working with Ruby
    On Rails, and simplifies life for developers in
    that particular arena. Perhaps working so
    closely with high-level abstractions makes the
    details of telephony a chore - this is
    understandable, but I believe that additional
    tools have been and will be built that allow us
    to cross “the chasm” for both developers and end
    users - I think we’re crossing that chasm
    already. Perhaps after waiting a few months it
    will be the case that Jay’s company will
    announce a more commercial solution to the set of
    problems he ambiguously identifies today; if so,
    I would caution him not to become myopic in his
    own way when identifying the uniqueness of his
    own solution and how it resolves perceived
    shortcomings of Asterisk. We’re happy to see
    more interest building around the Asterisk
    ecosystem, and we hope to help Adhearsion and
    other firms build on Asterisk as the engine for
    their telephony applications.

    In summary, I’d say that Jay and I share the same
    goal of making Asterisk a more accessible
    technology both for developers and for end users,
    and I’ve invited his participation in the future
    of Asterisk at the next Astricon 2008 (and
    subsequent developer meeting), which he has
    eagerly accepted to particpate in! I look
    forward as always to working with him.

    Mark

    Mark Spencer

    13 Aug 08 at 10:02 pm

  9. Astricon Cage Match: Jay and Mark mano-a-mano! Get your tickets now!!

    Hey, both of you guys are heros of mine so I’m not taking sides. You guys are looking at different parts of the elephant. Asterisk is great at what it does, but it’s not all about Asterisk. The internet runs on Apache, but there’s little point in making Ajax a module for Apache. If you do, you end up with things like Booty Call as an example of what you can do. That’s fun, but it doesn’t pay the rent. Asterisk can pay the rent in the SMB world, Adhearion can pay the rent in the ‘creative class’ world.

    Don’t go all Vista with Asterisk - make it a rock solid back end without bloat that is easy to hook into for development with independent tools. And don’t piss on Asterisk for not being the perfect solution for things it isn’t trying to do.

    Jockey

    14 Aug 08 at 7:57 am

  10. Go compare Freeswitch to Asterisk. Much better design.

    Jason

    14 Aug 08 at 2:39 pm

  11. Bundling up something terribly complex into something simple to work with is everyone’s goal I think. It looks like we have identified the problem so it’s time to work on the solution.

    anthm

    15 Aug 08 at 2:08 pm

  12. I highly recommend FreeSWITCH to everyone that is interested in VoIP and applications.

    You can do nice things like calling scripts from the extensions in the XML dialplan, there is also YAML support through mod_yaml.

    There is also socket support (mod_event_socket), xml-rpc, I believe they are also working on JSON/REST support for writing web apps on top of it.

    You can also abstract the low level functionality into a high level fashion using scripting languages or XML/YAML, etc.

    FS rocks.

    Diego Viola

    16 Aug 08 at 10:11 pm

  13. Thank you for the good read and the subsequent comments, specially of Mark’s. We don’t get to read him much these days. My work on Asterisk has been largely on conferencing integration and remote monitoring of non commercial, non public projects. The good thing about Asterisk is that once you start working with it, it does not let you stop. As Mark mentioned, there are many things that you could do with Asterisk. I feel sorry for Otto because he is not willing to go beyond the fence. Perhaps it is because lack of people to guide people like Otto and inspire them. I hate writing unless it is really needed but you and Mark got me writing something at 2:00 AM while waiting to get somewhere. I call that inspiration (You getting me to write!). Hope your article and the comments will open some eyes and and make some Ottos see Asterisk for what it is.

    Ravenii

    19 Aug 08 at 2:36 am

  14. I also read your not meant to be published post (Sorry my reader, newsgator picked it up). That is even better!

    Ravenii

    19 Aug 08 at 2:55 am

  15. How to get more Asterisk developers?
    Here is a solution: make it easy for web hosting companies to host PBX applications as it is easy to host web applications.

    The phone model is different from the Internet model from a business point of view: you can get money from every “page hit”. So hosting PBX applications can be a good businness. And if you make it easy for web developpers to integrate a phone (audio) interface into their web application you will give them an additional way to make money.

    So we need easy Asterisk hosting and framework integration with web applications !

    Olivier Mengué

    19 Aug 08 at 10:28 am

  16. If I may paraphrase :

    What you’re saying is that Asterisk is the sendmail of telephony.

    For those who don’t understand - sendmail comes with a legendarily complex config file, and sendmail’s developers also completely missed the point that they were asking their users to be programmers, and not just that, but to program in a terrible language.

    Noel Grandin

    19 Aug 08 at 11:21 pm

  17. The problem with Asterisk, is Asterisk itself. There’s just so many things wrong with it, it just can’t be salvaged, it’s design is flawed all the way to the core.

    Callweaver has attempted to improve the situation by replacing a number of the key flawed components with either implementations leveraging some other solid open source project, or by rewriting when necessary. This helps a lot, but at the core, it’s still the same flawed Asterisk design.

    I have a number of both Asterisk and Callweaver deployments under my belt, and certainly a few years ago, Asterisk was the only option. I have no regrets having used it, it has allowed me to do things in telephony I had never imagined would have been possible a decade ago. In fact, I would have probably never got involved in telephony had it not been for Asterisk. It has served it’s purpose and served it while (despite all it’s flaws).

    However, for now, the future of IP telephony in my opinion, no longer lies with Asterisk or it’s derivatives. FreeSWITCH is the future.

    FreeSWITCH is a younger project obviously, and hence there’s a few things that might be easy to do in Asterisk, yet a little bit more cumbersome than one would want in FS, but there’s so many things that FS does better than Asterisk, it blows my mind. In addition, there’s so many things that you can do with FS that you’ll never be able to do with Asterisk (at least not in any way as clean and elegant, and without having to write a C module). FS is well designed and it doesn’t get in the way. It really is a pleasure to use and so powerful at the same time. It’s also fairly well documented (by the project itself).

    That said, you pretty much need to be a programmer to make good use of FS. Certain things that could be done in Asterisk in extensions.[conf|ael] are going to require writing a few lines of code (and I mean, Javascript, Perl, Python, or one of the other languages FS has some support for), but that’s actually part of the beauty of FS. Other things that required a convoluted mess to achieve in Asterisk are often achievable in some simple, clean and elegant way in FS.

    That said, FS, due it’s design will certainly yield some PBX projects built on top of it that will have a much better chance at offering a friendly, yet powerful PBX offering. Things LaTeX on top of TeX if you will.

    Yves

    24 Aug 08 at 4:14 pm

Leave a Reply