I recently engaged in an interesting discussion with a client about their choice of platform technology for their website and community build-out. Their current website is built in .NET and they're getting to the point where things are about to start getting set in stone in terms of scaling and overall architecture and it kinda freaked me out that they'd continue down this path using a platform that I think offers little when it comes to organic community-building or much in the way of "doing web things right". I decided I'd write up my arguments for switching platforms in the hopes that I might test my thinking and in the process persuade our client to move to a more community-forward platform.Note: For the sake of simplicity I'm using "platform" generically to indicate both a language and the frameworks and applications that are built on top of it. I'm over-generalizing when I say PHP, Ruby on Rails or Django since I'm also thinking about respective benefits like WordPress, integrated prototype.js URL Dispatcher and so on, not to mention the communities that surround these and related projects. Just know that I'm not only talking about the language when I mention them by name.The conversation sprang from a discussion about building out a participatory community architecture... y'know, the standard stuff: regular posts, profile pages, friending, syndicating content, forums and a functional API. They'd been public a couple months, having spent most of their time on their content-creation tool and were finally ready to start investing in social features to encourage folks to share more content and engage with one another in the context of a nascent community. As such, the first question I asked the client was "Why .NET?" Now, I'm not a .NET hater or anything — in fact I'm quite ignorant of it save the brief stint of ASP programming I did a looong time ago (which probably no longer applies). But at the same time, from what I've seen and heard, .NET is simply not a web-friendly (read: standards based) platform for building a people-powered Web 2.0 community on. Instead, you need something agile and lightweight, something widely deployed, open source and for which there is a great deal of available talent who "get" the web, love the web and can role up their sleeves under tight deadlines and morphing design objectives and execute. In my limited purview, that is not my impression of .NET. So, the options that I suggested in place of .NET were Ruby on Rails, Django and PHP (mostly relying on WordPress MU). Let me explain how I evaluated and then dismissed all but the last option. Ruby on Rails is hot for a reason. It's an elegant language that's actually fun to program in. And it does a lot of the heavy lifting for you, leaving developer-designer hybrids to focus on meatier issues like feature development, user flows and the overall experience of an app. But it's also limited in its server-side deployments, fairly heavy in its server-side requirements and while there's a passionate community behind this platform, its denizens are pricey and few and far between. As well, due to its facility, many new developers claim to be Rails developers when in reality they're not seasoned with the realities and limitations of working in constrained or managed environments. This is a risk that can prove very costly unless you're working with experienced and dedicated developers. Given that the client is located in Miami where Rails talent is scarce, I felt that, while it'd be a great choice for a small technology-forward team who can afford to stay small and on the bleeding edge, the team needed something with a longer history, that's more widely deployed in typical hosting environments and for which there is ample available talent. Django is an interesting and exciting Python-based framework that's very well architected and very fast. I heard that Rails-creator DHH wouldn't have developed Rails had Django existed a couple years back. In any case, Django, like Rails, takes a lot of the complexity out of development. But again, it's a situation where, soup-to-nuts, the fit might not be quite right given longer term considerations that don't always exist in independent web development shops — and given the same concerns that I expressed above about Rails. Both are excellent frameworks and you could correctly argue that both of these frameworks require fewer developers, and shouldn't be evaluated from their respective community-sizes. But you'd still be tasked with finding sufficient and dedicated talent to support your choice on the server side and when that's not your core business offering, it's something of a distraction to struggle with hosting demands when you really should be building your product. When you're 37Signals you're naturally going to attract (and retain) top talent; when you're a new startup things aren't so certain, regardless of how excellent your software, vision or team are, and bringing in the right people is the hardest part of growing your enterprise. While I'd love to make a recommendation for one of these sexier frameworks, ultimately I'm going to recommend PHP and WordPressMU in this particular case. I've talked about some of the strengths of Rails and Django and for somewhat peripheral issues I've discounted both (not to mention completely dismissed .NET for similar and worse issues). I'd like to talk about why I think building a social network application in WordPressMU and PHP makes sense and how I came to this conclusion, keeping in mind that you should be comparing this list primary against .NET's offerings rather than the other two frameworks.
- Employment. First and foremost is the issue of attracting experienced talent that also gets and respects the web. In Miami, you're going to be hard pressed to find .NET developers who don't have an enterprise background let alone talented Rails or Python developers. In contrast however, I think you'll find a lot of PHP and WordPress developers who would love to get into building a social network application. Call it a hunch, but I think the PHP folks will be more savvy to the issues present in building web apps than the local .NET types.
- Open source. Part of the employment problem lies in the awareness and visibility of .NET developers. Since most have an enterprise background, little of their code is available to be downloaded, played with or reviewed. Furthermore, it's extremely difficult to gauge their strength with online communities or how they are to work with or how comfortable they are working in the open. Since WordPress and PHP are open source, it's much easier to get a sense for what someone is capable of simply by looking at the code they've produced in WordPress plugins and the like.
- Web standards. From what I've seen and heard (take a look at Channel 9 and their table-based layout), .NET doesn't promote web standards or attract savvy web developers. It attracts programmers who are used to a Microsoft world with Visual Studio and form controls and generated code. If you download the basic Community Server theme and peek inside, you'll see what I mean. Appreciation for web standards is an ever-more critical attribute of a mindful developer who understands that their work may end up being experienced in environments they'd not tested in. Adherence to web standards and open data formats can help mitigate both the cost and pain of the development of new web-based environments and platforms.
- Community. You should choose a language or framework for the community as much as you do the language itself. While I agree with Jason Fried that developers should choose languages that they like to work in (as designers choose tools they're comfortable using) but I also think that it's important to choose technology based on the community support you're going to get by going in that direction. I have no experience with the .NET community but can say that my firsthand experience with the WordPress community has always been top notch.
- Economics. I mentioned the issue of hosting and I think this is where WordPress really shows its value (at least for the near future). Matt's made it a point that WordPress is going to continue to be based on PHP 4 until there is a compelling reason to upgrade. Since PHP 4 is completely ubiquitous in both script and hosting support, it's easier to find hosts and sysadmins that are familiar with scaling and deploying PHP infrastructure. This keeps hosting infrastructure costs down as you can build out through commodity service rather than the more specialized hosting needed for Rails and Django.
- Scalability. This one's highly contentious but I'm only going to draw the comparison here between scaling with the Microsoft tax and scaling without it. With enough technical know-how and hardware, you can scale most anything. The question comes down to how you want to feel when scaling. Personally, investing in Microsoft hardware freaks me out. I can't explain it, it's not rational, but it needs to be considered.
- Politics. Let's face it, your choice of platform should reflect your politics, and I don't mean Red or Blue. I know that coming out in favor of WordPress is political speak; after all, it's a matter of opinion and not fact which framework is best. However, I think people familiar with modern web design would agree with me that WordPress/PHP, Django or Rails are all superior choices over .NET when it come to the politics of technology development. In terms of openness, being forward-thinking and in terms of community outlook, any of these choices are going to net you a very different kind of response. Being keen to what each choice says about you is key to making a wise decision.
- Buy out considerations. This isn't something I usually put much thought into, but given the current environment, I think it's worth considering. The simple way to think about this is that like attracts like. Yahoo is a PHP shop — and converting from Rails to PHP — as Upcoming did — was probably a bit of a pain. YouTube is Python-based and given that Google is a primarily a Python shop (though they talk in all flavors) that probably played into the attractiveness of their technology. Now, I won't say that your choice of platform will ever make or break a deal, but I've just not seen a successful .NET buy out by the open source friendly incumbents. Unless you consider Microsoft buyouts.
- Functionality for free. One of the great aspects of working in open source, of course, is the ability to reuse the work of others. In the case of WordPress, there are literally thousands of themes and plugins that you can use or learn from when building out your blog or site. Given that so many basic problems have been solved, it only makes sense to go with a proven platform known for its usability and ease of extensibility.
- An overall strategy. I'm still a huge fan of Django and Rails -- in fact most of the other projects that I work on start out in one of these frameworks. But when it comes to building a social network with periodic posts being published in a blog-like fashion, it only makes sense to go with WordPressMU. I think this is a solid, lower cost way to move forward, with a higher likelihood of higher local talent and keeping up with the latest trends at the same time. Now that BBPress, WordPress' forum system, can be easily integrated into WordPress, there's yet another reason to choose WordPress.
Lastly, I want to make a special mention of ChickSpeak, probably one of the first independent social networks driven wholly by WordPressMU and BBPress and a great example of what a WordPress-based social network might look like. I think there are a ton of lessons to be taken from this site, and I hope a great number of plugins that can be extracted. I'm eager to hear people's thoughts on this, though I won't be able to respond for at least three weeks as I'm literally headed out the door to Hawaii for like, my first evar vacation. Hopefully you'll keep things civil while I'm gone. Apologies in advance for any rambling or unclear language. And I should note that Drupal could also be considered for this purpose, but that it's lack of narrowly-defined features and interface makes it too much of a beast to coral into a finely-tuned and disciplined bloglike site.
💬 Comments from the original post