This question keeps coming up a lot on Stack Overflow for some reason:
What was Stack Overflow built with?
Some even wondered if Stack Overflow was built in Ruby on Rails. I consider that a compliment!
This question has been covered in some detail in our podcasts, of course, but I know not everyone has time to listen to a bunch of audio footage to find the answer to their question. So, in that spirit, here’s the technology “stack” of Stack Overflow, the stuff Jarrod, Geoff, and I used to build it:
framework | Microsoft ASP.NET |
language | C# |
development environment | Visual Studio |
web framework | ASP.NET MVC |
browser framework | jQuery |
database | SQL Server 2008 |
data access layer | LINQ to SQL |
source control | Subversion (now Mercurial through Kiln) |
compare tool | Beyond Compare |
source control integration | VisualSVN (now, VisualHg) |
We have a few other minor dependencies as well, such as ReCaptcha, DotNetOpenId, and the WMD control (which we subsequently rewrote), but that’s about it.
September 21st, 2008 at 11:01 am
You clearly left out the most important fact:
What flavor soda was required to build Stack Overflow?
:)
September 21st, 2008 at 11:47 am
I’m curious, why did you choose VisualSVN over TFS?
September 21st, 2008 at 12:27 pm
Interesting, you guys used everything that I use in my everyday at work except for the MVC framework. We are waiting for it to get out of beta.
September 21st, 2008 at 12:42 pm
You mentioned in a podcast #22 about the cpu usage – I’d be interested to hear about the server setup SOF is running on – how it’s holding up (especially after a slashdotting), and what plans you have for scaling
September 21st, 2008 at 12:54 pm
I dont know if you are fielding questions on this topic, but I would like to know what technology you used for your dal. Did you guys run with linq to sql, or did you use something like nhibernate.
Jesse Foster | jf26028
September 21st, 2008 at 1:41 pm
1 out of 9 (jquery) ain’t bad.
September 21st, 2008 at 2:04 pm
That’s a lot of expensive tools for a very simple website… No wonder there are so many C# guys on here.
September 21st, 2008 at 2:31 pm
@Jesse Foster: From the podcasts, they’ve indicated quite a bit of LINQ usage.
September 21st, 2008 at 2:47 pm
So how did you guys implement those REST-ful URLs? Isn’t ASP.NET really bad at that out of the box?
September 21st, 2008 at 3:10 pm
>sergey asp.net MVC
September 21st, 2008 at 3:55 pm
Nice :) It’s nice to see such a large project based on ASP.NET MVC :) Are you going to open source it?
September 21st, 2008 at 4:16 pm
Microsoft stack?
Let us know how that works out for you.
September 21st, 2008 at 5:24 pm
What was the reasoning behind going with Team Suite? Was there some particular feature that you just had to have?
With only three developers even VS2008 Express Edition would probably suffice.
The only other reason I can think of would be if you happened to have a few licenses for Team Suite lying around (quite likely seeing as you worked with MS technologies in your old job).
September 21st, 2008 at 5:47 pm
Last I checked, plentyoffish.com was running on the microsoft stack, on half a dozen servers, maintained by one programmer spending a couple hours a day, and had enough traffic to bring in a million bucks a month in google ads. So I suspect it will work out just fine.
September 21st, 2008 at 6:30 pm
Lots of FUD are among the developers about the Microsoft stack. There are a lot of stable, fast and well build sites that shows otherwise.
September 21st, 2008 at 6:45 pm
.net indeed
September 21st, 2008 at 6:51 pm
plentyoffish is one of the worst looking sites on the web…image scaling on it is just horrible
what i’m trying to say is that that site’s success has ZERO to do with .NET being a good technology – if the kid that started it knew PHP the site would be just as successful
September 21st, 2008 at 7:13 pm
When do you plan on releasing the ER diagram? :)
September 21st, 2008 at 7:25 pm
@dkaz – it doesn’t matter how the site looks or if it would’ve been built in some other language had the dude known php to start… the point was to illustrate that the technology can scale to meet demand very easily.
September 21st, 2008 at 11:09 pm
And some PHP/wordpress for the blog…
September 21st, 2008 at 11:41 pm
LOL @ people who immediately think Microsoft = FAIL.
Anybody can make a bad application out of a good framework. On the other hand (though not conversely) a good programmer (or a bunch of good programmers) can make good applications out of almost any framework.
September 22nd, 2008 at 3:16 am
Just wondered guys if you’d include your server architecture and plans for expansion or are you using a single server for the whole application as suggested in podcast 22
September 22nd, 2008 at 5:29 am
You also use Log4Net, at least you say so in this podcast.
September 22nd, 2008 at 5:56 am
“LOL @ people who immediately think Microsoft = FAIL.”
There are indeed a lot of people with this mindset. I am only to an extent. When it comes to guys like Jeff and his colleagues, I’m not the least bit worried. These guys KNOW WHAT THEY ARE DOING. They are not sixth graders starting their family website. I am fully confident that they can make this work without any REAL trouble on whatever platform they choose.
I worry about Microsoft websites that are run on Microsoft because the maintainer doesn’t know anything else exists, or if he does, he doesn’t know how to use it. He makes all his pages in Microsoft Frontpage (or worse, Microsoft Word), and each of his pages has a FP Extension hit counter that doesn’t even match the website.
There are WAY to many websites like this on the internet, and they make Microsoft look bad.
September 22nd, 2008 at 6:28 am
You also forgot to mention the WDM control there Jeff!
September 22nd, 2008 at 10:25 am
Matthew,
The same can be said of just about any other website. What about all those websites being hosted that run not a single bit of MS with scripts to keep the masses happy?
This is pure MS hate at its worst. Its pathetic really and, if at all possible, technology bigotry at its worst.
September 22nd, 2008 at 11:37 am
You used linq for the data layer, did you have any data logic in stored procedures, or is it all within your link layer?
September 22nd, 2008 at 11:51 am
Matthew,
You’re right, there’s a lot of bad websites that are built with Microsoft technologies that make MS looks bad.
On the other had there are also a lot of developers out there with the capabilities such as Jeff and his colleagues.
ASP.NET MVC is a very nice and extensible framework.
You can use NHAML as the template engine, MySQL as the database and can even run on Linux with Mono if you want to go completely free.
September 22nd, 2008 at 12:35 pm
There are just as many PHP sites that make PHP look bad as there are MS sites that make MS look bad. Nature of the business I am afraid.
September 22nd, 2008 at 1:07 pm
What bug tracking software are you using?
September 22nd, 2008 at 6:36 pm
> You also use Log4Net, at least you say so in this podcast.
We do not use Log4Net any more.
> You also forgot to mention the WDM control there Jeff!
Good point, added that.
> are you using a single server for the whole application as suggested in podcast 22
Yes, although we may buy a 2nd server to act as the database host — and from there we could get a 3rd server to split the web load. Hasn’t been necessary yet though.
September 23rd, 2008 at 1:59 pm
The link to Beyond Compare says from=codinghorror :-)
September 24th, 2008 at 8:07 am
What are you using for syntax highlighting?
September 24th, 2008 at 10:06 am
PLEASE PLEASE PLEASE state how you are producing the nicely highlighted “revisions” diff histories on questions and answers that have been edited. Is there some C# or MVC tool for that? Or is it third-party? Or did you roll your own? I must know. It’s well done and I would love to use the same tool, if possible.
September 24th, 2008 at 10:27 am
Did you guys stop using Log4Net because of that deadlocking problem you had? There was no way to get around that and still use Log4Net? So what do you guys use now?
September 24th, 2008 at 12:31 pm
What do you use as a full-text search engine? SQL Server? Lucene.NET? Something else?
September 25th, 2008 at 11:57 am
Can you please elaborate on “LINQ to SQL” for data access layer? So you do have a dataaccess DLL that have LINQ statements and spits out objects for consumption up the stack?
September 25th, 2008 at 12:14 pm
Heh, I notice that you avoided my question about bug tracking, but the 23rd podcast answered it: none!
September 29th, 2008 at 2:19 pm
@Jordão
In a podcast they said they were using Lucene.NET
September 30th, 2008 at 2:36 am
> I notice that you avoided my question about bug tracking,
Yep, I avoided it so well the answer is on the header of *every single Stack Overflow web page*! Man, I’m sneaky!
September 30th, 2008 at 11:56 am
Did you guyes change your mind, or are you using Lucene.NET (http://incubator.apache.org/lucene.net/) for indexing/searching?
October 3rd, 2008 at 10:02 am
Hi,
This seems to be pretty complex code might have implemented for this site.
Can we can see any samples or part of code.
October 8th, 2008 at 3:25 pm
Jeff, congratulations!
You managed to pull this project in a short period of time using bleeding edge technologies. You have solved inherent problems (such as the concurrency problem you have blogged about – btw that is why you dumped log4net?).
You are the man ;)
October 9th, 2008 at 7:57 am
Were you guys doing any continuous integration? If so, what did you set up?
Also, is the site still based on Preview 3 of the MVC framework or have you moved on to the newer revs?
October 21st, 2008 at 2:26 pm
> We do not use Log4Net any more.
Care to tell us why, I’d say the log4x is a compelling technology to make ‘universal’ logging.
> Yes, although we may buy a 2nd server to act as the database host
As SO is quite popular, I’d buy a 2nd server just in case the first one falls over. That’d be embarrassing :) (and quite stressful and a right hassle, he said from experience)
I don’t think you’ll have performance problems yet, you only have 32k questions. It’d be interesting to publish web stats on the site though – users, hits, bandwidth, cpu load, memory usage etc etc etc.
November 7th, 2008 at 10:30 am
I’d have never guessed that stackoverflow was built in ASP.NET…. I thought PHP for some reason. :-) [I'm a fan of PHP so take that as a compliment]
Best Regards,
Frank
December 11th, 2008 at 6:41 pm
I was wondering about the VisualSVN integration with Visual Studio 2008, how good is that in comparison to VSS? Cheers!
December 18th, 2008 at 6:37 pm
do you plan to share the source code of StackOverflow?
December 26th, 2008 at 2:41 pm
Just a question: If you *had* to build it using free and open source tools, what would you use?
January 9th, 2009 at 12:52 am
> This question keeps coming up a lot on Stack Overflow for some reason
It might help to make this an SO post instead of a blog.
January 20th, 2009 at 4:50 pm
I was forced too to abandon Log4Net after a few months of use. The internal deadlocks and other bugs forced me…
March 18th, 2009 at 1:59 am
Good list, Jeff :D
April 7th, 2009 at 2:53 am
Nice .Net :D
August 22nd, 2009 at 10:48 am
I see people abandoning log4net due to lockups and other issues, what logging framework did you end up moving to?
November 18th, 2009 at 9:53 am
Please correct me if I am wrong, I feel that using CMS like Drupal or perhaps wiki wud have been easier as well as faster for making a website like stackoverflow. So, why choose the ASP.net framework over them?
January 8th, 2010 at 6:34 pm
@saurabh,
“Please correct me if I am wrong, I feel that using CMS like Drupal or perhaps wiki wud have been easier as well as faster for making a website like stackoverflow. So, why choose the ASP.net framework over them?”
Because then it would have sucked.
January 28th, 2010 at 11:47 am
@Alex re @Saurabh,
When you have a hammer, everything looks like a nail.
March 5th, 2010 at 3:47 am
Dont get me wrong.
1. Microsoft?
- why not Aix or Solaris?
2. MSSQL?
- why not Oracle or PostgreeSQL or Dbase?
3. ASP?
- why not tomcat and jsp? NASA using it. god those craps.
4. C#?
- why not Ada/C which have pointers and preprocessing only, and nasa shuttle use it? god all those lies.
** Thanks to stackoverflow to cut those craps and shits.
** some orgranisations are making microsoft so unpopular. That when they smell in our face we are microsoft, they just burn us and try to put in ground, and never come back.
** I would also wish if stackoverflow/google/yahoo cut the crap of “drupal/zend/cakephp/smarty/symfony” and tell USA whitehouse never using drupal anymore, we use our own ideas/frameworks.
God bless stackoverflow, i liked it, many thanks…
April 13th, 2010 at 4:44 pm
“This question keeps coming up a lot on Stack Overflow for some reason: What was Stack Overflow built with?”
Probably because non-programming folk admired the site and wanted to do something similar. I did. So when I found out about Stack Exchange today (today!), and how it is having to reinvent itself after 6 months because of lack of use… well I think ironic doesn’t even begin to cover it!
August 24th, 2010 at 4:14 pm
Here’s another question… do you guys use any cache software (MS Velocity? Memcache?)
September 5th, 2010 at 6:57 am
i thought it’s PHP&MySQL :(
October 19th, 2010 at 12:46 pm
This site was built with wordpress. whats with all the fud geezer?
November 10th, 2010 at 11:15 am
did you a or mapper, how did you create the object from your database , llblgenpro
November 28th, 2010 at 5:11 am
@WP-Guru : The BLOG is made on wordpress. :)
December 21st, 2010 at 1:40 am
Not that I was expecting better, but man, people hate the fact that good things can come out of Microsoft technology.
January 20th, 2011 at 12:19 am
What about caching? Does SO use Redis for caching?
March 4th, 2011 at 11:38 pm
What about caching? Does SO use Redis for caching?
April 1st, 2011 at 4:20 am
You forgot the core componment;
Jon Skeet.
April 18th, 2011 at 10:56 am
How many developers worked on the original product?
May 21st, 2011 at 6:31 pm
Awww this made me sad :(
May 29th, 2011 at 9:46 am
I love this stack.
Feels good to know some people are really thinking.
October 20th, 2011 at 12:19 am
Glad to enjoy your good blog.I have read your blog.I like it very much.I would be your Loyal readers.Expecting your next blog.If u do not mind ,u can go to our website ,and communciate with each other.Many thanks.
caiyifang/comment201110