Inside GnomeMeeting

Damien Sandras says his programming philosophy is "the UNIX way:" designing
individual programs that do unique tasks well and interoperate with one
another, instead of one program that attempts to do several tasks that other
programs already do. His GnomeMeeting is a voice-over-IP (VoIP) and
video-over-IP application for Linux that builds upon open source libraries and
open telephony standards.

A 27-year-old programmer from Ath, Belgium, Sandras works professionally
with open source multimedia and telecommunication technologies. Four years ago,
while a student in his last year at Université Catholique de Louvain, he
wanted to make what he calls "an innovative contribution to the Free Software
movement."

"My first idea was to create a new instant messenger with VoIP capabilities.
My professor convinced me that it was a better idea to create something that
didn't exist yet for GNU/Linux, and that respected a [telecommunications]
standard," says Sandras.

Figure 1. Developed for open audiovisual telecommunication standards, GnomeMeeting features real-time audio and (shown
here) video chatting for Linux.

He started to write the code for GnomeMeeting based around H.323, which was the dominant
audiovisual conferencing standard at the time. Another standard, Session Initiation Protocol (SIP),
is also in popular use these days. Sandras is presently adding SIP support to
future versions of GnomeMeeting.

Obviously, GnomeMeeting derives half of its name from GNOME, because Sandras
designed it to work and integrate seamlessly with that Linux desktop
environment. The other half comes from Microsoft's virtually defunct NetMeeting, from which
Sandras originally took inspiration for early versions of GnomeMeeting.

GnomeMeeting's first release took place on July 2, 2001 (the birth date, but
not year, of Sandras' girlfriend). Response was so good from the Linux
community that many distros soon packaged this initial version, including
Debian, Red Hat, and Mandrake. Other projects have since implemented
GnomeMeeting's code; one company is building a hardware videophone that uses
the GnomeMeeting software.

Sandras spoke with us about the development of GnomeMeeting and elaborated
on his "UNIX development" philosophy.

Howard Wen: What's the current status of GnomeMeeting?

Damien Sandras: GnomeMeeting 1.2 has just been
released.

The 1.00 release [was] a full-featured H.323 videoconferencing/VoIP/IP
telephony application. [It] was already supporting all features that modern
"softphones" include: from simple video chat to advanced features that mainly
corporate users are using with IPBXes.

GnomeMeeting 1.2 is more integrated with the GNOME desktop. For example,
GnomeMeeting's contacts are shared with Evolution contacts. That means you can
edit your contacts both from Evolution and GnomeMeeting.

It also supports the latest features from the H.323 stack that we are using
(OpenH323), like audio codecs plugins and
STUN. Basically, anyone can now write an audio codec for GnomeMeeting.

STUN support has also been implemented for NAT detection and NAT traversal.
It is now easier for users to detect what's wrong with their NAT gateway or
local firewall.

Another interesting feature is that we have found a PC-to-phone provider to
offer a service permitting calls from your PC to normal phones around the world
using free codecs.

HW: Was GnomeMeeting inspired by any other program?

Sandras: Yes, at the beginning GnomeMeeting was largely
inspired by NetMeeting. The look and features were similar.

We have evolved towards a pure VoIP and videoconferencing solution, with
more professional features than NetMeeting, a different look, better NAT
handling, and a completely different approach to managing things. All my design
choices are largely inspired by the GNOME Human Interface
Guidelines.

We will now evolve again and propose SIP support together with H.323 support
instead of H.323 alone. Sometimes I think it would be more appropriate to
change the name of the application for that reason, because many people are
unable to see that GnomeMeeting is not a NetMeeting clone anymore, but
something different.

HW: What's the difference between how GnomeMeeting
functions compared to similar programs?

Sandras: Usability, really. Many people sent me emails to
tell me how they were happy to use GnomeMeeting because the UI was clean and
well-designed, and because the software was stable and able to do several
hundreds of calls without any problem.

Keeping a simple UI with VoIP software is something that is not easy,
because VoIP involves many new concepts. The technologies (SIP and H.323) are
complex. Most complex details can be hidden, but there are still a few that you
need to keep. A good example is the "gatekeeper:" many people ignore a
gatekeeper and [you] do not need support for it in order to do simple video chatting.
But if you remove that setting, GnomeMeeting becomes unusable in corporate
environments.

Other software generally has [one of] two different "views."

The "instant messenger": Easy, simple and efficient. You right-click on a
friend and you are in a call with him. These are simple programs allowing
video chat or audio chat, but they do not have features that you need to
replace your [landline] phone.

The "softphone": More complex, allowing video chat or audio chat, but
also advanced features that you are probably using with your phone: call hold,
call transfer, gatekeeper registration for H.323, n-way calling, etc.

GnomeMeeting follows the second approach. Our goal is to provide the most
powerful softphone possible and to make it reusable by other programs. That
way, open source programmers do not have to code VoIP or video chat support
into their software; they can use GnomeMeeting's core for that purpose.

HW: What advice do you have for those who want to modify
the GnomeMeeting source for their own projects?

