Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm happy you did something different, even though your reasons are of course all wrong. I do wish it had been Node and not Ruby - JavaScript fits most of your reasons for going with an open source stack a lot better than Ruby does. Why not Node was the post I was hoping to read.

But back to why you're wrong on the internet:

1. .NET licensing isn't complicated, SQL Server is. There's an easy fix for that.

2. I don't think StackOverflow really participates in the best that the .NET open source world has to offer. From the information I can read, you (and team) published a lot of the code you wrote under open source licenses, but as far as I know the StackOverflow stack didn't really interact with many (any?) open source .NET projects that weren't run by StackOverflow - e.g. writing MiniProfiler instead of working with Glimpse, working with Mono, etc.

3. There's a lot that's changed in the .NET web space in the past year as they've moved from just releasing the code (see 2 above) to accepting pull requests. This has resulted in a good amount of accepted pull requests - community contributed features which ship "in the box" and are officially supported by Microsoft. Sometimes that's lines of code, but more often it's integration of popular community libraries. If anything, that trend is accelerating.

(also posted on blog comments, but nobody reads those)

Coding Horror Fan, Jon



.NET licensing is complicated from my perspective. It's not about .NET itself, but I have to deal with Windows licenses and choose an edition (foundation, essentials, standard, datacenter), I have to use per CPU or per server licensing depending, I have to buy client access licenses, do I want to buy the software or pay for a yearly subscription, etc. None of these are insurmountable problems, but it's a different style of doing things than a lot of us like. Specifically, it seems like they're trying to get you to talk to a sales person. In fact, they have a nice section on how-to-buy Windows Server, I'm supposed to get price quotes, etc. There are many in the industry that like sales people. They like thinking, "wow, I just talked to that sales person and I can just ferry the information from the sales person to my organization and my job is done! I'm the people person!" For many of us who just want that nonsense to get out of our way, it's just terrible.

