January 1, 2002

This year in GNU Bayonne

Author: JT Smith

See http://www.gnu.org/software/bayonne for general information.

1. What happened this past year
2. GNU Bayonne 1.0 Introduction
3. What will Bayonne 1.0 have?
4. What has been dropped in 1.0?
5. What are Olorin and Babylon?
6. GNU Bayonne events in 2002
7. What is next

What happened this past year

Actually quite a bit happened this past year. We went thru two major
releases and with the help of OSDL and others we were finally able to
deliver high density digital telephony services thru GNU Bayonne using
Dialogic hardware.

To make GNU Bayonne more widely used, we had help from Kai
Germaschewski
who did some excellent work getting CAPI 2.0 support to work for
European
ISDN users.

One of the big changes in GNU Bayonne this year had been development of
XML services. These are being carried forward to their logical
conclusion
in the 1.0 release, but we are getting ahead here.

At the start of the year we received the "Best new Enterprise
Application"
award from the Singapore Linux Conference. We have been trying to
live up to this award all year long!

This year I also had been serving as the communities elected
representative to the International Softswitch Consortium. This
actually
involved a bit of travel and resulted in some interesting contacts. It
also perhaps most profoundly effected my decision to finally introduce
as
free software a softswitch application server, Olorin, to compliment
the
GNUCOMM softswitch effort.

Perhaps one of the most interesting and useful things to happen for GNU
Bayonne has been it's acceptance as a project in OSDL. This has
provided
us with access to enterprise and carrier level hardware to develop and
test GNU Bayonne. This facility has been used somewhat minimally so
far
this year, especially since soon after it's availability late this year
I
had marched off to work on Bayonne 1.0, but I expect to see much
greater
use of it occur during the next year.

The most important development however has been the increasing
commercial
acceptance of GNU Bayonne. This perhaps is represented in part by it's
acceptance in OSDL, but also in the use of GNU Bayonne in e-government
by
the State of Maine and similar commercial venues, and by the
demonstration
of a Bayonne based unified messaging product at Linux World in San
Francisco.

However, all these things have been overshadowed by events in December,
leading to the introduction of GNU Bayonne 1.0, and the first
acceptance
of Bayonne by a commercial carrier to deliver various dialtone services
starting next year.

GNU Bayonne 1.0 Introduction

During early 2002 we will be introducing the 1.0 release of GNU
Bayonne.
This release and the ones that will be immediately prior have been
drawn
from an entirely new code base that was created starting in December.
This new code base is used to generate Bayonne, Olorin, and Babylon,
from
a single source package.

The plan for release of GNU Bayonne 1.0 will start with the transfer of
the new code base to public cvs on Savannah. This will be placed under
the "BayonneNG" module name in the Bayonne cvs repository on Savannah,
and should be in place at the time this document is distributed, or on
January 1st.

This new code base is drawn from entirely newly written code. The
entire
server, including class hierarchy, has been reviewed and selectively
re-implemented from scratch over the month of December. Those features
that will be part of a final 1.0 release have been kept, and some
features
have been selectively abandoned.

The initial builds of Bayonne 1.0 will likely be labeled 0.9, and the
first 0.9 release will be distributed around the end of January. In
fact,
it will likely take all of January to bring the new server code to the
point where it is usable in a release. This will be followed by a
final
set of 0.99 releases, and the full 1.0 release of Bayonne, perhaps
around
May, where I hope I may be able to formally introduce it as part of a
GNU
Telephony WiP at SANE in the Netherlands.

The 0.9 release will immediately introduce the new Olorin and Babylon
servers which are also to become a standard part of Bayonne and the 1.0
package release. These servers are still in somewhat preliminary form,
and may not mature until mid-year. Perhaps the "2.0" release of
Bayonne
will include what one might consider to be the actual "1.0" release of
Olorin and Babylon, depending on how progress on testing and
documentation
occur in these two additional servers over the new year.

What will Bayonne 1.0 have?

To better support carrier class services and hardware, Bayonne has been
rewritten to support hot swap (cPCI) services. This allows Bayonne to
take ports or groups of spans selectively out of service into a standby
mode and return resources to the OS.

Perhaps by far the most important part of Bayonne 1.0 is what will
actually be introduced at "GNU/"LinuxWorld in NYC. What I will say of
it
at this time is that it is an entirely new framework for building and
supporting all forms of telephony media devices and that it will
probably
change the way all telephony applications are written in the future for
free operating systems, not just for Bayonne. In fact, the
introduction of this framework was one of the principle reasons for a
complete rewrite of Bayonne to be undertaken at this time.

