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.
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.
16 thoughts on “WordPressMU: Making a smart platform choice”
that takes some serious acrobatics to try to turn that into a negative.
i mean, i can’t really get my head around everything drupal can do either, but i think that’s a good thing for a platform, not a bad thing. for an application, that might be a negative, but to discuss them in those terms would break your metaphor.
Great post and I agree with most of your points.
I do question whether PHP resources are any less scarce in Miami though, especially if you factor in the level of talent necessary to modify WordPressMU into a social networking application (I have no experience w/ WordPressMU whatsoever, but considering that WordPressMU is after all a blogging platform and not exactly a social networking app, I would expect some non-trivial work would have to be done). In any case though, we’re working in an era where you don’t have to live in near proximity in order to work for a company, so the point is moot.
The point which should really tip the scale should be Functionality for Free; if you can leverage WordPressMU so that it will cover a majority of your requirements, then going with WordPressMU is a no brainer. Probably one of the hardest parts of a social networking app is content management and customization, and if you can get that for free, you’re more that halfway there.
Out of curiosity, I trended the job market for PHP, Python, Rails, and .Net in Miami:
.Net is by a large margin the clear winner. However, if you exclude .Net, PHP is dominant.
Some of the things you said about .NET are a bit harsh and inaccurate.
When you say .NET doesn’t conform to standards what do you mean?
Not using DIVs and Stylesheets? It doesn’t by default, but from .NET 2.0 is has an option to do so.
.NET provides heavy lifting – not all of which are code generated which includes transparent database access (not just MSSQL). It abstracts away a lot of things and provides you with a mechanism to componentify certain elements and make them reasonable with just adding one line to the ASPX file.
I know you said you didn’t distinguish between language and platform, but in the case of .NET it’s important to know that all the things you were talking about are just ASP.NET (and possibly ADO.NET for database access).
Regarding buy outs – Writely was written in .NET (or more specifically ASP.NET) and that didn’t stop Google from buying them…
Eventually, for the big guys, the value is not only in the code itself, because that is interchangeable. The value is usually the community since most of the cool deployment/server code/performance improvement are already used by them or they have the rightly trained and knowledgeable people to write this up.
I won’t go into one by one details as to why to pick .NET or any other platform/language since it’s bound to escalate into a flame war 🙂 I’ll just say that you should give ASP.NET (specifically 2.0) a bigger chance (combined with AJAX.NET of course).
I’m sure that after that you’ll be more knowledgeable to make this comparison again. While it will probably won’t change your choice at the end, it will shed more light on .NET and ASP.NET.
You also forgot to mention Mono which gives you the same functionality in open source running on Linux. While it is not yet there in terms of performance it will get there.
I’ll have to come back to this when I have more time but other examples include 9rules.com which I was able to put together using WordPress and BBPress and also AnimationBlogspot.com which I created the infrastructure for with WordPressMU.
I’ll have more on this… just don’t have the time right at the moment.
I’m confused on how you can criticize a platform that you volunteer the fact you have little or no experience with.
You can do ASP.NET without using a single Microsoft product in a fully open source environment. You can do ASP.NET as web standard or not as you desire. ASP.NET can do as much or little of the “heavy lifting” as you desire, and you can drill down and redo any portion of it you desire. There are multiple opensource code communities to support ASP.NET including a ton of code on SourceForge.
As for the superiority of PHP and LAMP developers, I’d say there is just as much hackneyed crap in there as you can find in some Community Server themes. The main issue with relying on what is freely available on the Internet to build your skillset is you have no reference by which to judge the quality of the work that you are reviewing, and can learn really poor skills quite easily.
There are coders I know, and respect, who have chosen Ruby, PHP, Python, etc. but I still enjoy to work with, and plan to continue, working with .NET as long as I can. And I have no Enterprise or ASP classic experience.
OpenID is not working on your blog.
Some .Net corrections (not meaning to take away from points on the other frameworks):
ASP.NET 2.0 is XHTML and CSS 2.0; failure to use it this way generates warnings in Visual Studio.
Visual Studio Web Developer Express is free, as in beer, and for commercial project development.
ASP.NET apps with AJAX, can be developed very quickly. Take a look at the videos on http://asp.net to see what I mean.
You are just MS hating. MS’s slimy business practices aside, .NET 2.0 is just as good as the other platforms you mentioned. As for the community aspect I agree both the other platforms have a lot more “vocal” community. But are you building a business or trying to win a popularity contest? I would carefully consider the cost of a platform switch (particularly its impact on test and ops) before making any changes. Are you really delivering more value to the investor or just wanting to play with trendy technology?
Also the statement “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.” seems like a lot of marketing BS to me. Do you really believe this? Channel 9’s crappy table layout may be inelegant but it renders on every browser and your customers don’t care if the website they visit is using floated elements or tables.
Politics should have nothing to do with your decision. As the employee of a startup company you are building a business, not running for office. Some investor somewhere has entrusted you with a lot of money. And I guarantee that all that investor has in mind is a return on their investment, and not that you are hanging out with the cool kids.
I’m not a programmer but I have to ask: why not use Ning and skip the whole process?
As a non-geek I can’t speak to the technical arguments here but I can tell you that I’m using a .NET platform (Blogtronix) for some client projects because it is an excellent blogging and aggregation platform with a number of standard community features (profiles, personal networking, ratings, bookmarking, etc.) already built-in. Reuters is using it for its new Reuters Interactive site (www.reutersinteractive.com) and I have a personal site that hasn’t been upgraded to the latest version at http://www.socialmediatoday.com Maybe this is a non-techie way of looking at things, but shouldn’t you always start the selection process with the software and platform that comes closest to doing what you want it to do out of the box?
I’d agree with you that at first ASP.NET reflected Microsoft’s culture of not caring much about web standards, but a lot has changed since ASP.NET 1.0 and 2.0.
ASP.NET 2.0 has much better support for standards and tableless layout (look into CSS Control Adapters).
Sadly, not every group embraces it at MS, but there are many developers on the ASP.NET platform who do embrace it. You shouldn’t use Channel 9 as an indictment of ASP.NET just because that site uses tables for layout.
Look into the “ALT.NET” movement in ASP.NET and you’ll see there are many who do “get the web” on ASP.NET.
At the time of this comment, for example, your site’s homepage doesn’t validate:
Mine, built using an OSS blog engine with ASP.NET, does.
Of course, that could change at any moment if I happen to post non-validating comment.
The point here is that in any system where a user can post HTML, it’s challenging to support web standards. You can violate web standards in *any* platform, not just ASP.NET.
“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. ”
completely untrue. these guys should build in whatever they are good at..
The only two social networks I can think of using asp (not including a microshaft product) are orkut and youtube. Both were bought out by Google.
Re: standards compliance: one headache you have with .NET is that its controls generate lots of extra divs everywhere, and have accessibility problems. in the UK, accessibility requirements are law, and we’ve been burnt by this several times with clients recently, where .NET just refuses to budge on the issue.
Which brings up my next point: closed source. I manage projects these days rather than code — but in my spare time I code in Rails. It really is an odd thing not to be able to step into the library and figure out what the hell is going on. I’ve always, always been able to do that (Metrowerks C++, Java, PHP, and now Rails, with everything except runtime.lib back in THINK Pascal in 1990.) My poor team mates!
My experience is that PHP is more widespread, but you can get less disciplined programmers, as PHP doesn’t really encourage much in the way of, well, any kind of structure. One consideration is to advertise for PHP programmers who want to move to rails — then you’d get the best of both worlds. But mupress certainly is a great product.