Why the Switch?March 23, 2005
Terry and I have received a number of comments and questions following the recent announcement that we are changing development platforms. Beginning next month, Fellowship Church will be moving our websites to Linux, PHP, PostgreSQL and Apache. Here's a quick overview of where we've been, where we're going, and why.
FellowshipChurch.com launched in February 2001 as a full-featured portal site built in ASP, utilizing IIS and SQL Server (volunteer-built sites existed previously). A year later, a separate group of developers began intense development of a new web-based church management system, built in ASP.NET, using C#, IIS, and SQL Server [now available from Fellowship Technologies and not affected by this change]. In mid-2003, we began working on a complete redesign of FellowshipChurch.com and due to the synergies with the church management development team and our happiness with the platform, the site was rebuilt using identical technologies. Later, we added two additional sites on the same framework: FellowshipConnection.com and EdYoung.org.
We began this year knowing we were at a crossroads. As our sites have grown, so has the pain in maintaining them. Though built using similar tools, they are each unique in terms of content management, e-commerce, user management, and e-newsletters. The sites are also in need of new looks, with an emphasis on designs that are more user-friendly, flexible, standards-compliant, and inviting.The combination of rapid traffic growth, three additional campuses, and a small team requires us to worker smarter and faster. Or as Bono said, "We have to go away and dream it all up again."
As we began evaluating our options, one of our developers moved to another department so we began to search for his replacement. As I evaluated the resumes we were receiving, I began to have the sense that we were continuing down the wrong path. Here are the top ten factors that influenced the decision to change direction.
I have found it very difficult to find .NET web developers. In my experience, .NET developers tend to have worked in large teams focused on a very specific subset of the larger application, often the backend or data access layer. Very few have been comfortable working in a small team on everything from design to UI to security to backend. This is a more common experience for PHP developers.
2. Complexity and speed of development
.NET is excellent for enterprise-level web and application development, particularly for large corporations. However, with that ability comes substantial overhead and complexity.
In addition to our three in-house sites, we have a fourth that is developed by a local company in PHP using Linux and PostgreSQL. Time after time, they have been able to deliver simple and quick solutions that would take us twice as long in our current environment. With a small team and Kingdom driven demands, our focus has to be on making things happen.
Microsoft's charity pricing is a wonderful benefit to all churches and non-profit organizations, and it helps to explain why Microsoft solutions dominate these areas. Nevertheless, the costs for SQL Server, Windows Server, Visual Studio, MSDN and technical support are still fairly substantial compared to open source solutions.
4. Get in running/keep it running
Microsoft continues to improve in this area, and there is always a new version just around the corner that will make everything better, but this is a fact of life. Microsoft products, from the server to the development environment, will inexplicably stop working with no outside interference. Each of our development machines begs to be rebuilt after six months of use. Servers that haven't been rebooted for a couple of weeks begin to have issues. Code that has worked for months stops working for no apparent reason.
I built a number of Linux servers a couple of years ago and nine months later I had to be reminded that they existed as they hadn't been touched or rebooted since they went live.
Again, Microsoft has made great strides, but there is a clear advantage to using Linux in regards to security and stability.
6. Platform independence
With the new direction, my team will have Linux, Apple, and Windows desktops and a developer-specific collection of editors, development environments, and other tools. Future hires will be able to utilize the OS they know best. We did not have this flexibility before.
In my experience, I have found more quality help available online for open source tools, as well as very good code available for free. This is invaluable for very small teams as it expands what can be accomplished.
The majority of our favorite sites, development companies, designers and sources of inspiration use open source tools and technologies. The number of cutting-edge, highly usable, standards-compliant sites built in .NET is rather small in comparison.
After the meteoric rise of Firefox and the smaller increase in non-Microsoft desktops, building Microsoft and IE-focused websites is no longer an option. Though .NET does not inherently make this more difficult, it is much less of an issue in open source and PHP development. Also, having a mixed development environment only forces the issue even more.
10. The new guy
Before finding our new developer, changing platforms was a serious consideration. After God handed us a superstar, it was a given. You have very few chances to hire the best of the best and this was one of them. When you have that chance, you step out of their way and let them do what they do best. Accord to Jason Fried, "It's all a matter of trust. If you don't trust your developer to choose the right environment, then how can you trust him to build the best application?"
.NET has served us very well. As you can see by this list, the reasons for this change are very specific to our organization, our skills, our staff, and our development demands. Until we've been up and running for a year on the new platform, I wouldn't recommend one direction over the other to your church or company - only you and your team can make that evaluation.
We couldn't be more excited about the new possibilities that lie ahead and the chance to make a difference in people's lives. I'll continually post on the challenges and lessons as we make the transition.