Sandras: I would ask them to contact me first, and to
document their code. Too few people are commenting their code, and I think
it is very important to do it. All functions in GnomeMeeting are documented,
which should make it easy to understand, debug, and improve the current
code.

HW: What are the technical limitations of GnomeMeeting?

Sandras: I think GnomeMeeting is not easy enough to install
yet. There are two main reasons for that:

Current GNU/Linux distributions do not detect and properly configure enough
webcams. Sometimes a driver exists but is not stable. There was a similar
problem with sound drivers, but it has been solved with the introduction of ALSA.

Current hardware and software NAT routers do not support protocols like
H.323 or SIP. Using RTP, they need a special configuration or an external proxy
to allow calls to go through. That will be solved in the near future, too, as
more and more hardware vendors support the SIP protocol in their routers.

Finally, patents are preventing us from having some codecs available on
Linux. Some of these codecs are better in terms of quality than the freely
available ones.

HW: What language(s) did you write GnomeMeeting in? Why did
you choose it?

Sandras: GnomeMeeting was coded in C/C++, but the GUI is
written in C.

I don't think there was a specific reason. I thought Java was not
well-suited for this kind of application, and I also wanted to contribute
something to the GNOME project. GNOME 2.X is actually a great platform. Some
people ask me if I regret that choice, and I do not.

However, GnomeMeeting 1.2 is compilable without GNOME support without any
loss of features. That port was required to speed the development of the Win32
release of GnomeMeeting, because GNOME libraries are not ported to that OS.
GTK+ has been ported, but it is rather buggy when it is being used with
threads. That complicates our port because GnomeMeeting is heavily
multithreaded.

HW: What outside code or libraries do you use in
GnomeMeeting?

Sandras: GnomeMeeting is mainly based on three types of
libraries:

GTK+: The toolkit with which the GUI is coded.

GNOME: Because I think that it is very important to have integrated
applications.

OpenH323/PWLib: The OpenH323 stack
for the H.323 protocol and the portable classes from PWLib [Portable Windows
Library]. We are now working to replace OpenH323 with its successor, OPAL [Open Phone Abstraction
Layer].

We are trying not to reinvent the wheel when it is not required. I think
that's the main reason why we have not created our own libraries. That's
important, because it permits open source projects to grow faster than if their
developers have to write everything from scratch. That wouldn't be possible for
programmers like me who are only coding in their spare time, while trying to
keep a social and family life.

HW: Was any technology specifically created for
GnomeMeeting?

Sandras: I don't think so, but I hope that GnomeMeeting has
helped to spread some technologies. We have always tried to adopt technologies
early in their development phases. For example, GnomeMeeting was one of the
first projects to fully adopt Gconf, D-BUS, and OPAL.

HW: What major technical challenges have you faced in
developing GnomeMeeting?

Sandras: When I started developing GnomeMeeting, I had
absolutely no knowledge of GNOME internals, or of VoIP. I started by
determining if I would create the program based on a toolkit or desktop. I
chose a desktop because it would provide better integration.

Then I had to learn more about the libraries I needed to use, and about VoIP
in general and H.323, more specifically--all of this in a relatively short
amount of time. I had to solve many problems, like coding with threads and
GTK+, having efficient locking, and preventing deadlocks between different
threads. I also needed to deal with sound cards and webcams.

GnomeMeeting is dependent on many external factors, and that's what makes it
complex but also intellectually enjoyable!

HW: What do you have planned for future releases of
GnomeMeeting?

Sandras: I have started to add SIP support. We hope that
GnomeMeeting will be the first open source client to support the two major VoIP
protocols: H.323 and SIP.

We also plan to complete a D-BUS component that will permit other KDE and
GNOME applications to remotely manage GnomeMeeting. That should permit instant
messengers to have plugins compatible with Windows Messenger, for example. One
of the GnomeMeeting developers, Julien Puydt, has been working hard on D-BUS
support in GnomeMeeting and on a GAIM plugin [that would be] able to use it.
That is still a work in progress, but basic D-BUS operations are already
available in GnomeMeeting 1.2.

After the GnomeMeeting 2.0 release, we will look at other protocols like IAX.

Meanwhile, a Windows port of GnomeMeeting should appear. There is no ETA yet
for this, though.

HW: What would you like your users to notice about the work
you have done with GnomeMeeting?

Sandras: [Our] interoperability through the use of open and
published protocols.

People often request instant messaging functions in GnomeMeeting, or that
we implement proprietary protocols like the one Skype is using. I think that is
the wrong way of seeing things. Could you imagine the Web with proprietary
variants of HTTP that only a few specific browsers could decrypt?

Standards organizations have created quality and open protocols like H.323
and SIP. We should support these protocols that are already being used by big
VoIP system vendors like Cisco, Alcatel, and Avaya. Asterisk, the open source
PBX, is also supporting them.

Seeing how VoIP and IP telephony systems are evolving, I think that only
applications respecting the standards have a future. But we are only at the
beginning of the [VoIP] revolution. That [is] why very few instant messengers
are using standard protocols.

I strongly believe that people should not reinvent the wheel when it is not
required in the open source community. That is why we want to provide the tools
so that GnomeMeeting can be reused in other software, especially in instant
messengers.