An Open Source Journey

Posted originally to: An Open Source Journey | FreePBX - Let Freedom Ring

When asked in high school back in 2003 what I wanted to do when I ‘grew up’ I had always said I wanted to work in both technology and technical theater. Over the last 16 years I’ve watched as the world of technical theatre expanded as a result of implementing new technologies. As a result of this I often found myself at the forefront of learning how to manage these new technologies in the theatrical world which one day in 2008 lead me to discovering Asterisk and FreePBX. I had just graduated from California State Fullerton University in June and I was working part time maintaining the network at an event production company and part time as a freelance theatrical sound engineer.

As the story goes, one day I was sitting at the desk at the event production company using a Grandstream GXP 2000 when I noticed the phone wasn’t connected with a standard RJ11 connector but instead was connected with an RJ45 connector. Fascinated, I then went through the menus of the GXP and realized this wasn’t the normal copper telephone I grew up with (and yes I am ‘old’ enough to have used copper telephones). Digging deeper I discovered the IP address that the phone was registered to and attempted a connection to it.

This looks pretty similar to what I saw the first time I logged into the machine

When I connected to that IP address I discovered the world of… Trixbox, funnily enough. Unfortunately I didn’t have the username and password for the interface and since it was a Friday I knew I wouldn’t get a response from the IT company that was hired before me to get the password from them. I was, however, curious as to what a ‘trixbox’ was. I also noticed normal copper RJ11 jacks on the back of the machine and I was fascinated that you could connect your home or business telephone system directly into a computer for telephone questions.

So I did what any reasonable 23 year old does, I found the download for trixbox and attempted to reformat the entire machine and so began the weekend where I dove head first into the world of Asterisk/FreePBX/Trixbox. At some point while installing the trixbox media I noticed that Trixbox was a clone of a product called FreePBX. I went to the FreePBX website downloaded FreePBX (there was no easy FreePBX distro back then!) and tried to make it work to no avail. Since I formatted the machine with previous trixbox media, the company I worked for no longer had a working phone system. Luckily it was a Saturday afternoon.

The FreePBX website circa the time I discovered FreePBX

Over the course of the weekend I learned more about Asterisk, TDM, and FreePBX cards than I ever thought I would. At some point over the weekend I got Asterisk to recognize the TDM card and the telephone system was back online and I thought all was going to be right with the world. Yet I ended up being very intrigued by this “Free” telephone system and all of it’s features and the power it contained.

The original Polycom 501. Still in operation today at the event production company

The only problem I had at this juncture was that the phones in the office didn’t know how to connect to Asterisk anymore. The phones I decided to work on first were in the boss’s office. A Polycom 501. I thought to myself “how hard could it be to configure this thing”. Boy was I wrong.

After dealing with polycom provisioning for what seemed like hours, I next attempted to configure the grandstream gxps. Although these weren’t as hard as the polycoms I continued to ask myself why there wasn’t an easier way to configure these phones remotely. They all seemed to support dynamic DHCP and TFTP options to retrieve configuration files but all attempts at scouring the internet returned only results of people configuring these devices manually.

Around this time I discovered the PBX-in-a-Flash distribution and the community that surrounded it. At the time it seemed like a far more vibrant and active community that the FreePBX forums. There I found a post announcing a GUI for configuring phones for FreePBX written by a forum user named John Mullinix (@jmullinix). I sent him a quick private message (that I still have!)

Hi John,

My name is Andrew Nagy and I was a former trixbox user for about a year. I loved how easy it was to use their endpoint manager but their implementation of FreePBX and Asterisk was rather weak I thought, which is why I came over to PBX in a Flash. When I saw your project for an endpoint manager I thought it was pretty cool. And so far it’s worked wonders but I wanted to know if I would be able to help out with coding on the project. I have a ton of PHP (4–5) and MySQL(4–5) experience. My information on projects.colsolgrp.net is tm1000. Same as here. I’ve worked with Linksys PAP2, Polycom and Grandstream phones. Specifically I’ve programed functions on the Grandstreams such as XML screens and such and I’ve worked with gd on PHP which is especially interesting as it’s compiled with PHP on PBX in a flash which perhaps could be used with endpoint manager for uploading personal images to phones. etc.

What other information do you need specifically?

I received a reply almost instantaneously

Thanks for volunteering Andrew. Tony [Shiffer] has anticipated my request and you have been added to the project.

If you need to call, you can reach me at

<redacted>

sip://<redacted>

iax2://<redacted>

My email is <redacted>

Thanks again.

I then began to work feverishly on rewriting Endpoint Manager for FreePBX for an open source initiative group named Col Sol Projects. They mainly had open source projects for FreePBX such as CID Superfecta and of course Endpoint Manager. This is where I ended up meeting Lorne Gaetz (@lgaetz) through his contributions to CID Superfecta. However their Endpoint manager ran separately from FreePBX itself. So I took the opportunity to learn about FreePBX internals to be able to re-write Endpoint Manager into FreePBX itself.

Open Source Endpoint Manager in it’s early days

I continued to work on Endpoint Manager in my spare time throughout 2009.

It’s around this time that I also ran into the blogger named “Michigan Telephone” and started reading his blogs about FreePBX and I started actively following the blogs from Philippe Lindheimer (@plindheimer) of FreePBX. I also worked on a few other modules you might not have ever heard of, including swiss army knife, which included some things I felt the community wanted but weren’t in FreePBX (like the ability to add old school dial patterns in inbound and outbound routes). I also wrote the motif module, which allowed users to use Google Voice and I based that work off of Marcus Brown’s original Google Voice module. Marcus wrote code for the original Jabber implementation and I did a module based on the Motif implementation.

Then one day in June of 2010 I got an email from a “Tony Lewis” (@tonyclewis) of Schmoozecom asking me if I would give him and Philippe a call. The next thing I knew I was a ‘contributing’ developer to the FreePBX codebase and Endpoint Manager was distributed to FreePBX systems all over the world.

Around this time I also met Darren Schreiber and Patrick Sullivan of 2600hz. Two stellar guys. I even went up to work on provisioning services for them in San Francisco from time to time. At one point a few months later I almost ended up giving up on Endpoint Manager after an altercation with a FreePBX developer who is no longer around. That is the first time I met Bryan Walters, also of Schmoozecom. He encouraged me to not listen to said developer and to keep participating in the community and in Endpoint Manager.

Sometime in the early summer of 2012 Tony Lewis asked me if I wanted to go to Astricon. I gladly accepted and flew out to Atlanta in the fall of 2012. There I meet in person; Tony Lewis (@tonyclewis), Luke Duquaine (@datorherren) , Philippe Lindheimer, Bryan Walters (@GameGamer43) and Preston McNair (@reconwireless) of Schmoozecom and Jason Parker and Josh Colp of Asterisk.

By the summer of 2013 I was officially working for Schmoozecom on FreePBX under the direction of Philippe Lindheimer and over the years I gained more responsibility within the FreePBX project. The Schmoozecom years were a period of massive growth for the FreePBX project, the company hired James Finstrom (@jfinstrom) (formerly of Rhino), Jason Parker (@qwell) (from Digium) and Rob Thomas (@xrobau) (who pretty much created ‘FreePBX’ as you know it today). Rob, Jason, Bryan, Tony, James, Luk, Philippe and I created fwconsole, we fixed the installer, we fixed autoloading so it’d work and Rob Thomas added what’s now known as BMO, which changed the game for FreePBX turning it into a more object oriented code base. You’d also probably be surprised to know that I never worked on the commercial FreePBX Endpoint Manager. Luke Duquaine ran that originally then passed it off to Jason Parker who passed it off to Kapil Gupta (@kgupta1) , who still works on it today.

Sangoma later acquired Schmoozecom on January 1, 2015 which gave FreePBX more global recognition than it ever had before. At some point in the last few years Philippe moved on to other aspects of Sangoma’s business operations (he actually still works for Sangoma!) while I became project lead for FreePBX.

In the years that followed the FreePBX team accomplished several goals support for PHP 5.6 and we brought in and implemented more object oriented concepts. We had 3 releases: 12,13,14 and soon we will have 15. I’ve gone to every Astricon since 2012 (So 7 years!) and I’ve met so many wonderful members of the community here and on the forums. I’ve really treasured my time running this project. If you’ve read my posts on the forums or followed me for any length of time on here you’d probably think I was pretty blunt/rude in my replies. However I did care about what each and every one of you posted and often brought it up to Rob, Tony, Bryan, Jason and Philippe when we all worked together on FreePBX to find solutions for people’s issues. I am the type of person that tries to give facts as they are, without “fluffing” it up. If I’ve offended you in the past I am sorry for that, but I hope my contributions to the project make up for that. Looking back I remember a previous developer conference we had in Neenah Wisconsin (the former HQ of Sangoma US) where the community said Yealink phones were having issues with FreePBX 14 and Rob Thomas and I walked to the “Schmoozecom wall of phones” pulled down a Yealink and worked on trying to figure out the issues together for a whole day. Those are times I truly treasure with the FreePBX project and the community, including YOU!