Now if a box breaks, I have to order something with the same processor equivalents. If I want to move to the cloud, I can't take my licenses with me unless I'm on a Software Assurance subscription. It limits my options, it takes organizational overhead. If I bought licenses on the processor model for two servers that I want to combine into one larger (more-core'd) server, can I do that? Can I set up VMs running it within the box (even just for testing)? What happens when the next version has a different structure? VMWare made a large licensing change that switched from CPU to RAM (or the other way around) and it hit people that had gamed their old licensing model hard.

Again, I'm not saying that the licensing is impossible, but it is a problem. With Ruby, I can launch on a $20 Linode or any number of hosting providers. Heck, with Windows, my cloud providers are limited to Amazon and Rackspace. Microsoft's stack has awesome value. Visual Studio is awesome. I prefer C# to Java and I prefer SQL Server to MySQL (and to an extent PostgreSQL since it supports things like clustered indexing and with 2012 they finally implemented a good LIMIT/OFFSET). But those goodies come with a price that's more than just dollars. There's overhead in purchasing, overhead in pre-planning, and limitations.

"Why not Node.js" would be a great post. Without taking anything away from Node, it is different. If you use Django, Pylons, Rails, .NET MVC, Play (at least the Java side), etc. Rails should feel familiar. Some people don't like evented programming. I think a lot of people don't like JavaScript as well. It's ok in my book, but I doubt it would be so popular if it weren't the only language that browsers spoke. Similarly, it wouldn't be faster if companies like Google weren't pouring energy into it. Node.js offers some wonderful benefits. Event-driven programming with non-blocking IO can be wonderful for many things. The V8 JavaScript engine is fast. But "why not Node.js" would really be "why not evented?" The answer might be something lame like, "well, people are comfortable with MVC and process-based concurrency is easy and we're not planning on doing something that an evented model would give us a huge boost." Again, evented programming is very useful, but it's also different. While I think all CS programs should teach concurrency, some don't and even people who went through such a program don't always like it. Processes are simple (even if they waste cycles context switching, even if they flush the TLB). Node.js has done our broader community a great service by bringing up evented programming and creating a good environment for those who want it. But the answer to "Why not node?" could simply be "I didn't feel like evented programming". No matter what their differences, MVC frameworks are more alike to each other.


I agree to a certain extend if you're running your own servers. It's not all that complex, and there are tons of programs that give you free licenses (e.g. the BizSpark program StackOverflow used), but it is another thing to think about.

If you're talking about the cloud, you should definitely include Windows Azure in the mix, especially Windows Azure Web Sites. You can spin up sites for free and just start paying when you want a custom domain, it runs Node / Python /PHP / ASP.NET (without any changes to cloudify), you get FTP access, etc.). With ASP.NET in Windows Azure Web Sites you don't have any licensing considerations or costs, either.


Are you trying to say that both node and C# are better open source options than Ruby? Or rather that node is better and C# is not as bad as Jeff says?

Either way -- to say that C# would be a better platform for developing an open source project is far-fetched at least (the developments of the last year notwithstanding, although agreed that MS has come light years in that direction from where it was just a short while ago), and to say node would be better is, well, not uncontroversial.

I understand, given your position, this is a point of view you must advocate (although...node? really?), but neither point makes Jeff's rationale anywhere near "all wrong."

Agreed re: SQL Server vs., say, postgres. I'm actually not sure why we don't see that option (ASP MVC + postgres/mysql) a lot more often than we do.


Let's start with the "must advocate" part. I work for Microsoft because I really like their web products. They don't tell me to comment on Hacker News, I don't get a HN comment bonus. The only possible impact commenting on HN could have on my job is negative. I'm just saying what I think.

I said that given a move away from .NET, Node would have been a better choice. I think Node is more open source friendly for a lot of reasons. For one thing, if cross platform friendliness is a primary driver, the Rails stack doesn't run easily on some of the most popular operating systems. The dev setup instructions are getting better, but they all began with "step 1. buy a mac". Is that really more enabling to the 2nd and 3rd world developers Jeff mentions? It's admittedly gotten better as they've added some Linux docs.

I also listed some reasons that C# is not really a non-starter for open source. Jeff's first two points don't really sell Ruby over .NET + Mono to me, and I explained that I don't think Jeff or StackOverflow really participated fully in the .NET open source ecosystem in a way that gave them a lot of value. There are a lot of self fulfilling prophecies in the .NET open source world.


> I work for Microsoft because I really like their web products.

Cool! Good to have gigs we like.

> "step 1. buy a mac". Is that really more enabling to the 2nd and 3rd world developers Jeff mentions?

Eh. Linux is just fine for Rails dev. The Mac thing is mostly a hold-over from earlier days when TextMate was the default editor, and because most Rails shops expect it. In fact one of the most "enabling" scenarios here is to take a cheap, lightweight Ubuntu dev laptop and ssh into a dedicated development server, do all your editing on vim or emacs.

> I also listed some reasons that C# is not really a non-starter for open source.

Yeah, but it's a hard sell is it not? When considering tech stacks to risk your entire project's future on, what's the practical difference between "Not Really A Non-Starter" and "Really, Really a Non-Starter"? Not much.


I develop Ruby on OS X using Ubuntu running in a Vagrant VM, just because package management and configuration is so much easier that way (although Boxen may change that soon). Well, and also because we use Linux in production, and platform specific bugs, though rare, are not unheard of.

Windows is acceptable for Ruby development if Vagrant or JRuby is used, although the platform is admittedly not a first class citizen.


Sorry but that's total FUD and has a very obvious agenda. Ruby is preinstalled on most Linux distros, and thus Rails is a gem install away. In production, people only run Ruby on Linux. I, and a heck of a lot of people, do all Ruby or Rails dev on Linux. So I guess you must mean Windows.

So perhaps what you actually meant to say is that Microsoft haven't stepped in to do all the work for supporting Ruby on Windows, like they did with Node?


It's only fud if that's your worldview. I wanted to get set up on discourse and all the docs were written for Mac. It's Mac first development. That's fine, it's just not any more open than Windows first development.

I think Rails might have gotten farther on Windows if the community had less of an anti-Microsoft mindset from the beginning. http://www.codinghorror.com/blog/2008/02/douchebaggery.html


I used to work at Microsoft so i can alpreciate how that shapes the lense of how you view the world.

I think the statement that Rails might of gotten further on the windows platform is a ridiculous statement. Ruby as far back as remember is a language that prefered environment was Linux. There was a point where there was no windows version. I remember when even on OSX the installation of ruby was an endevour. OpenSsl incompatabilities, gems with c extensions that never worked right (rMagick which is a Linux first lib). So the underlying language that backs Rails is not windows friendly. There is no doubt in my mind that Windows would have been a hindrance not a positive.

Macs are only popular because for the most part they are similar enough to Linux that you can develop on a Mac and deploy to Linux. I don't know of one Rails shop that chooses to deploy on Windows.


That's not what I meant, although I see that the "it's Mac first development" thing didn't help. I agree with your point that the BSD heritage of OSX really positioned it well as a *nix dev platform.

I didn't say that Rails would have gotten farther on the Windows platform. That would be silly; you're assuming that because you're assuming I have misshapen lenses and / or am an idiot. I get that some mostly Microsoft devs are sheltered, but some aren't. I've worked with Mac and Unix going back a few decades.

What I said was that the native Windows / Node experience is probably better than the native Windows / Rails experience because the Rails community by and large really isn't all that interested in how it works on Windows (see link).


Because a single project in a language has Mac only development instructions the language and ecosystem is Mac only? What leads you to think the discourse devs would have documented x-platform if using node?


And the "all wrong" thing is a bit of an inside joke. He's occasionally slightly right, but I won't ever tell him that.


Ah, got it. Humor achievement unlocked.


Did you read the post at all?

>Ruby isn't cool any more. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago. Our project isn't cool, it's just a bunch of boring old Ruby code. Personally, I'm thrilled that Ruby is now mature enough that the community no longer needs to bother with the pretense of being the coolest kid on the block.


Of course. Did you read my comment at all? Two can play this game.


Actually, I think I did suffer from some reading miscomprehension.

I apologize for the inconvenience, tho I do disagree with your base premise. Regards,


Why not node? Async is a pain in the ass performance optimization for a certain class of problems.

Another plus for Ruby is JRuby. It's very nice to have access to JVM libraries from time to time.


As a long-time user of Node, I'm curious - Why Node? Why over Python or Ruby?


mdasen replied to that pretty well in second half of his post.


Jeff Atwood comes on your podcast and this is the thanks he gets??

:-)


We've been arguing for years, mostly because he's always wrong on the internet. ;-)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: