News for hackers. Stuff that matters.
Re:Leaving .Net by kenjackson on Tuesday December 14, 2010 @06:08PM (#2006133)
Dave has some reasonable points, and frankly I think MS is going where he'd like them to go.

But he does miss the boat on a few things.

One thing that I do think he discounts too much is the surprising effectiveness of small focused teams. In the same way a small startup is more effective than a lumbering machine, a small team of devs is often more effective than 1000 loosely organized volunteers. The classic example is GCC which has probably 10x more people working on it than any commercial compiler, yet the Intel and MS C/C++ compilers generally kill it. Not to mention other less popular compilers like IBM xlc and DEC's Alpha compiler.

The contribution list to RoR is impressive, but the quality of the product doesn't scale with the number of contributors.

I think the question MS has to ask is "do we forego control to possibly get an incremental increase in product quality?" What I've found interesting is the speed at which Silverlight and ASP.NET MVC have improved over the past few years. With relatively small developer teams, they've increased in quality as fast as any open source projects I know of.

The other thing he gets wrong is he conflates framework developers with application developers. And I think this causes him to see a skewed world-view that developers are "waiting" for Microsoft. In general, app developers, are not waiting for MS to do anything. You have tight deadlines and are trying to find the best solution today. You take a snapshot of the world right now and pick the best solution (or starting point). You don't have the time to ponder what might be available in eight months.

Most ppl on the MS stack are app developers. Always has been the case.

Re:Leaving .Net by marknutter on Tuesday December 14, 2010 @06:44PM (#2006262)
I think the core rails team is pretty small and focused. The benefit of it being open source is that an army of people wanting to make a name for themselves are combing over their code to make sure all the I's are dotted and T's are crossed. The quality of Rails obviously doesn't scale with the number of contributors - there are only a few core contributors and a heckuvalot of casual contributors. Makes sense to me.

So it's not about incremental increases in product quality, it's about responding to problems quickly and promoting new core developers from the community, rather than through Microsoft's opaque hiring processes.

I'm relatively new to web development, and I've never worked in an enterprise environment using enterprise software/frameworks, but I honestly cannot understand why anyone given the choice and assuming the cash is the same would choose to go the MS route. I admit naïveté.

Re:Leaving .Net by kenjackson on Tuesday December 14, 2010 @07:24PM (#2006427)
I'm relatively new to web development, and I've never worked in an enterprise environment using enterprise software/frameworks, but I honestly cannot understand why anyone given the choice and assuming the cash is the same would choose to go the MS route. I admit naïveté.

A lot of reasons. The big reason is that for a LOT of people, open source isn't all that compelling as a feature on its own. For certain classes of people its the most important thing in the world, for other people it doesn't add much value. And for maybe an equally large subset, it's actually a negative.

At the end of the day each person/org has to decide what is important to them and optimize accordingly. For you open source may be the most important thing in the world, in which case, the choice is obvious. But there are millions of people who have made a different decision.

Re:Leaving .Net by bad_user on Wednesday December 15, 2010 @08:13AM (#2007957)
I agree with you but having to choose between 2 similar products, going with the one that's open-source is a no-brainer in most cases.

If a lot of people don't go with that route is mostly because of inertia or just bad uninformed choices, the idiotic kind of stuff that can drag your company into the ground.

It's not the license, it's the side effects: the ability to fix it yourself, community, popularity, documentation available (thanks O'Reilly) and support (the real deal).

I'm trying to picture what would happen if a customer calls in the middle of the night because the shit hit the fan and I blame it on Microsoft. As it is right now, the small company I work for has hired a kernel hacker and a contributer to Mysql that used to work for Sun, while also maintaining a healthy relationship with some of the core devs of the tools we rely upon ... we can fix and extend anything in our stack.

Can Microsoft provided support top that? I don't think so.

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @12:58PM (#2009030)
but having to choose between 2 similar products, going with the one that's open-source is a no-brainer in most cases.

Is it? First, you have to define "similar".

Would you rather have Quake (open source) or Black Ops? Both shooters with zombie like monsters.

Is MySQL the same as the SQL Server? Sure, to the uninitiated they look the same, but there are lots of little differences that, depending on your goals, can make one vastly more valuable than the other.

Would you prefer Mono or the CLR? While Mono has an enthusiastic and strong dev community, I bet dollars to donuts that even among informed devs, most would chose the CLR for the job at hand. And I bet even among informed CIOs they'd prefer the CLR for their shops.

OpenOffice Calc or Excel? Again, depending on your usage scenario, there are things you can do in Excel that simply aren't there in a reasonable way in Calc, although again, to the unitiated they're both spreadsheets.

My point? You rarely have the option of choosing between a closed source version and open source version of identical products. What you do tend to do is to look at two (or more products) and figure out what addresses your need the most, with open source being one of many metrics. When I decide which spreadsheet for my org to use, of course we consider OpenOffice, but the fact that it is open source has very little impact on our decision. The probability of us fixing a bug in OpenOffice is about equal to the chance that the bug fixes it self through the right sequence of bits being affected by cosmic ray. But maybe for you the fact that you can go and implement missing features in OpenOffice is important.

Re:Leaving .Net by lhnn on Tuesday December 14, 2010 @07:51PM (#2006504)
The first question when I suggest ANY piece of software at ALL in my 'enterprise':

"Is it supported? Who supports it? Is the support 24x7?"

$10,000 a month, depending on the applicatin, is chump change.

Although, some people do appreciate the value of open-source when a vendor takes two months to solve a problem in their proprietary mess of 'software solutions'.

Re:Leaving .Net by bad_user on Wednesday December 15, 2010 @04:46AM (#2007588)

      GCC which has probably 10x more people working on it than 
      any commercial compiler
Citation?

Personally I think you pulled that figure out of your ass; especially since the GCC codebase is a mess (on purpose), it's been stable and good enough (and arguably stagnant) for quite a while and all attention shifts lately to LLVM.

     With relatively small developer teams, they've increased in 
     quality as fast as any open source projects I know of
When speaking of both Silverlight / ASP.NET MVC ... they are copying other projects. And we aren't talking only about high-level ideas here, but actual implementation details.

They are great followers, yes, but what did you expect from a company with virtually unlimited cash?

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @01:28PM (#2009169)
I just looked at the GCC contributors list and used an educated estimateof how many on various commercial compilers. I don't have exact numbers, which is why I said "probably".

And we aren't talking only about high-level ideas here, but actual implementation details.

Huh? What implementation details? Citation? Silverlight looks fundamentally different than any other product, except WPF. I'd love to see who their copying implementation details from.

Re:Leaving .Net by decode on Friday December 17, 2010 @09:37AM (#2016285)
Silverlight looks fundamentally different than any other product, except WPF.

Back when my company started using Silverlight, I was surprised to learn that none of my coworkers knew it was almost the same as Adobe Flex. I think this sort of ignorance about the greater world of programming is exactly what the original post is talking about.

Re:Leaving .Net by kenjackson on Friday December 17, 2010 @11:51AM (#2016744)
They're only similar in that they both use markup and code behind. But that's like saying Silverlight and classic ASP are almost the same. With that said, I should have said, at introduction Silverlight looked fundamentally different. Flex has copied what I think is Silverlight (and WPFs) main differentiator, which is lookless controls (which ties into binding).

I think you underestimate the amount of people who have used Flex at some point in time.

Re:Leaving .Net by rbanffy on Wednesday December 15, 2010 @07:43AM (#2007890)
> and arguably stagnant

This is like complaining someone's market share is stagnated around 99%...

As for "working on", it has two interpretations. While I certainly thing GCC has less patches per month accepted into its codebase than clang, there are a whole lot more people compiling C code with it. I would not be surprised if we discovered more code is compiled with GCC than with all other C compilers combined.

Re:Leaving .Net by troygoode on Wednesday December 15, 2010 @08:28AM (#2007995)
I agree with you regarding MVC being effectively a direct copy of a subset of Rails, but what are you suggesting Silverlight is a copy of? Flash? While they're used in similar ways they couldn't be further apart in implementation...
Re:Leaving .Net by gcr on Tuesday December 14, 2010 @07:59PM (#2006533)

  > The classic example is GCC which has probably 10x
  > more people working on it than any commercial
  > compiler, yet the Intel and MS C/C++ compilers
  > generally kill it.
Oh? Interesting; I thought that gcc was one of the better ones. Could you elaborate?
Re:Leaving .Net by kenjackson on Tuesday December 14, 2010 @08:25PM (#2006598)
GCC has generally had perf numbers that lag the commercial compilers. Although GCC has narrowed this gap recently as C/C++ has generally fallen out of favor by the major vendors (and commercial vendors aren't working much on raw C/C++ performance anymore).
Re:Leaving .Net by psadauskas on Wednesday December 15, 2010 @02:12AM (#2007343)
I think thats because GCC will compile anything anywhere. MS is only Windows platform, and ICC prefers Intel x86 CPUs. Since the other compilers didn't stand a chance to compete with GCC on portability, the only other thing they could compete with it on was performance. Since they focused on it, they should clearly be more performant in their niche.
Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @01:05PM (#2009071)
Since the other compilers didn't stand a chance to compete with GCC on portability, the only other thing they could compete with it on was performance. Since they focused on it, they should clearly be more performant in their niche.

I think your skewed world view is apparent here. MS and Intel certainly didn't come and say, "One of our top priorities is portability. How can we target our compilers to platforms that we have nothing to do with? Oh wait, GCC already does that!"

Of course not. Honestly, GCC has been an afterthought for most of the history of C/C++. It's only now that it is effectively dead that GCC has started to become competitive. MS was focused on Borland for years (and it actually didn't generally revolve around perf, but generally build throughput). Likewise, Intel was focused on SPEC against xlc and other architecture specific compilers.

And as I said in another post, they (GCC, Intel, MS) have different priorities. If your goal is to have a somewhat portable C/C++ compiler then GCC is the way to go. If you want the best perf/throughput on a specific target then MS and Intel are your best choice.

Re:Leaving .Net by wladimir on Wednesday December 15, 2010 @10:59AM (#2008527)
On which benchmarks? Is this the case for both x86 and x86/64 targets? Do you have any specific reference?
Re:Leaving .Net by Locke1689 on Wednesday December 15, 2010 @09:26PM (#2010873)
On pretty much all benchmarks -- just Google scholar search. We used GCC but only because it's portable. Performance wise on IA-32(e) GCC is {EDIT:Language} not as good.
Re:Leaving .Net by icefox on Tuesday December 14, 2010 @11:00PM (#2006995)
Even when I run them on my amd cpu?
Re:Leaving .Net by kenjackson on Tuesday December 14, 2010 @11:40PM (#2007081)
To answer your question, probably not. icc has a long history of being less good on AMD processors, and almost certainly not on accident. With that said, they don't have a monopoly on x86 compilers. Microsoft's Visual C++ has been about equally good on both platforms and is far more dominant.

But with that said, I'm sure you know, that's not really relevant to the discussion at hand :-)

Re:Leaving .Net by rbanffy on Wednesday December 15, 2010 @07:50AM (#2007898)
So, the Intel's compiler trounces GCC when the code it emits run on certain x86 processors. And Microsoft's compiler does a much better job when the target runs on Windows on x86 processors.

If we narrow the target enough, all comparisons become interesting. I am quite sure GCC will blow both Intel's and Microsoft's compilers out of the water when it comes to compile code for IBM mainframes. I am sure it's much better than Intel's when it comes to target my phone's ARM processor.

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @02:09PM (#2009351)
And my blender makes better smoothies than GCC. So your point is that GCC is better at things that other tools aren't attempting at all? OK, good point.
Re:Leaving .Net by rbanffy on Wednesday December 15, 2010 @03:03PM (#2009557)
Your point was that GCC was not as good at specific things that are the sole focus of the products you mention. Intel's compiler only targets Intel's x86s and Microsoft's compiler only targets the (two or three) OSs Microsoft makes. It's not really an apples to apples comparison.

For me the Intel compiler makes sense in certain specific applications (many of my servers are not even x86), but the Microsoft compiler is absolutely worthless.

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @03:26PM (#2009652)
My point was that GCC is not good at specific things that customers care about (and it is good at other things, but I'd argue these things are more niche, such as retargeting for custom embedded devices).

For example, code size, throughput, debugging, and optimization are all places that the Visual C++ compiler is superior than GCC. How many Windows games are written with GCC? How many top-tier Windows apps are written with GCC? If I'm writing a Windows C/C++ application, I'm going to either use Visual C++ or icc. I'll choose icc for code with lots of compute intensive loops or vectorization opportunity. VC is better when icache is an overriding concern.

Now that may not be what you do, but to say, "Who in their right mind writes programs for Windows?", I think says more about you than it does about the respective compilers.

Re:Leaving .Net by rbanffy on Wednesday December 15, 2010 @04:49PM (#2009961)
From my point of view, Windows desktop software is a niche. It's a good, big and profitable one, but one I do not take part in. I agree Visual C++ is a great compiler for that specific target.

Still, there is a lot more to programming than desktop applications that run on x86 processors under Windows. And embedded ARM processors outnumber desktop x86s by a large margin. I carry at least three of them with me at all times.

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @05:41PM (#2010136)
And embedded ARM processors outnumber desktop x86s by a large margin. I carry at least three of them with me at all times.

And Visual C++ targets ARM also, and has for years. One of the reasons I've heard bandied about as to why WP7 first party apps are so fast and responsive is because of the quality of the Visual C++ compiler. :-)

Re:Leaving .Net by rbanffy on Wednesday December 15, 2010 @09:15PM (#2010853)
None of the ARMs I carry with me run WinMo or had binaries compiled with VC++. The odds of WinMo devices outnumbering competing devices are very slim.

But you surprised me now: wasn't WP7 managed code-only? Has MS decided to allow native app code?

Re:Leaving .Net by kenjackson on Wednesday December 15, 2010 @09:52PM (#2010929)
Yes, the number of non MS-ARM devices is probably several of orders of magnitude more popular. But you'd be surprised at how many embedded devices run Windows CE.

Regarding WP7, 3rd party apps are managed. But the core OS is native and 1st party apps can be native. For example, IE and the mail app are both native C++ apps.

Honestly, I think allowing 3rd party native apps would be a mistake in general. Although I'd create a partners program where you require devs to pay $10k and then go through a certification process, which allows them to ship native apps. Basically its the XBox model. Indie devs use managed code. Apps that are willing to go through the more expensive process get native access.

Why? Native apps introduce a bunch of problems that are a pain to deal with. For example, there a bunch of security issues and stability issues that native apps introduce. Additionally you have to target native apps to an architecture. It may lock WP7 into ARM, due to the ecosystem, and block it from moving, for example, to a new Intel architecture.

Re:Leaving .Net by rubinelli on Wednesday December 15, 2010 @06:39AM (#2007769)
In (good) open source projects, the frameworks developers are also app developers. The difference is obvious when you compare the architecture astronautics of a framework built following "best practices" and one extracted from living code. WebForms looked great in developer conferences, but it made stuff that just comes out of the box in Rails like nice URLs or common layouts a royal pain. I left that world behind 5 years ago, and I hope it has improved, but I have no intention to go back.
Re:Leaving .Net by kaffiene on Tuesday December 14, 2010 @06:48PM (#2006282)
GCC targets way more platforms and compiles way more languages than the Intel and MS compilers do. That's not an apples and oranges comparison.
Re:Leaving .Net by kenjackson on Tuesday December 14, 2010 @07:36PM (#2006465)
I think you mean that is an apples to oranges comparison (or its not an apples to apples comparison).

In any case, fair enough. I tried to detangle the contributors, and while its easy to do for language, it's harder to for target. I suspect 90% of the commits are ARM or x86/AMD64, but w/o spending more time than I care to, it's hard to know.

With that said, you'd still expect, with GCC long history of being open source and open source being such a clearly superior dev model to have surpassed most commercial compilers, but that hasn't been the case in perf. Now maybe one might make the argument that perf has never been the metric for gcc, but it has always been portability. But that would also lend credence to why open source is not an ideal model for many companies -- your (the open source project's) metric of success is not the metric that we care about.