Over this last summer Sangoma and Digium merged into one company and we gained a huge array of wonderful Asterisk developers (not only developers but the entire Digium staff). For once I was finally able to work directly with Matthew Fredrickson, Joshua Colp (@jcolp) and George Joseph. All Asterisk developers that I used to communicate with only over IRC. I also had the pleasure of spending time working with the Switchvox team in San Diego and I can’t express how welcoming the entire Digium team has been. You might have noticed a few of them participating in the forums recently.

One of the last major projects I was able to work on was something I’ve been ‘hotly’ involved in over the last year and that is FreePBX CPU utilization, you can read more about that in my performance improvements post here: Performance Improvements in FreePBX. But also our recent Framework upgrades that consolidate all of our crons in the Asterisk user’s crontab into a single cron in PHP, this allows all FreePBX cron code to run in “sequence” and only have a single startup cost, we think you as the community will really enjoy these changes.

After much thought and deliberation I’ve decided that it’s time for me to move on to new opportunities. I’ve worked with FreePBX and Asterisk for a little over 10 years (since the fall of 2008). I’ve worked professionally in open source technologies during my entire time at Sangoma and Schmoozecom. Over the last 10 years I’ve learned so much about the open source community and I really do love it. I’ve met so many wonderful people at Astricon and online through various mediums (the forums, dslreports, reddit, IRC). I’ve seen how much FreePBX has affected other people’s lives. I’ve seen and heard about the major places it’s used and even the minor places and the impact it’s had on businesses. Hopefully you can see how much it’s affected mine. However, everyone has an expiration date and I’ve finally reached that time. I’m excited about what the future holds for me and hopefully I’ll run into you all around the community in the future. My last day with Sangoma will be this Friday (The 17th of May).

Taking my place will be Matt Fredrickson of the Asterisk project. Matt will now be the manager for both the Asterisk and FreePBX projects. He’s been working with Digium since the early days and has an employee number almost as low as Malcolm Davenport. Matt’s been in charge of the Asterisk Open Source project for the last few years and he’s done a stellar job at it. I have no doubt that his leadership will help continue to grow FreePBX in this new era.

I want to encourage all of you that FreePBX itself is in a very strong place. The team is working hard to release a few wonderful additions in the next year and I wouldn’t be surprised if FreePBX fully supports PHP 7.2 in the next year!

Thanks for the great years FreePBX community. You are all great in your own individual ways

16 Likes

I have worked beside Andrew for the last 5+ years. It has been a privilege and I am happy to say I am a better developer now because of his help. He forced me to stop being a lazy php developer and to do things correctly and with thought to others who had to look at what I did. He brought me from procedural PHP and helped me journey in to object orientated PHP. With his help and with the efforts of Rob FreePBX has become vastly more maintainable. Andrew has taken great efforts in the performance improvements of FreePBX and even in his final days has taken time to add functionality to make FreePBX more performant and stable. We have a great team of developers working on FreePBX. In addition to his direct work he has mentored directly many members of the team to truly help the project progress and keep improving

Thanks for everything Andrew.

7 Likes

My own involvement in the OSS community is due in very large part to Andrew’s guidance and support in my early days. Back when he was delving into the early OSS EPM on colsolgrp, I was doing the same with Superfecta. Thanks Andrew for all you’ve done for the community (and for me) and good luck on your future endeavors.

6 Likes

I’m the hidden developer that is only occasionally let out from the basement. I wanted to add that Andrew wasn’t just a great leader for the project, but I’m happy to have also long considered him a friend.

The FreePBX project is definitely losing a great asset, but Andrew’s leadership has left us in a place where I feel as though we can maintain the upward trajectory that we have had going for some time now. With Matt (who I have known and worked with for many years) now at the helm, I am entirely confident that we will continue to bring new stability and performance enhancements, as well as the new features we’ve had in the works (PHP 7.2 by next year, as Andrew suggests?).

Next time I’m Southern CA, I’ll buy the drinks, on behalf of the community. Best of luck, Andrew!

