Inside GnomeMeetingby Howard Wen
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.
Return to the Linux DevCenter.