For testing purposes, it is now possible to execute Bayonne without any
special telephony hardware. A functional "dummy" device exists which
can
simulate hardware behavior and allow applications to be tested and
executed under keyboard control. If the machine has an OSS based sound
card, it will be used to perform audio processing operations on the
local
PC, and hence allow one to simulate behavior of Bayonne applications
and
demonstrate services without any telephony hardware.

Integration of Bayonne with PreViking based Infotel services is also a
major change for the 1.0 release. The Viking Infotel server will be
used
provide standard database access in much the way BayonneDB had been
intended for things like call detail records, for balance lookup on
debit
transactions, etc.

System monitoring thru a tcp port connection will also become a
standard
part of Bayonne 1.0. This will allow both command driven "shell"
access
to the Bayonne server's internal operation states, and the ability to
create a front-end gui to monitor running servers. Between system
monitoring and the ability to pre-test servers, it should be possible
to
more effectively deploy and debug both applications and running servers
to
the level needed for a commercial network operations center.

The use of XML in Bayonne has been extended for 1.0. Bayonne, Olorin,
and
Babylon will now parse an shared XML based "configuration document".
This document can either reside on the local file system as a /etc
file,
or it can be fetched from an internal web server during startup. This
should allow one to globally configure a group of Bayonne, Olorin,
and/or
Babylon servers from a central server. Remote fetching of scripts and
voice libraries during startup is also being worked on.

To better support creation of dedicated commodity and embedded
telephony
applications, such as turnkey voice mail systems, it will soon become
possible to compile and build Bayonne servers in a "light" mode which
uses
no XML support. This will be done by constructing a GNU Common C++
library without XML support. I am also looking at generating a further
function reduced GNU Common C++ build that will reduce the footprint of
Bayonne even further when so desired.

Another change is support for user scripting. User scripting enabled
anyone with a login id on a box running a Bayonne, Olorin, or Babylon
server to create and manage their own telephony application service
with
their own prompt library once they are added to the bayonne group by
the
system admin and by assigning number routing to such user services thru
Infotel, such as by DNIS, for example. This is conceptually similar to
how users might create personal web sites on an Apache server by
placing a
public_html folder in their home. This permits one to host telephony
"services" for outside users and easily create a telephony ASP even
without using XML.

Where in the past Bayonne has been distributed without prebuilt sample
applications, this will be changed starting with the 1.0 release.
Currently there are several different groups working on Bayonne
applications for both the current and the 1.0 release series, both in
the
US and abroad. Some of these we expect to demonstrate at
GNU/LinuxWorld
in NYC next month.

Perhaps the greatest single change in the whole project is that the
entire
source tree has been simplified. It is now possible to intelligibly
find
where sources for various parts of Bayonne are without having to go
thru
several directory levels.

FAX support is an interesting question that currently is being
re-visited
in Bayonne 1.0. We have not supported FAX operations in the past
except
in conjunction with Hylafax, but we expect to do so directly sometime
in
the future. I am not sure if FAX support will make it in time for 1.0,
however. It may have to wait for "1.1".

Finally, GNU Bayonne is absorbing functionality from the PreViking
telephony server. PreViking, along with Infotel, and some other soon
to
be announced things, are GPL licensed telephony related projects that
are
sponsored by Telesave in the UK. Bayonne 1.0 will directly offer
functional services constructed thru scripting that match those
currently
provided by PreViking, including debit calling and answering services,
and
will also offer some additional services related to building of ACD
systems, unified messaging, and hosting of voice commerce.

What has been dropped in 1.0?

I have chosen not to implement the Pika driver for the 1.0 release of
Bayonne. This is due to the fact that the card and software are not
actively maintained for GNU/Linux any longer.

There have also been a lot of odd ways of integrating Bayonne with web
services, including cgi wrappers, and even ssh stuff. All of this
cruft
has been removed. XMLRPC as provided thru the GNUCOMM Apennine server
will become the standard way to interact with a running GNUCOMM
services,
whether from the web or other applications.

I am sure there are enough minor differences to confuse some. In fact,
one of the biggest problems is that the current project documentation
is
already well obsolete, even before the rewrite. Hence, the current
documentation, in effect, is being dropped.

What are Olorin and Babylon?

One of the changes not so visible has been how we restructured the
primary
class hierarchy of Bayonne in the 1.0 series. The most striking change
is
that, like GNU ccScript, the entire processing state engine of GNU
Bayonne
is now represented thru a class extensible state machine that is now
found
in the primary server rather than having to be coded in each and every
driver, as was the case with the past.

This change has made it possible to directly derive alternate servers
out
of the common Bayonne source tree by changing some middle classes. The
result is that we now can build at least three servers out of a common
source package; Bayonne, Olorin, and Babylon. Both Olorin and Babylon
each share many common attributes with Bayonne, but have specific sets
of
functionality that is branched from the main Bayonne tree. Since they
share many of the same server base classes, they can also use the same
plugins.