3 Likes

Thanks for everything Andrew. I wish you the best.

1 Like

I’ve never worked with such great people eager to teach and help out. Thanks for everything Andrew and you will be missed.

1 Like

Andrew you were a diamond in the rough. I remember spending a year convincing you to quit your gov job as a sound technician and come take a leap of faith with this crazy startup called Schmooze and you finally gave in. Wow has the time flown by. It sure was fun times. I am sure you will go on to do amazing things.

4 Likes

Hi Andrew,
You been a great asset of FreePBX community and your contribution to the FreePBX project is amazing. The OSS EPM has helped me in my various projects and I believe this is a time to say big thank you for all your wonderful work.
Losing all geeks here from Asterisk & FreePBX project is something more emotional to me.
we as community users who took more help and contributed little in term of development must be very very thankful to you all amazing guys.
good luck and wish you a great future ahead…

Regards
Numan Khan

3 Likes

Thank you Andrew for all your help over the years. You’ve solved countless problems I’ve run into. Best of Luck!

1 Like

Good luck to you, thanks for everything you’ve done for the community!

1 Like

I started with Schmoozecom April of 2012, I may or may not have thought Tony was crazy when he hired that brash guy from the forums. :rofl: But I can say it’s been a pleasure working with you the last 6-7 years, I wish you the best and sorry if as the “The Support Guy” my job was to make yours a bit more painful at times. If you ever find yourself in Texas I’m sure I owe you a drink or three.

6 Likes

Good luck @tm1000. I look forward to seeing whatever else you can destroy in the open source spectrum.

And before anyone gets too excited that I am slamming him, I am just referencing an inside joke between Andrew and I that has lasted about 5 years. Or am I? :man_shrugging:

5 Likes

@tm1000 When you joined the team I suspect that you were the youngest employee on staff, I was the oldest employee at that time, thank goodness @cosmicwombat & @plindheimer joined as employees soon after to lower my rankings a bit with their “experience” :wink:. It’s been great watching you grow into a leader of the project as well as the personal milestones you have accomplished while here.

During many of my presentations and speaking engagements about FreePBX over the years I have usually thrown in a line about being one of “the smartest kids in the room” at my previous jobs, but when I joined the team here that went out the window, for the past decade of involvement with the FreePBX Project I have had the pleasure of working with the smartest group of people I have been associated with during my career… @tm1000 I would count you in that group (as well as everyone else you tagged above… and quite a few not mentioned as well!)

48%20PM

Like Andrew, this project has enabled me to enjoy what I do for a living, as well as provide for my family and build some great connections to end users and businesses deploying the platforms that this FreePBX team has built. It would be interesting to hear from some community members about how this project has enabled their personal and business lives. I suspect the impact is pretty great for quite a few people on the here.

As for you Andrew, looking forward to seeing what you do next… might I suggest SAK 2.0, or maybe an Avocado Toast Food Truck?

image
image

1 Like

Um, yeah… that’s about the same time I stopped playing with writing modules for fun. Not being able to sleep at night trying to figure that stuff out was beyond my skills.

3 Likes

Good Luck Andrew and thanks for everything!! :slight_smile:

1 Like

Andrew, thank you for all your support. And thank you for everything you have done for the community! All the best for your future!

1 Like

DSCN0835 I remember that Astricon 2012 well. I also recall hearing Tony make an employment offer to Andrew and thinking… shit I should have learned to code :slight_smile:

There are quite a few ot us out there that owe Tony a huge debt of gratitude and his insight that put together the best team of folks I have ever worked with.

Happy trails Andrew!

2 Likes

Andrew’s departure brought up a lot of memories and a lot of things I want to say to him in wishing him farewell, So instead of a long post here, I just replied with a blog … kind of fun after all this time to be posting back in this great community!

2 Likes

Wow that’s a grow back picture. That is the one that we packed 18 drunk Digium and Schmooze guys into a Suburban for dinner. I think that is the same place I convinced @qwell to leave Digium and come work with us crazy guys.

1 Like

All,

Thank you all, each and everyone of you for your kind words of support. I’ve cared about FreePBX like my own child and sometimes I’ve gotten defensive with most of you over a bug or feature request or the way someone is doing something, but I’m glad you were all able to see past my ‘sensibilities’ and understand that I was just trying to make FreePBX as great as it can be.

sunset

1 Like