博客园  :: 首页  :: 联系 :: 管理

The history of OPAL

Posted on 2005-11-18 09:43  sunrack  阅读(339)  评论(0)    收藏  举报

July 28, 2005

The history of OPAL

The history of OPAL as a piece of software development is a long story. A verrryyy loooong story. And a lot of it isn't even my story, as Robert has been the prime mover behind the development of OPAL even though the idea was originally conceived by both of us. But as I am going to be talking about OPAL next week at ClueCon in Chicago, I think it is time that I wrote down a coherent version of the history of this software, especially as I am intending to be using it for new VoIP projects looking going forward into the future.

OPAL has it's roots, obviously, in OpenH323. To understand exactly how OpenH323 spawned OPAL, we need to go back to late 1999. Robert and I had just got the first release of OpenH323 working (mostly) and we were looking at the problems we had with the code and what we wanted to do next. Robert and I used to meet in person once a week (we used to, and still do, live 100km away from each other in different cities) to spend an entire day just discussing code architecture and other issues we wanted to address. We covered a lot of ground in those discussions, and we came up with s few major issues we wanted to resolve for the next version of OpenH323, which we called OPAL for Open Phone Abstract Library. OPAL is also a gemstone which is found mainly in Australia, so it had a nice ring to it :)

The major issues we wanted to resolve were:

- We wanted to support a new protocol called SIP that everyone was talking about. It seemed obvious to us that as it was under the control of the IETF, it would only be a matter of time before it would be pushed as the successor to H.323 (which was administered by the ITU)

- In OpenH323, different types of connection were difficult to join together even though they had almost the same characteristics. For example, a H.323 connection, a sound card, and a PSTN termination device all have an audio channel, and some signalling controls, but look completely different to each other in terms of API. Wouldn't it make sense to have them all look the same (or at least, very similar) so that programs that handled one device type could handle them all?

- the directory structure of OpenH323 meant that filename collisions were possible. This was due to OpenH323 having a single layered include file hierarchy.

- OpenH323 did not provide abstract classes for concepts like "connection" and "endpoint", which meant that similar concepts in new protocols would not share any common ancestor with their H.323 equivalents.

- The implementation of shareable blocks of code such the RTP stack and codecs were not very well modularised.

- The video code in OpenH323 worked well, but did not seem to be a clean design. We felt it is needed to be streamlined and made easier to use.

Our plan was that Robert would start working on the reorganisation of OpenH323 to create OPAL, while I started on an implementation of SIP using PWLib and whatever parts of OpenH323 I could use. In the mean time, we would continue to support OpenH323 and backport changes to OPAL whenever needed.

We attacked the code with gusto, with Robert creating a new directory structure and implementing the idea of "streams" that we agreed would be the abstraction that normalised devices and protocols into interchangeable entities. Robert developed the idea of a "manager" that served to control the various protocol specific endpoints and provided the mechanism whereby an application could control various features from a single class instance regardless of the number of different protocols or devices that were being used. My SIP implementation was proceeding well, with simple calls working well and we were fixing SIP compatibility issues with equipment from various vendors. The single biggest missing feature at this stage was video, and that was next on Robert's hit list.

Then we decided to do the deal with Quicknet in early 2000, and OPAL effectively went into hibernation for four years. This was an immense source of frustration to Robert, as he had done the lion's share of the work on OPAL to date, but the simple fact was that neither of us were unable to spare time to work on OPAL when we needed to work on OpenH323 to earn money.

During this time, other people continued to work on OPAL but Robert and I did added almost no new code. Several times, Robert merged the OpenH323 source tree back to into OPAL, which helped to keep the code more or less at the same level as OpenH323. During this time, people like Damien Sandras (of GnomeMeeting fame) kept the flame alive by continuing to ask about the future of OPAL. But the reality was that OPAL was, if not dead, then certainly gravely ill.

Then, in mid 2003, we left Quicknet, and the picture changed again. Robert was able to find the time to do some work on OPAL, but he was now working somewhere else and was not working with either OpenH323 or OPAL at all in his professional life. I was working with OpenH323 at least some of the time, but there did not seem to be much interest in OPAL at all.

And then in the last 12 months, the picture has changed again. Thanks again to Damien Sandras, and other people like Ted Szoczei, interest in OPAL has resurfaced. Robert has also found the time to work on video again, and I have talked to many people who are interested in seeing OPAL become a fully working stack.

So that's how we got to where we are. OPAL is being actively developed and used by many different people and I expect that it will become the principal vehicle for many new VoIP projects in the near future. If you are interested in being part of that process, or have some ideas on how to help, then join the OpenH323 mailing list and let everyone know what you think. Or email me if you want to talk about it more in private - either way please speak up and make difference.

Posted by CraigS at 01:11 AM | Comments (1)