

Asterisk vs. FreeSWITCH - mindaugas
http://www.anders.com/cms/266
Little dated, but very interesting, especially the comments
======
sophacles
I've been noticing a pattern in the free-software world. Product A becomes a
flagship implementation of something. Sendmail for smtp, Apache for http and
so on. These are early implementors, lots of people get behind the project, a
hundred different paths are taken. In the mean-time there are lots of
experimenting, tweaking, and reworking to the entire suite/stack for that
something, which get rolled into the original implementation. This results in
a giant, lumbering beast of an application. It contains this collective
history of the entire movement. All the abortive bits, blind alleys, weird
idiosyncracies must be kept, because someone, somewhere depends on it.

All the old timers think this is the bee's knees. Everyone else however gets
sick of the giant, and you get exim or nginx, in a hundred varieties that
perform better for certain common (or uncommon) subsets of use. These better
performing "lightweight" versions shed the cruft and are widely adopted by
those who no longer care about say, http servers, and instead just want a
simple strut.

Anyway my point is: is it at all surprising that FreeSWITCH has come in to do
fill the Asterisk role as a voip strut?

~~~
garyrichardson
That is often the case, but have you seen the Asterisk code base? It's amazing
that it compiles, let alone runs for more than 5 minutes.

~~~
sophacles
How is this different than what I said? In my example/metaphor Asterisk is the
crufty lumbering giant..

------
jetsnoc
I'm not surprised.

I've been an Asterisk user, Admin and Coder since 2003 Asterisk's internals
has some issues to be truly concerned about. The MOST concerning part is the
attitude of the community-- it's not longer a fun loving open source community
but more of a "How can I make more money from this?" At least that's my
opinion and experience while trying to hammer out some changes to chan_sip
this last month.

~~~
viraptor
Anyone diving inside the chan_sip is a brave, brave man. My general feeling
from working with asterisk code is that if you ever, in any situation see code
like this:

    
    
        while(pkt->owner->owner && ast_channel_trylock(pkt->owner->owner)) {
          sip_pvt_unlock(pkt->owner);
          usleep(1);
          sip_pvt_lock(pkt->owner);
        }
    

run! Run away and don't look back!

The code basically translates to - "as long as noone freed our important
structure's owner-owner (but someone works on it) unlock our owner for a
split-second so we don't deadlock and pray we don't crash" (if you want to
know why we don't crash, ask oej, because he's the only person who can
actually explain who holds which lock at this point and why the owner won't be
freed - which of course leads to other people making modifications that break
this rule).

------
nas
I'm quite interested in getting into the business of switching local small
businesses from proprietary PBX systems to open VoIP hardware. Anyone got some
tips for getting into the field? I'm a competent programmer and system admin
but my but I have little knowledge of telephony.

BTW, my impression of Asterisk vs Freeswitch matches the article. Asterisk is
pretty ugly in terms of implementation and configuration. However, at this
point Asterisk has much more (still small) traction in the marketplace.

~~~
mindaugas
I'm kind of looking for interesting/fun/profitable(?) ideas... That is why I
submitted this article

Modularity and ability to integrate with almost anything(socket, events, http
etc - that's just a guess) simply fascinated me.

~~~
viraptor
If you want real integration possibilities, look at Yate too. It's got a bit
steeper learning curve, but seeing the whole PBX as lots of completely
independent modules and the core as a message synchronisation engine only is
very refreshing. After having fun with all three solutions, Yate is my
favourite (even if it has a much smaller development group and community
currently - these guys are serious about what they do).

You can also integrate with everything, because the external module interface
is a simple text protocol (no - a sane one - not sip kind of simple). Use php,
perl, bash, python, java, etc. as you want - helper libraries are provided.

