Friday, September 21, 2012

FreeSWITCH Stable Branch - Sponsored by Star2Star

As many of you know I’ve been quite fond of FreeSWITCH for some time now.  I’ve been impressed with the functionality, stability, and performance.  Did I say impressed?  I suppose I meant to say thrilled.  Some of my more long-term readers may remember this post from three years ago.  I can’t believe it’s been that long.  I suppose that makes me (officially) old.

Getting back on track (as I often have to do) I have had one concern with FreeSWITCH over the years - the lack of a stable branch.  Traditionally (in software development) once a project or piece of code reaches a certain level of maturity (or use, even) there comes a need to segment the code into an independently maintained entity.  In most revision control systems this is typically called a “branch”.  Makes sense because lines of code are often referred to as “trees”.  I get it!

Since the beginning of the project in 2006 all of FreeSWITCH development has take place in one central code repository (trunk - trees again).  At any given point in time a user could pull down trunk and receive the latest and “greatest” code - new features, bug fixes, security patches, etc.  Unfortunately these new features can introduce new bugs.  They can re-expose old bugs.  They can change behavior in unexpected ways.

One of the things that has been most impressive about the FreeSWITCH project, actually, has been the relative stability of this often new and untested code.  It’s been extremely rare to find a serious issue in trunk.  However, the mere knowledge of this code management practice (or relative lack thereof) and potential for new features/bugs is an issue.

I learned a long time ago that people expect their phones to just work.  The same user who finds it perfectly acceptable to reboot their computer after a software crash will jump and scream when a telephone doesn’t work.  I guess that’s a testament to the level of experience people have historically expected.  Interestingly this expectation seems to be changing in the face of new technology, which is something I have covered before.

Anyway, for the time being people (including myself) expect these things to “just work”.  Of course this expectation places a tremendous burden on network and facility operators such as myself (and rightfully so).  Meeting this expectation with FreeSWITCH trunk has required a significant amount of testing, testing, re-testing, regression testing, patching, etc.  We simply cannot unleash a new version of software in the field without significant testing.  When issues are found we have to address them.  This takes time and resources.

Meanwhile FreeSWITCH is an open source project.  That can’t be expected to provide for every need and whim of large commercial users such as myself.  Why should they?  They already spend so much of their limited time and resources to provide software that essentially powers my business and (indirectly) provides for my livelihood - for free.  With these limited resources alone they can’t be expected to make time for the maintenance of yet another collection of code.

That’s why I’m happy to announce the Star2Star sponsorship of the FreeSWITCH stable branch!  For the past several months Star2Star has been providing the financial assistance necessary for the FreeSWITCH project to hire another full-time team member to not only maintain a stable branch (1.2 as of this writing) but improve documentation, packaging, and community interaction.  Everyone at Star2Star (including myself) couldn’t be happier to provide this resource for the project and the community.  We look forward to working more with the FreeSWITCH team on the stable branch and any other projects that may advance FreeSWITCH and the state of the art in communications!