Risks and challenges
The main challenge I must overcome to complete this module is finding time to work on it. I work a full time job, and I have a wife and two children. All of these things demand a lot of time. However, most week days I have from around 8pm until 11pm which I can spend writing code for this module. I also have 10 - 16 hours on the weekends I could spend towards writing code for the module.
Most of these extra hours are spent on consulting and family activities. Paid consulting jobs take priority when they are available. By raising the funds requested, it will provide the income necessary to displace all other paid consulting jobs which might be taken during the hours mentioned. It will ensure that I can work on the project for 20 - 25 hours each week.
If all of these hours are available to me to work on the project, I should have something to demonstrate at ClueCon 2013, August 6 - 8 which covers the base set of features and equates to at least "beta" quality code. This means it should be able to automatically detect failures and fail calls over to a slave system, as well as provide a means of taking nodes offline for easy maintenance, without dropping the calls. There may still be bugs to address, but those will be resolved as more people start testing the code.
If the $50,000 goal is not reached, I will try to relaunch the project with a smaller goal, but that will mean it will most likely not be ready for demonstration by ClueCon 2013.
Obviously, with software projects also comes the challenge of finding and fixing bugs, as well as the challenge of architecting a solid solution to the problem.
I have been working with FreeSWITCH since 2009 and programming in general since I was 5 years old. I authored the core-pgsql support in FreeSWITCH, have submitted several other minor patches to it, and I work with it in my day-job on a regular basis. My co-workers are the core developers and maintainers of the FreeSWITCH project.
In addition to this experience, I have worked in the VoIP industry since 2006 and have experience designing, developing, deploying, and maintaining carrier-grade VoIP networks. Prior to that, I worked for an ISP for four years and was solely responsible for the design and implementation of the ISP's networks. Thus, I have had direct experience dealing with high availability systems and architectures covering everything from the physical layer to the application layer since 2002. I have also written a resource agent for Pacemaker and Corosync which manages a pair of FreeSWITCH nodes as a master-slave resource.
The largest possible obstacle I might encounter is the ability inside FreeSWITCH to easily resurrect calls for single other FS instance in a timely fashion while simultaneously making each FS slave be capable of resurrecting calls for any FS master. I have some ideas on how to accomplish this, and I am very familiar with the sections of the core FS code involved in the process, so I do not anticipate any major issues. That being said, nothing is certain until I get to that point in the development process and have the chance to test it. The worst case scenario is that it requires me to make some modifications to the FS core to do what I need to do. Having already added the core-pgsql support, and working daily with the lead developer of FreeSWITCH, I do not anticipate any complications or major issues with that process should it be required. However, if it is required, it will add some significant extra work to the project and delay the release.
Learn about accountability on Kickstarter