The first ClueCon
August of 2005 was the first annual ClueCon conference. We had several open source VoIP project leaders including Craig Southeren, one of the authors of OpenH323, and Mark Spencer, creator of Asterisk and the same person who did not like my Asterisk 2.0 idea. However, it was awesome to get these guys in the same room. We filled the day with presentations, with discussions going back and forth, and we really got everyone thinking. It was a huge success, and I left the conference energized and ready to work on my Choir code again. However, I didn’t. Instead I talked it through on our conference call for months while trying to keep my struggling Asterisk based platform afloat. It was Fall now and the turmoil in the Asterisk community finally erupted into a rebellion. A sizable percentage of the community forked Asterisk into a new application called OpenPBX.
I totally understood why they did it, and I supported them the best I could. I donated all the code I had written for Asterisk, for them to do what they pleased. I helped when I had a chance, but could never fully get involved with the effort because I still had the same problem—I saw a need to really tear everything down to the basic level and the founders of the new project were mostly interested in fixing specific pressing issues that were not being addressed in a timely manner by the Asterisk core team. We still had the conference calls, but mostly nobody would show up from the Asterisk project because they were not happy with the idea of cavorting with the rebels. I apologized one day because I could not try to solve any problem in OpenPBX that would not boil down to totally gutting everything and writing a new core. That’s when someone asked me, "How long do you think it would take to get your new code to make a call?" Like Mr. Owl from the Tootsie Pop commercials, I had no idea so I decided to find out. A-one, a-two, a-three weeks (give or take).
The first module that actually produced sound was called mod_woomera
; it was an endpoint module using the Woomera protocol written by Craig Southeren, the same person I had just met at ClueCon. I made a similar module for Asterisk and it was a simple protocol and required no codecs or anything fancy. The idea was that it would take the complexity out of H323 and allow applications to use it via this simple protocol that could be easily integrated into VoIP applications, so it seemed like a great place to start. As I started to work, I realized that I needed more elements in my basic core and slowly started to bring the code together to a point where I could make a call to the Woomera-powered H323 listener process and get activity in my Pandora code. Yes, I renamed it to "Pandora" because nobody liked the name Choir. I joyously listened to the Alan Parsons Project hit Sirius stream into my speakers from my application for the first time. This was even more exciting than the first time I made Asterisk work because I actually wrote this code myself from scratch and it was doing something.
Now I was getting somewhere; I figured out how to make two channels bridge to each other, then how to support some other protocols and do a few basic things beyond a sarcastic help message and an exit routine. The idea came and went to dub this code OpenPBX 2, and finally when I had enough with naming arguments, I decided once and for all what I wanted to call the application: FreeSWITCH. I finally had a name I knew I was going to stick with and some working code, and a lot of ambition. I put my head down and just began coding. There was work to be done everywhere. It was too overwhelming to think about it really. I just kept plowing through the code and by the time I reached January of 2006, I had enough to share with the public. We opened up our code repository to developers asking them to register for a developer account to gain access to the code as a way to make sure only those who were serious would bother to complete the registration process. We had some people checking it out and providing feedback, and we really started to feel like we had a real project.
We had a module to bridge calls, one to play sounds, a few codecs, some examples of Dialplan modules, and a few other things. Oh, and did I mention it worked on Windows too?
Our original site is still preserved, though none of the links are active: http://www.freeswitch.org/old_index.html