What Olorin does is provide a Bayonne-like server for next generation
telephone networks. It essentially provides a script driven
application
server that resides on top of a RTP media session stack. To manage
session control, a SIP stack is used in Olorin. Each RTP session has
an
instance of an Olorin interpreter just as each instance of a Bayonne
telephony port has a Bayonne interpreter. The dialects are similar,
though not identical. For example, Olorin provides access to "sdes"
RTP
source info, where such a concept does not exist in Bayonne. Olorin
requires no hardware and operates purely with VoIP telephone networks.
Olorin directly provides both media and application scripting services
in
one server. With Bayonne's support for XML parsing thru transcoding,
Olorin will act as a XML based softswitch application server.

Babylon is a media-free server that is used to provide pure application
scripting logic for traditional PBX systems. Babylon also differs from
Bayonne in that it provides extra support to implement the TOSI spec
for
third party call control and provides other provisions for standard
switch
integration protocols. Babylon requires drivers that are aware of
native
and sometimes proprietary protocols that are used by PBX systems.
These
are often carried on serial links, and Babylon also can provide a means
of
taking these native protocols and making them network accessible as
well
as script driven. Babylon shares the state model of Bayonne and
Olorin,
where switching equipment often has it's own call control model,
sometimes
derived from CSTA. This makes Babylon drivers far more complex than
Bayonne ones.

Collectively, Bayonne, Olorin, and Babylon provide application services
in
GNUCOMM for both current and next generation telephone systems. They
also
are to be the foundation of telephony services in GNU Enterprise and
packages that reflect GNU Enterprise modules will also be created as
part
of GNU Bayonne, such as GNU Bayonne Customer Relations Management,
which
will do telephony operations related to that portion of GNUe.

GNU Bayonne Events in 2002

I have been kindly asked by Greg Herlein to run this year's Telephony
BOF
at next year's GNU/LinuxWorld in NYC on Thursday night. I also happen
to
be speaking at GNU/LW at the DotGNU panel on Wednesday as I happen to
chair that project, and will generally be around the GNUCOMM booth in
the
.org pavilion where I and others will be demonstrating GNU Bayonne old
and new, and the "other" thing that should be introduced then.

In May I currently hope to return to the Netherlands to give a BoF
and/or
WiP on GNU Telephony and GNUCOMM as a whole at next year's SANE
conference, as that should be the right time to distribute the final
Bayonne 1.0 release.

In July I expect to be back in France to speak at next year's LSM
event,
to be held in the second or third week of July at the University of
Bordeaux. I expect it is likely I will be speaking both about GNU
Bayonne
and DotGNU, as we will have a gathering of the DotGNU steering
committee
during the LSM.

What is next

Now that GNU Bayonne is getting close to 1.0, we can start looking to
where we wish to take telephony application services in the future with
free software. In this sense, three projects will become ever
more intermingled with the future of GNU Bayonne; the GNU project
itself
as a whole, phpGroupWare and by extension DotGNU, and GNU Enterprise.

The role of GNU Enterprise and GNU Bayonne had been addressed before,
when
Bayonne replaced the EWOK component of GNU Enterprise. This role will
become more important as we focus more on delivering applications with
GNU
Bayonne. We do intend to deliver applications that are integral with
those of GNU Enterprise where GNU Enterprise requires telephony
services,
as well as providing general enterprise level telephony application
services.

phpGroupWare represents how we wish to make GNU Bayonne usable as part
of
everyday life for the enterprise worker. By enabling XMLRPC support
thru
Apennine and it's future decedent, we expend to enable things like
having
the phpGroupWare address book dial out to people using Bayonne,
Babylon,
or Olorin, depending on the user's enterprise environment. Another big
area left to be explored is delivery of unified web based messaging and
GNU Bayonne voice mail thru phpGroupWare.

Finally, GNU Bayonne is, of course, part of the GNU project. This
means
we should work better as a natural part of GNU, and look at ways that
other parts of GNU can work with GNU Bayonne. Supporting guile for TGI
applications is one way we can do this. Supporting pnet as part of GNU
Bayonne is another way, and we do expect to provide a pnetlib framework
for providing telephony enabled web services as an effort related to
GNU
Bayonne.

Our mission in GNUCOMM as a whole is to provide and standardize
telephony
services for the individual user, for the enterprise, and for
commercial
carriers, under free software. For this reason, GNU Bayonne will
continue
to evolve as the standard telephony application services platform of
the
GNU project.

Any questions or comments can be addressed to David Sugar
sugar@gnu.org.

Click Here!