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.
1. Developers
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.
3. Cost
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.
5. Security/viruses
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.
7. Community
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.
8. Examples
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.
9. Browsers
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.
This is really exciting news to me. I'm an Open Source developer and we/I do all our web stuff with Open Souce tools (PHP, Perl, Apache, MySQL, Mambo, etc.) at my church.
The news that Fellowship Church is moving in this same direction will help me to promote this direction to my leaders.
Also thanks for this Blog. It's already helped me in my position as a leader of our web team. It helped me to realize that my leadership was not as broken as I thought it was - that it's difficult to build a team of volunteers to do this.
Posted by: Brian Glass | March 24, 2005 at 01:36 PM
Thanks for writing this up. It's a very clear explanation of what we at Microsoft need to do to win back developers.
Posted by: Robert Scoble | March 24, 2005 at 03:22 PM
I understand what you are saying here. My one site was designed using ASP and an Access dbase on the back end and the cost compared to an equivalent system running PHP and a mySQL dbase was exhorbitant. For cost and flexibility reasons I have decided to redevelop that site so I can run it using PHP and mySQL on whichever platform works best for me instead of only on Windows servers.
Posted by: Paul | March 24, 2005 at 04:49 PM
Brian,
Great write up, thanks, but I find it hard to believe that one of the major factors in your decsion was based on your hiring of a 'superstar'. You tout the importance of platform\browser independence but you switch your whole IT infrastructure partially based on the hiring of a new employee. What happens when your superstar quits\gets fired\gets hit by a truck?
Also, I hope you evaluated Sharepoint\WSE 2.0\VS 2005\ASP.NET 2.0\Biztalk before making your decision.
Posted by: Michael Burns | March 24, 2005 at 05:18 PM
No Microsoft tax and stable...
Posted by: STJ | March 24, 2005 at 05:35 PM
Brian > Thanks for the feedback! I'm glad to hear this site has been helpful for you.
Scoble > I hope this helps Microsoft get better as I'm definitely a fan. And the Channel 9 Guy still has a prominent place on my desk!
Paul > Good to hear about similar experiences. We're going to use PostgreSQL due to our team's expertise.
Michael > As I said, the platform change was being seriously considered before our new hire, but finding him definitely helped make the decision. You'll also notice that it was reason number 10.
But you're right that we will be leaning heavily on him, but that is a reality of life on a small team; loosing any member of our group would have a huge impact. I'm sure 37Signals would be in a tight spot if their lead developer left.
We trust God to provide help in those situations and push forward with the skills we have at our disposal.
Posted by: Brian | March 24, 2005 at 06:29 PM
I am so glad I followed a link from Robert Scoble's blog to yours. It was truly a pleasure to read your writing.
Posted by: Andy Miller | March 24, 2005 at 06:34 PM
Top it up with Mono, http://www.mono-project.com, and you can still build asp.net application in case you need to in future.
Posted by: Rajiv | March 24, 2005 at 06:34 PM
What a refreshing view of life (and technology) - keep it open, inviting and allow those involved to try what suits them best.
Now compare this attitude to that of the InfoWorld CIO at:
http://www.infoworld.com/article/05/03/22/13OPconnection_1.html
who says:
"About every six months, a particular event in my life as a working CTO forces me to step back and reconsider the Mac as an enterprise platform. Sometimes it’s a discovery I make on my own as a PowerBook user, other times it’s a new software release. This time, it was a simple question from a new salesperson we had just hired: Can I use a Mac here? Peering over the Cinema Display connected to my PowerBook, where I had just been typing, I said, “If you promise not to ask for support or help of any kind, sure.” He quickly agreed to take a PC. This short exchange raised a few issues about Mac support in the enterprise that I hadn’t fully considered until now," Chad Dickerson writes for InfoWorld (Dickerson is InfoWorld's Chief Technology Officer).
Thanks
AM
Posted by: AM | March 24, 2005 at 07:26 PM
What about your current developers who are Microsoft trained?
Will you lay them off or retrain?
How do they feel about the switch?
Have you factored in these costs?
Posted by: B | March 24, 2005 at 07:53 PM
Isn't there a contradiction between your point 4 and 5?
"4. (...)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.
5. Security/viruses
Again, Microsoft has made great strides, but there is a clear advantage to using Linux in regards to security and stability."
Not updating your Linux servers leads you to the same securtiy problems you would have with an unpatched Windows OS.
There are several Linux security updates every month.
Greetings Stefen
Posted by: Stefen Niemeyer | March 24, 2005 at 11:43 PM
Are You There, God? It's Me, Microsoft.
Posted by: Coding Horror | March 24, 2005 at 11:53 PM
I have personal experience developing and maintaining web sites using both .NET and LAMP technologies. Each have proponents who can spend hours detailing the merits of one over the other. In reality both technologies have benefits and issues. However, it has been my experience that the mony you save developing with LAMP is spent 100 times over in its maintenance phase.
Posted by: Michael D'Haem | March 25, 2005 at 01:06 AM
This doesn't surprise me. I've been talking about 'open sores' solutions for churches and charities on my blog (Heal Your Church Website) for quite some time -- even though I pay the rent coding in the .NET framework.
I agree entirely with the reasons listed above, and along with that I might add the increasing ease-of-use now found in solutions such as Open Office, Audacity and Drupal just to name a few off the top of my head.
Mostly though it is about cost. Many churches do not wish to violate the law (some weird thing about practicing what they preach) so licensing is an issue ...
... part of this is that many churches are moving towards a lay-driven model in which basically staff jobs are outsourced to parishoners; hence the need for affordable web-based/web-native solutions .. using the internet as an intranet.
Good post guys!
Posted by: Mean Dean | March 25, 2005 at 01:07 AM
I read this is and actually think you're making the right choice. Your team sounds more hobbyist than professional developers and you'll be able to farm more of this work out to high school kids from the parish, etc.
This is a movement to the other end of the spectrum from .NET (as compared with J2EE). Sometimes, simpler tools for simpler developers are a great thing.
Microsoft should be more concerned if the folks at Fellowship Technologies start eyeing a switch.
You folks should definitely check out Ruby on Rails, it's even easier to work with than PHP and meets all of your other requirements.
Posted by: Drew | March 25, 2005 at 01:28 AM
Have a look at Python, too!
Posted by: Rob | March 25, 2005 at 02:34 AM
Okay, you've compelled me to blog about it ... but I am commanding my cult/readers to visit, memorize and live your list-o-10.
Please have ready for me your easy-to-render from Linux access logs so I can egrep and perl out those who've been obedient to my every edict and read your post.
Posted by: Mean Dean | March 25, 2005 at 03:16 AM
I have just done a project using the combination you have chosen. I really enjoyed it, postgreSQl is a pleasure, I used 7.2 it looks as if 8.x is better, and development in PHP is fun.
As for stability, it just works.
Having hired a Gun you probable need no hints but but just in case look at pgAdmin and the zend editor.
As for Linux and Apache, they work well and the netcraft statistics make it pretty clear they are the standard.
Posted by: Charles Esson | March 25, 2005 at 03:55 AM
My do people get so worked up about platforms? I'm surprised that I haven't seen a Calvin sticker peeing on a Penguin or the Microsoft logo.
I hate open source proponents because I'm not one and I hate the Microsoft faction because they hate the open source proponents! I think I need to attend Fellowship Church! Do you guys have a series on platform envy?
God bless Bill Gates, Steve Jobs, that creepy Ellison character, and Linus Torvalds.
Posted by: Jason | March 25, 2005 at 08:27 AM
Be prepared for your change in the following ways:
* Your Superstar cannot sustain great things alone -- try to recruit another superstar (maybe not quite as super, but at least stellar). Even uber-geeks need someone to bounce ideas off of, who can speak their language AND who have the same set of goals. Relying on a LUG mailing list, etc., is not the same.
* Do not dispair; change takes time. The decisions you've made are VERY sound (especially your decision to use Postgres for your backend -- Ingres is also a good choice). Your Superstar is human and will get bogged down, on occasion -- maybe even on several occasions -- with the overwhelming task of migrating a legacy codebase to new platforms. Think YEARS not months to get to the point where your decision takes hold. But you will see incredible benefits from the change -- benefits you can't even imagine, today. There are not enough words to describe the differences between living in a proprietary development environment vs the alternative. Just remember: Change takes time.
* Don't let anyone cast doubt on your choice by dwelling on the topics of money, savings, costs, expenses. Money is really just a means to an end -- not always the best metric for success, actually. There is no expense worse than the great unknown -- it is the ultimate business risk. When you have control over every line of code -- even the ones you haven't written and will never even look at, you reduce business risk, just the same. When the answer is, "I have no idea why the software did that!", coupled with, "And there's no way I can ever find out.", that is a desperate position in which to place your enterprise. You reduce a-thousand-fold the number of people in the world who can ever help you out of a bind.
* You are about to benefit from mountains of generosity. Try to give some of that back. Open up your platform for others see and to use. I don't advise this purely from an "obligation" point of view, either, but also for the sake of the many benefits it will provide. When you open your source code, you get the best possible feedback from users on the topics of bugs, efficiencies and new features -- stuff that one Superstar could not think of in so short a time. What did your founder say? "Cast your bread on the waters...", if I recall.
* The biggest impediment you will face in making this change is FUD -- the big Fear, Uncertainty and Doubt. I'm not refering to outside FUD; I mean the FUD *you* will have, from your gut. Until you have about a year of this F/OSS stuff under your belt and can see the real benefits take hold, you will have your moments. If there's anyone on your staff who feels like they're sailing uncharted waters, the fear factor will be thick. Honestly, I don't know a cure for this, except time.
* Be prepared for lots of long rants from people trying to be helpful. They tend to bulletize their thoughts and give you advice you didn't ask for and probably don't even need. In this regard, F/OSS should probably be renamed to something more appropriate, like MOM or DAD.
Good luck!
Posted by: Jon | March 25, 2005 at 08:34 AM
Thanks for the excellent discussion of a topic near and dear to many developers' hearts.
Manual trackback link in my sig.
Posted by: directorblue | March 25, 2005 at 09:25 AM
This is a fascinating post although I find it really surprising. My experience has been quite a bit different, but it's an eye opener nonetheless.
Posted by: Bill | March 25, 2005 at 01:42 PM
Thanks for the very enlightening post. I am about to setup my own space on the web, and will be going the LAMP way. I am not a coder, developer, or any such enlightened soul; but as an IT professional, I am aware of the benefits of FOSS. Proprietary code too often does give neither freedom nor choice. But I will use whatever (prorietary or FOSS) gets the job done well, and at minimal cost.
I like freedom; I like choice; and don't take too kindly to others thinking, speaking, and acting on my behalf. I have a brain, and I can think and act on my own.
Posted by: Vern | March 25, 2005 at 02:17 PM
I have just quit a 6 figure job as a Microsoft Consultant because of Open Source, and what it provides to my personal clients. Two years ago, you could not have seen this coming from me, but after educating myself about the opportunities and quality tools in Open Source - you would be shock. It is a matter of educating yourself, staff, and company. I saw a comment on Sharepoint Portal, and I will have to say - do you know how much this is for external license alone? How about 40K+ - for a church, maybe half or a quarter of the price. If you are Microsoft - have you seen Mambo Server (open source)? Desktop and Server NOS, have you seen recent strides by Ubuntu, Kubuntu, CentOS (Red Hat Enterprise - but free), Suse Enterprise Server, and others(look at this - http://www.flexbeta.net/main/articles.php?action=show&id=88&perpage=1&pagenum=3) - faster performance than Windows 2003 and with Domain Controller features (not new but interface is great on this one). The list goes on and on. You want CRM - try SugarCRM.com. Trust me, I have implemented - AD, Exchange, SharepointPortal, Microsoft Operations Manager, Systems Management Server, Project Server, Contenent Management Server, many other MS backend systems, etc - they all have comparable open source equivalent. It is cheaper to get a developer to modify an existing open source solution than it is to purchase and create or modify a MS solution. It's a matter of getting the right solution at the right price. There will always be a good mix of Microsoft and Linux solutions, but because of Open Source, the quality will be raised and prices will have to drop because the difference will be minimal and eventually non-existant. Microsoft paid my bills (and very greatful for the great opportunity), but open source will open more opportunities.
FYI...I was not fired or am a disgruntled MS employee - I still consult on MS related engagements, but I do not limit myself on Microsoft products alone - I want to give the best of breed solutions - from MS to Linux. Lastly, I am among top MS consultants.
Posted by: Llee | March 25, 2005 at 03:33 PM
Good article. I'm happy to see more churches moving to open source products.
Posted by: Anton Olsen | March 25, 2005 at 04:31 PM