[asterisk-users] Experience with Vicidial

Matt Florell astmattf at gmail.com
Thu Jul 17 02:23:33 CDT 2008


On 7/17/08, Alex Balashov <abalashov at evaristesys.com> wrote:
> Ein Bielaczyc wrote:
>
>  > I have a small customer looking to update their aged telemarketing
>  > system. I ran across astGUIclient and Vicidial
>  > (http://astguiclient.sourceforge.net/) during a Google search and was
>  > wondering if anyone had any experiences to share, positive or
>  > negative.
>
>
> Well, you do have to realise that you're putting almost anyone who may
>  have had a negative experience with ViciDIAL in the difficult position
>  of effectively slandering it, or at least earning the ire and distaste
>  of many other list members, most certainly including the authors.
>
>  But, that's no reason for self-censorship.  So, with apologies to Matt
>  Florell and others:
>
>  Personally, I've found that ViciDIAL generally works - in a practical,
>  functional, utilitarian sort of sense in which programs work
>  deterministically in accordance with their underlying instructions.
>  I think if you want it to do what most people want it to do more or less
>  out of the box, it's probably a good choice.
>
>  The story is a bit different, however, in the unlikely event that you
>  actually do care about what's under the hood. It proved to be
>  impractical for my intended use because customisation was required, and
>  the code is an absolute nightmare from a developer's perspective.  It is
>  a hodge-podge of naive, inefficient PHP and Perl written with absolutely
>  zero regard for maintainability.  It is impossible to read, has no
>  discernable formatting characteristics, is often obfuscated, poorly
>  spaced, arbitrarily indented, and follows no consistent or useful
>  nomenclature or conventions. It's a lot of spaghetti code, and it does
>  not leave one united with the impression that functional decomposition,
>  abstraction or modularity is valued at all, let alone as a guiding value.
>
>  I suspect many -- although certainly not all -- of limitations to its
>  scalability stem from resource consumption caused by extremely
>  inefficient algorithms, flow control constructs, and serial database
>  interactions that involve repeatedly swapping data in and out of the
>  programmatic layer in high-volume transactions, transforming it, and
>  sending it back to the database.  There also appears to be considerable
>  reliance upon the database as a real-time IPC mechanism--another very
>  deadly anti-pattern.
>
>  Additionally, it has far too many processes, many of whose essence is
>  not clearly or easily understood by the naked eye.  If the code were
>  readable, this wouldn't be so bad.  But as it stands, in addition to the
>  ugly hack that results from retrofitting astguiclient in this fashion,
>  there are plethoric, innumerable Perl / AGI scripts whose coherence can
>  only be depicted with evocations of a Rube Goldberg device.
>
>  So, as long as you are interested only in the superficie, it seems to
>  work pretty well, although I can't comment on the overall stability,
>  bugs too much.  However, if you are interested in development or
>  customisation, you need to run for the hills, because nothing short of a
>  complete, categorical, wholesale from-scratch rewrite -- one with some
>  evidence of method -- is going to untangle the catastrophe that boils
>  under the deck.
>
>  -- Alex

Hello,

No apologies necessary, I think a lot of what you said is mostly true.

To address the points one by one:

The PHP and Perl code is not the prettiest around, and a lot of it is
not commented or formatted as well as it should be. However, I would
disagree that there is absolutely zero regard for maintanability or
readability. As with many other GPL projects out there VICIDIAL is
free to use and modify, and there are many people outside of our
company who have worked with the code to provide patches and added
functionality.

The 50,000+ lines of code were mostly written by me over the course of
5 years, and as we are now having more people working on the code and
we are going through the scripts we are working to make the code
easier to understand. It is important to mention that VICIDIAL is
quite complex and offers a lot of features that add to the complexity
of the code. Many of these features were not even conceived when the
project was started so they were added in in the most efficient manner
that was available. At this point there are over 1000 database fields
across 60+ tables that control how VICIDIAL works.

As for scalability, VICIDIAL scales to hundreds of seats across
multiple Asterisk servers. It can do this because of it's reliance on
the MySQL database that acts as the core of a VICIDIAL system. We
chose to use MySQL instead of a dedicated communications protocol so
that the data could be accessed and used by almost any programming or
user interface, and still remain extremely fault-tolerant and
resistant to issues on any individual system.

As for efficiency, yes there are a lot of small inefficiencies in the
code, but most of the major bottlenecks were removed after changing
many AGI scripts to FastAGI and rewriting several other scripts, which
resulted in a 70-80% reduction in non-Asterisk load on a VICIDIAL
system.

We have been working on the maintainability of the code and reducing
the number of scripts in total, including consolidating dozens of AGI
scripts into just 2 scripts to improve maintainability and
performance.

As for a total rewrite, I don't quite think that is necessary at this
point, although we have completely rewritten entire functions and
modules within the system recently, and we plan to continue doing this
as we keep developing the system. At some point in the future, we will
most likely start working on a new branch of the code to take
advantage of one of the new browser-based scripting languages coming
out recently, Javascript and XMLHTTPRequest are wonderful in some
ways, but are very hard to work with in a complex application like
VICIDIAL and they are not the most efficient solution despite all of
their advantages of client portability and
zero-installation/configuration.

We would love to hear more about the specific issues that you found
working with VICIDIAL, if you could email me back or just post them to
the VICIDIAL forum or Issue Tracker.

Could you tell me what the last version of VICIDIAL that you worked with was?

Thanks,

MATT---



More information about the asterisk-users mailing list