StackExchange- The Stack Overflow Knowledge Exchange Platform
stackexchange.com
stackexchange.com
Spolsky is really more of a silent partner in this (maybe not so silent publicly, but the impression I get from their podcasts is that he is involved only on the business end).
None of that means he can't be a brilliant programmer. I'll admit to being a little surprised that SO took off as it did, and I certainly don't think that being relentlessly hyped again and again by both blogs explains all of that success. But I'm not sure why that proves me wrong; am I supposed to start liking Atwood's blog now? I opened it to have another look; the top post starts with a pronouncement that "abstractions are powerful things" (oh God), and then goes on to tediously argue that they invariably leak, but are still powerful things. No thanks.
To be honest, this is not even something that Joel and, perhaps, Jeff haven't said themselves.
Proprietary software: OK, so technically it both exists and works, but it costs money.
OSS: It has only had one man-week of labor in it. The software is not feature complete. However, if it actually worked, it would be awesome because you'd be able to browse your corporate knowledge base on your Wii. Also, it would support browsers without Javascript, because your office is cool and lets workers change things like that.
Successful open source projects -- the ones you use, the ones you love, the ones you have heard of -- are the exception. Projects like this are the rule.
Any 12 year old who gets an idea for a game can put up a project on sourceforge. However, proprietary software has steeper barrier. Typically, it comes from people in an established company if not an entrenched bureaucracy. It's more interesting to choose projects that have achieved certain milestones (beyond one man-week of labor as you put it).
As well, there are plenty of proprietary projects that have failed and you have never heard of and never will. Data about failed proprietary projects is much more difficult to find. However, open source projects are almost entirely transparent about that kind of thing.
FTFY. In other words, most software suck and fail, open source or not, welcome to reality.
Also, here is a full working clone of stackoverflow http://code.google.com/p/cnprog/ hosted here http://www.cnprog.com/
Let's assume, for sake of argument, that you decide it's okay to write it in ASP.NET MVC, and that I've decided to hand you the StackOverflow source code, page by page, so you can retype it verbatim. We'll also assume you type like me, at a cool 100 WPM (five characters per second[1]), and unlike me, make zero mistakes. StackOverflow's .cs, .sql, .css, .js, and .aspx files come to 96.5k. So merely typing back in source code that already exists will take you five hours if you make zero mistakes and deploy on the same platform they're doing.
Except, of course, you're not doing that. So even assuming that it took you a mere ten times longer to design, type out, and debug your own implementation, that already has you taking more than your whole weekend, even if you stayed up coding straight--and I don't know about you, but I am okay admitting I code considerably slower than ten times slower than I copy existing source code.
Well, okay, I hear you say. Not the whole thing. But I can do most of it.
Okay, so what's most? There's simply asking and responding to questions--that part's easy. Well, except you can't let people upvote their own answers, so you need to block that. And you need to make sure that you don't upvote or downvote a person too many times in a certain amount of time, to prevent spambots. Probably are also going to have to implement a spam filter, too, come to think of it, even in the basic design, and you also need to support user icons, and you're going to have to find a sanitizing HTML library you really trust and that interfaces well with Markdown (provided you do want that awesome editor they have, of course). You'll also need to purchase, design, or find widgets for all the controls, plus you need an administration interface so that moderators can moderate, and you'll need to implement that scaling karma thing so that you give users steadily increasing power to do things as they go.
But if you do all that, you will be done. Except, of course, for the full-text search, espcially the search-as-you-ask feature, and user bios, and having comments, and having a main page that shows you important questions but that bubbles down steadily. Plus you'll want bounties, and handling multiple OpenIDs per user, and having email notifications, and supporting JavaScript-smart tags, and having user-configurable badges (you are going to do user-configurable badges without forcing your user to learn PHP and write hooks, right?), the history of your karma, upvotes, and downvotes. And the whole thing has to scale really well, since it could be slashdotted at any moment.
And we haven't even touched things like supporting upgrades, internationalization, karma caps, CSS so it doesn't look like ass, and all the little things under the surface that no one ever sees, but that you need to run the site.
To be really blunt: anyone in this forum who honestly thinks they can do all that in a weekend is so ridiculously full of himself that I want him very far away from any project that I'm involved with.
Well from one of the recent podcasts it sounds like Jeff is set against doing internationalization. And Joel is showing admirable restraint in not strangling him.
We have documented evidence in the form of podcasts that it took a team of 3 talented developers about 6 months to build StackOverflow. If you're looking for an order of magnitude estimate for how long it would take to reproduce it, that's it.
How exactly are you planning to reduce an 18 man-month project down to a single weekend of your time?
More generally, why is this attitude so common among programmers? How, in the face of documented proof to the contrary could an intelligent person like the parent still consider a site of the complexity of StackOverflow to be a "weekend job"?
The boil it down to a cliché, copying what someone else has built is exactly the same problem as rewriting an existing application from scratch, without the benefit of being able to read the source code.
So, yeah, be wary of "hey, that looks easy!", but don't think things are impossible either.
Also, with something like SO - you can pretty much see the models, and how they interact. That's already giving you a lot.
"Shit's easy syndrome" http://steve-yegge.blogspot.com/2009_04_01_archive.html
The restrictions are along the "meta" parts (voting to indicate the quality of an answer), I think it is entirely sensible to restrict these actions to users who have built up a currency of trust within the SO community.
That being said, I think you are onto to something around the user experience. Perhaps an option shouldn't be shown to someone if they cannot perform it.
That would be really annoying, because you wouldn't know that these options exist, until you could use them (i.e. you're possibly confused and you don't know what the reward for collecting reputation is.)
Better grey out the things you aren't allowed to do yet, so you can see them and see that you're not there yet - preferably with an explanation of when you will be.
I forgot what the term for this is, but I think it's very often a good way to do it. Stable interface? Something like that.
PS: Don't forget to open source it.
Here's another, also in Django.
There's a download here: http://code.google.com/p/cnprog/issues/detail?id=28
but I don't think it is production-ready yet....
http://code.google.com/p/hackerexchange/
I'm aware of the chinese solutions done in Django but after looking it over, I think I can do better.
I'll prolly write it in PHP too (gasp) so any n00b can basically rip it off and throw it unto shared hosting! ahh, gotta love opensource =)
Weekends plural? I thought this was only going to take 1?
And there is no reason to be stuck on a $999 plan on a shared server, if for $300 bucks more you can get unlimited + dedicated server.
Seems like the $999 plan should be $499 instead, and the $1299 plan should be $999.
And come to think of it, the pricing seems pretty high. Let's face it, the software is very simple and could be duplicated very quickly. Why pay $999/mo, when you can have a few hackers code it up in a couple of weeks for a few grand.
Hell, someone should do it here, would be a decent startup idea, copy them, but charge $29.99/$59.99/$99.99 for your plans.
The long road of our industry is littered with the corpses of projects which would only take a few programmers a couple of weeks to program. But technical risk isn't the big worry here for a startup.
Hell, someone should do it here, would be a decent startup idea, copy them, but charge $29.99/$59.99/$99.99 for your plans.
That hypothetical startup would be:
a) Trying to market the product without having a successful reference implementation available and without having Joel & Jeff to bootstrap the reference implementation.
b) Be aimed squarely at the low end of the market. (i.e. penny-pinching pathological customers rather than enterprises for whom $1,000 is inconsequentially cheap if it brings projects in on time) This buys you some very fun customer support duties.
c) Need to sell minimally several dozen companies on a quirky knowledge-base type product per FTE they wanted to support.
d) Get to compete on search advertising with someone who can afford to outspend them ten-to-one for customer acquisition.
That hypothetical startup wouldn't need to give customer service. You want customer service and like paying large fees? Go to stackexchange, you want a working solution at a huge discount? You come to the hypothetical startup.
Basically its the case of Stackexchange playing the role of a big pricey inbred company, and you giving them the 34signals option
3 programmers * 2 weeks * $100/h = $24k
Or, the ability to run this right now for 10m to 2 years.
Don't forget to include all the office space, gym membership, soda, insurance, maternity leave, matching 401(k) contributions, hardware, software, internet access, telephone service, tech support, sysadmins, office managers, etc. necessary to support that one programmer.
As is said so many times in what we do, if it's that simple why don't you hire a few hackers for a few weeks, build it, and then compete with them? SE has a very polished platform, unbeatable service (presumably, since it's backed by Fog Creek), and a great sample implementation that you can look at to see exactly how much information is exchanged/value is added to your network. They've also got Joel and Jeff, two very prominent voices in the space.
As for the price point, I don't think they're going for small five-person shops. My guess would be that they've got two markets targeted:
* The internal company knowledge base. In this, they'd be taking a run at a small part of Confluence, and the price point doesn't really matter. If you're in this space, $3K/month is nothing if it makes a production team more efficient.
* Support/community building for a third-party product. Most company support forums are, after all, basically a way for people to ask questions to fellow users/administrators. So why not optimize on a system that's designed specifically around asking and answering questions, as opposed to a form that's meant for discussions? What immediately comes to mind, for example, is BlackBerry third-party software development. It's not bad once you've got the hang of it, but it has a lot of tricky parts to get going and optimize. So RIM would get an SE site going and say "we encourage everyone to ask their questions here, and we'll have a team of a few community relations people hang out here to do what they can." Gives the community a focal point, and in a way that promotes getting things done, as opposed to complaining. Think of it like a version of GetSatisfaction for technical support.
With their software and administration, you need nothing other than web-browser-commenter skills to get these sites launched.
As for price, you'd be amazed at what corporations will pay for solutions to their problems. This is because you'd be amazed at how much their problems cost them.
Unfortunately, this is not the case.
As it is, I don't bother to use StackOverflow. My questions would be too esoteric for the audience/format, and nearly all of the questions I see are boring, easily answerable with a search of the documentation. The questions would be less boring if I were paid to answer them, and then I'd be more likely to find a few gems to answer, too.
It's doubtful to me that you could appeal to expert users to exchange time for money when it is better leveraged by consulting and entrepreneurship.
This topic comes up quite often on the StackOverflow podcast.
$5-$15 per answer would be reasonable given the limited time involvement.
It's doubtful to me that you could appeal to expert users to exchange time for money when it is better leveraged by consulting and entrepreneurship.
I seem to have enough free time to blow a fair portion of it commenting on Hacker News.
To understand how powerful this difference can be, this book is an eye-opener (outlined here): http://bookoutlines.pbworks.com/Predictably-Irrational
Other than money, how do you prevent an expert-exodus as expert users are deluged with simpleton questions? Amidst a deluge of bad questions, there's little value to remain active, as your own questions can rarely be answered, and users aren't providing interesting questions.
Something else is needed to provide a substitute for that value.
Alternatively, you must prevent the exodus by filtering the kinds of interactions/questions that occur. Mailing lists, for instance, have a barrier to entry to serve as a first-pass filter (the subscription), and then a community to enforce community norms.
Similarly, (most) university professors don't teach for getting rich or just fort the research - they enjoy overseeing and helping the youngest generations of their particular field.
Either way, money is what would entice me to answer questions on the web. Currently I do it for free on IRC, but only because standing community helps ensure that the quality of questions is reasonable on the channels I frequent.
Call me stupid, but I though the SO down vote button was designed to do the message filtering and not Mr Atwood super SO user ID.
There haven't been any mind-blowing awesome gems of answers in there that have caught my eye - mostly pretty mundane things, content-wise, and as a programmer looking for an interesting community, I don't really get that vibe from it much at all.
To me it just seems like a place for kids to go and get their homework done for them by lonely strung out alpha dogs looking to place some authority in the world.
For me, sites like this will never replace the good ol' USENET groups and subsidiary mailing lists. Once again (as is the case with Twitter), a web site springs up to try to capture an audience from the pool of people who are just not competent enough with E-mail to manage it properly and exploit the results ..
Are there allot of simple questions? Yes because there are many people just learning how to do basic things in one language or another. However even in the most basic question answering it can be an worthwhile experience. You can filter out the simple questions and get on to the more advance ones pretty easy.
Nope.
On the other hand, I guess the idea they mooted early on of going open source is dead now.
Oh, wait, did you say "3" talented developers?
Please, less than a week then. Drupal already has ready-made modules for this type of functionality. All you need is to throw 'em together. The price is too high, sorry.
And "I'm too busy working on other projects" doesn't count as an excuse.
(1) How much visual customization will be supported?
(2) I won't have to make people use OpenID, will I?
(3) Does the Fog Creek/Atwood team plan more verticals that I might inadvertently find myself competing against?
Supose that i'e an idea to build a community using StackExchange. How can I monetize it to pay U$S999 a month once I pass 1mm pageviews? It's quite hard!
Furthermore, it leads me to think poorly of their software -- did they really manage to fuck up something as embarrassingly parallel as responding to HTTP Requests? Maybe it's just that their MS toolchain is ignorant of the possibility...