First they FUD you... Then you win!
November 13, 2014 12:16 PM   Subscribe

The programming world seems stunned with the recent announcement from Microsoft that .NET is going open source.

Back in April, MS announced that the next generation of their compiler, called Roslyn, will be open source. This was a huge step forward for a company that in the 90s saw Open Source as the enemy. Through the years they have been making slow movements into Open Source territory. One clear example is hosting CodePlex, an online source code repository.

But Roslyn going open source, while being a compiler written in the C# language itself, didn't mean the whole system was going open. But on November 12, 2014, Microsoft announced that they were opening up .NET Core to be fully open source. They are hosting this initiative not on their own CodePlex repository, but on GitHub (realizing that github has the number of users for a strong and active community).

Not only has MS open sourced the compiler, they have said they are working towards cross-platform support. They are working through the .NET foundation (which was announced at the same time as Roslyn).

What does this mean for Mono, the open source implementation of .NET, started by Miguel de Icaza (who created the GNOME desktop for Linux, and then created the Mono project to help bring .NET to non-Microsoft platforms; he also sits on the board of the .NET foundation)?

It sounds like it's going to be a lot of playing with each others' code for the time being, according to this interview.

Not only have they released .NET as open source (the "Core" of which will be "read/write" (taking contributions from outside) with the rest of the platform being "read" only -- sharing the code, but not taking contributions from the community), they also are releasing a version of Visual Studio 2013 for free, feature complete, for students and open source developers.

Needless to say: Reddit is excited...

And excited some more...
posted by symbioid (81 comments total) 32 users marked this as a favorite
 
This is exciting and encouraging news. There's also talk that VS will support Android development and (maybe) iOS development w/bundled clang.

I do all my development on Linux and iOS these days, so it's been quite a while since I touched C#. But when I was using it I did like a lot of the things it had to offer. Hopefully this will increase its popularity.
posted by sbutler at 12:24 PM on November 13, 2014 [1 favorite]


You might see that move as a way to "save the runtime", since despite the effort put by Microsoft into it, it was getting beaten by the Java runtime (which got the cool VM languages) and native code (especially thanks to LLVM).
posted by Monday, stony Monday at 12:34 PM on November 13, 2014 [5 favorites]


Additionally, Microsoft have been openly embracing iOS and Android, and publishing some really high-quality apps for both platforms.

The new version of Visual Studio includes an Android emulator that apparently runs circles around Google's own emulator (which is admittedly not difficult to do).

Microsoft's fitness band thing is well-supported on every mobile platform (unlike any competing product). It's still far from perfect, but seems to come a lot closer to hitting the set of features that I would personally want to see in a smart watch.

Microsoft is making tons of money by hosting Linux instances on Azure, and is actually starting to make meaningful contributions back to the Linux source. They've also pledged to support Docker containers on Windows (which is huge, given that they're going to invest a huge amount of effort to support a popular open-source product that directly competes with their own products).

Recent versions of IE don't suck, and the IE development team now consists of some very talented engineers who are aggressively pushing standards compliance. The IE11 dev tools are quite nice.

I never thought I'd say this, but Microsoft are clearly positioning themselves to be the most cooperative player in the industry.

Admittedly, none of this is causing me to rush out and buy Microsoft products... However, Microsoft's business customers should be extremely happy about these developments, as Microsoft can truthfully and enthusiastically claim that their platform is not a walled garden.
posted by schmod at 12:37 PM on November 13, 2014 [32 favorites]


Microsoft is also releasing a full-featured free version of Visual Studio for small teams.

As a C# fan I think this is really great news. I have been writing a lot of Java code recently and it really seems like an old bad version of .NET. Microsoft has not had a great history with the open source community but as a language and library C# and .NET are really nice to work with.
posted by burnmp3s at 12:42 PM on November 13, 2014 [3 favorites]


I did get the Microsoft Band recently, and I'm pretty happy with it. Not perfect, but very good; it's encouraged me to exercise again even in this stupid weather.

I have VS 2013 Express at home for VST plugin development and that's all I need, and my company is slowly and painfully migrating from 2010 to 2012 right now (we have some legacy Fortran stuff that is a problem), so this news doesn't personally touch me. But I think this is a good direction to move in, and a pleasant surprise from Microsoft.
posted by Foosnark at 12:44 PM on November 13, 2014 [1 favorite]


My hypothesis: Microsoft have seen which way the wind is blowing, and that the vertically integrated stack (from the Windows kernel and APIs to Visual Studio and right through to MS Office's profitably unfathomable file formats), which made them money hand over fist in the 90s and early 00s, is going the way of IBM's big iron monopoly. And just as IBM reinvented itself as a consulting business dealing mostly in commodity Linux and Java services, MS is reinventing itself as a purveyor of apps for the mobile platforms which count (read: iOS and Android) and VM hosting (which, more often than not, means Linux). They'll keep Windows, Windows Phone, &c., but it'll start to look more and more like a hobby.
posted by acb at 12:50 PM on November 13, 2014 [5 favorites]


I've been using Eclipse lately, boy is it making me pine for VS. I guess comparisons between the two are pretty similar to comparisons between C# and Java - they're essentially the same thing, with many directly compatible features, but at the end of the day everything on Tje MS side of the fence is just that little bit more logical and better thought out.
posted by Artw at 12:50 PM on November 13, 2014 [2 favorites]


burnmp3s: "Microsoft is also releasing a full-featured free version of Visual Studio for small teams.

Ithink that might be the link I have further down in my post? Anyways, yeah, very cool.
posted by symbioid at 12:51 PM on November 13, 2014 [1 favorite]


I wonder why. Microsoft opperates by dictating what the user/enterprise "needs" and only concedes when it's hopelessly out matched by the competition as a last ditch effort to save market share. In areas of dominance, it continues to tell you how to do things. So what goals does this further for them? More programmers, more windows app developers, more windows phone adoption?
posted by [insert clever name here] at 12:55 PM on November 13, 2014


I'm hoping some of the runtime/GC/collections stuff can make it into other open-source runtimes. Having .net be first-class portable makes things like F# much more compelling. It remains to be seen if enough people bite or if it's too late to get into the open source game when there are so many other existing technologies with head starts.
posted by Skorgu at 12:59 PM on November 13, 2014


From Microsoft's "patent promise":
Microsoft Corporation and its affiliates (“Microsoft”) promise not to assert any .NET Patents against you for making, using, selling, offering for sale, importing, or distributing Covered Code, as part of either a .NET Runtime or as part of any application designed to run on a .NET Runtime.
Now I ain't no IP lawyer, but if you were to take some of this "open source" .NET code and stick it into a different run time, it sounds to me like you are opening yourself up to a lawsuit. And Microsoft has a history of using patents against open source projects.

Again, I ain't no IP lawyer, but unless I were to get some advice from one that says something different, I wouldn't even glance at this code.
posted by Poldo at 1:13 PM on November 13, 2014 [8 favorites]


I heard someone mention this at work yesterday. I didn't delve any further into the subject, assuming my coworkers were deeply confused about what day of the year April Fools falls upon.
posted by double block and bleed at 1:14 PM on November 13, 2014


My interpretation of what Satya has been saying, the new Microsoft emphasis is cloud, services and enterprise ... the reasoning being that no-one else can do all three of those as seamlessly. An example he mentioned (not sure if its actually available yet) being an Android app that Sysadmins could use to monitor both their internal and cloud based systems.

Scott Hanselman's post 'Microsoft killed my pappy' is quite a good explanation of the recent changes.

In the current crop of corporate technology behemoths (Amazon, Facebook, Google, Apple, Microsoft) Microsoft are quite an interesting beast, being arguably much more diversified than anyone else. They have 16 different businesses/product lines that bring in $1b or more per quarter. ( Windows, Windows Server, Azure, Office, Xbox, SQL Server, System Center, Sharepoint, Visual Studio, Dynamics, Online ads, Phone, Office 365, CAL, Enterprise Services, Enterprise communication software, and Surface tablets might soon be the 17th.
posted by memebake at 1:16 PM on November 13, 2014 [4 favorites]


There is an huge thread on Hacker News discussing this and although (as ever) 90% of it is arguments about languages there seems to be a general undercurrent of "C# is a good all-rounder language so this is good news".
posted by memebake at 1:27 PM on November 13, 2014 [2 favorites]


People also seem to really like F#.
posted by en forme de poire at 1:39 PM on November 13, 2014 [2 favorites]


It's a simple strategy: Office, Windows, DevTools are free for individuals, but cost a lot for Businesses. Windows Phone is going for the low-end of the market, just like Windows always has, so that they can sneak into Enterprise.

It's the freemium strategy, and I'm certainly not complaining!
posted by blue_beetle at 1:42 PM on November 13, 2014


In my experience with C#, I've always found it to be an excellent language tethered to a mediocre, closed environment, and Mono was always just clunky enough to not really be worth it. This seems to be an opinion shared by a lot of other programmers I know. If this shakes that up, it could be really interesting to see what's gonna happen to C# over the next few years.
posted by Itaxpica at 1:44 PM on November 13, 2014 [4 favorites]


I remember in the early days of .Net there was a promise that it would be a cross-platform environment, like Java. And that Linux support would be coming "real soon now." I think they even released a prototype FreeBSD runtime at one point. Interesting that it did happen, only 10+ years late.
posted by miyabo at 1:44 PM on November 13, 2014 [1 favorite]


Yeah after growing up with Microsoft hate (and the nightmare of circa-2000 Windows) I was shocked that .NET is really, really well-designed and pleasant to use. I think I might prefer even VB.NET with its insane syntax over Java, ignoring third-party libraries and tools.
posted by vogon_poet at 1:44 PM on November 13, 2014


schmod: " They've also pledged to support Docker containers on Windows"

If you're not supporting Dockers, you're just supporting pants.
posted by Chrysostom at 1:59 PM on November 13, 2014 [9 favorites]


If you're not the trouser, you're the pleat.
posted by zippy at 2:02 PM on November 13, 2014 [6 favorites]


Also someone told me that skilled .NET consultants are able to charge insane rates right now, even higher than Ruby on Rails and iOS and other hot technologies -- there aren't legions of folks playing with .NET at home, so there are just fewer people going into it professionally, leading to short supply. Does anyone know if that is true?
posted by miyabo at 2:06 PM on November 13, 2014


My main memory of the early days of .net is how the randomly stuck the label on everything (a common MS problem) and WebForms dominating ASP.NET, which was deeply unappealing.
posted by Artw at 2:06 PM on November 13, 2014


I've been using Eclipse lately, boy is it making me pine for VS. I guess comparisons between the two are pretty similar to comparisons between C# and Java - they're essentially the same thing, with many directly compatible features, but at the end of the day everything on Tje MS side of the fence is just that little bit more logical and better thought out.

I've been Python only for the last couple of years but when I was doing Java, IntelliJ IDEA was better than both Eclipse and Visual Studio.
posted by kersplunk at 2:06 PM on November 13, 2014 [1 favorite]


Microsoft has a history of using patents against open source projects.

No, Microsoft sued TomTom, a company that makes very-much-not-open-source GPS units that happen to use a bit of open source software under the hood. TomTom is not an 'open source project.' It's a $1.2 billion company. And it should be noted that Microsoft was not suing TomTom to push them out of the market. All Microsoft wanted was for TomTom to take a license to its patents on certain features of the filesystem commonly used on memory cards.

To my knowledge, no open source project (i.e. the individual developers, as opposed to a company that separately commercializes the project or uses the project as part of a larger commercial product) has ever been sued for patent infringement. And why would they be? They have no assets to speak of, and they are often international projects, which means filing in multiple jurisdictions, many of which do not recognize software patents or the patentee may not have a patent in that jurisdiction. To say nothing of the PR problems.

Anyway, at best, that's one case from 5 years ago. Not much of a history.
posted by jedicus at 2:16 PM on November 13, 2014 [8 favorites]


I hear good things about IntelliJ, sadly our project has weird set up issues that means Eclipse is a must.

Any hey, ONE dev enviroment out there that VS manages to be more elegant than is surprising in itself given it's reputation as a lumbering all-in-one beast. More than one would be miraculous.
posted by Artw at 2:20 PM on November 13, 2014 [1 favorite]


Ain't too surprising imho. We know closed source cryptography cannot exist, but frequently it pretends well enough, like ATM machines, etc. Afaik close source programming languages have never even pretended that well. lol
posted by jeffburdges at 2:42 PM on November 13, 2014


Scott Hanselman's post 'Microsoft killed my pappy' is quite a good explanation of the recent changes.

It's an interesting piece of evangelism, but this Microsoft developer leaves out any mention of the history of problems that his employer caused in the last five-odd years with establishing an open format for productivity suite documents. There was an SDK released a few months ago, but is Windows-only. For a different perspective, perhaps, on how Microsoft has done open in the not-so-recent few years: Is DOCX really an open standard?
posted by a lungful of dragon at 2:42 PM on November 13, 2014 [7 favorites]


All Microsoft wanted was for TomTom to take a license to its patents on certain features of the filesystem commonly used on memory cards.

Sorry, but the FAT32 patents are one of the strongest arguments against software patents on the books. By Microsoft's own reckoning, FAT32 has been obsolete for a long time.

Microsoft only started suing the pants off of other corporations after open-source implementations of FAT32 had been in widespread use for years in commercial products.
posted by schmod at 2:43 PM on November 13, 2014 [10 favorites]


Has OOG THE OPEN SOURCE CAVEMAN weighed in on this startling development yet?
posted by entropicamericana at 2:52 PM on November 13, 2014 [1 favorite]


My understanding of DOCX is it's all pretty open except for some hooks for compatibility with older DOCs that are basically "old crap goes here". Whether or not that's significant or damns it all as proprietary is arguable.
posted by Artw at 2:57 PM on November 13, 2014 [1 favorite]


Scott Hanselman's post 'Microsoft killed my pappy' is quite a good explanation of the recent changes.
I remember reading this when it first came out, and was kind of shocked at how good it was at anti-propanda; it really convinced me of the opposite of what he was arguing and even made me dig in a bit further than I would have otherwise. And now that I've actually tried to buy some of the rack hardware that MS designed and open sourced, and had good feelings about their opensourcing of .NET, I go back again and read it and am again infuriated. It's quite intriguing that somebody can be so bad at convincing somebody else. Which is to say, that it explains nothing to me, and actually seems full of logical holes, or at least mindset differences so large that it's not quite possible to see eye to eye with Scott Hanselman. We still live with the legacy of MS crap, from their file formats to their office suites to their IT infrastructure, it's not like that crap just up and disappeared, it's still around everywhere. Good on them that they're turning the other direction, but that doesn't excuse the continued existence of many terrible things, like, oh getting a winmail.dat attachment rather than the file that the user intended because Microsoft can't figure out email.

Wow, and now any positive buzz of free VS has been expended.
posted by Llama-Lime at 3:04 PM on November 13, 2014 [6 favorites]


"It's the freemium strategy, and I'm certainly not complaining!"

"For five more free spellchecks, invite your friends to join Microsoft Office!"
posted by klangklangston at 3:15 PM on November 13, 2014 [1 favorite]


- I am curious how COM, Win32, and the registry (upon which most of .net is built) is going to be handled for macos and linux. Any ideas?

- This is a terrific idea, especially the feature-complete Visual Studio.

- I predict an unexpectedly large migration from shitty Java and Python projects. .Net development simply handles dependencies too well to ignore.

- I also predict ASP.Net on a Linux web server will take a significant chunk of RoR work.

- Hate MS for ie, or file formats, or whatever. Their dev tools are hard to argue with. Their .Net-family languages are really superb. Their 'frameworks' (like everyone else's) are pretty overblown, but workable. [e.g. the multiple attempts at making a decent threading namespace]
posted by j_curiouser at 3:22 PM on November 13, 2014 [2 favorites]


There's also talk that VS will support Android development

Not just talk. It's pretty fancy.
posted by Nonsteroidal Anti-Inflammatory Drug at 3:23 PM on November 13, 2014 [2 favorites]


Huh. I got an email from Microsoft about this and didn't really read it in depth.

I saw, "New free version of Visual Studio that's great for Students and Open Source Developers" and I just processed it as, "We renamed Visual Studio Express!"
posted by mccarty.tim at 3:27 PM on November 13, 2014 [3 favorites]


At first glance, I didn't see anything about what license this will be under. Is it an MS-specific thing? What's it license compatible with?
posted by Joakim Ziegler at 3:52 PM on November 13, 2014


It's all MIT licensed plus a "patent promise," so it's extremely liberal. Poldo up above pointed out a potential problem with the patent language, but from a copyright perspective it's all good.
posted by skymt at 4:01 PM on November 13, 2014 [4 favorites]


skymt: "It's all MIT licensed plus a "patent promise," so it's extremely liberal. Poldo up above pointed out a potential problem with the patent language, but from a copyright perspective it's all good."

Oh wow, that's a lot better than I would have expected.
posted by Joakim Ziegler at 4:03 PM on November 13, 2014


What marketing person at MS thought releasing this on the same day as humanity landed a robot on a comet would really make waves in the nerd press?
posted by wcfields at 4:04 PM on November 13, 2014 [2 favorites]


Android Studio is based on IntelliJ and it is quite nice. Genymotion is a better emulator than Google's.
posted by humanfont at 4:09 PM on November 13, 2014 [1 favorite]


Super impressed this is Github and MIT and not CidePlex and, um, MS thingie license thing.
posted by Artw at 4:15 PM on November 13, 2014 [1 favorite]


I downloaded Xamarin a few weeks ago and was fairly disappointed. I mean, even the coloring of syntax was glitchy. I wanted to try the newer version of C# instead of just Unity (which is what I mostly have been working with for fun/hobby)... But Monodevelop/Xamarin just was weird. Now that a full VS is out, I am excited to see what the hype is in terms of its feature set and slickness.

I still love me some Sublime Text, though.
posted by symbioid at 4:24 PM on November 13, 2014


j_curiouser, .NET doesn't use COM, Win32, or the registry, except where you are trying to be compatible with other technology that uses those. In portable class libraries (which you use when you are trying to be cross platform), you are pretty isolated from the operating system.

mccarty.tim, the Community Edition is pretty much Visual Studio Professional renamed, not Express. It has all of the tools necessary to build most applications, and allows integration with all the third party applications. The two things that I would like to see added to it that it doesn't have is Code Coverage and CodeLens, at least in 2013. I have yet to look at the 2015 preview to see if these migrated their way down. CodeLens is still an Ultimate edition only feature, and Code Coverage is in the Premium edition, in 2013.

The main thing they haven't announced is whether WPF (Windows Presentation Foundation) will be making it into open source. I have been mulling my strategy on getting a WPF Windows application onto a Mac for the last six months, and had finally decided that Silverlight was the way to go, when this announcement was made. Now I think I wait and see what happens, while moving the engine code to portable class libraries. Portable class libraries would be necessary regardless of what UI technology I use. My timeline for the port is pretty flexible.

This is an exciting announcement from Microsoft. It shows that Satya Nadella is willing to shake things up. Microsoft will never regain their exclusive hold on the development mindshare, but they are at least going to be a player. The ironic thing is that the best thing Steve Ballmer could do for his personal bank account was quit! His stock value has doubled since he quit.
posted by Xoc at 4:26 PM on November 13, 2014 [3 favorites]


Microsoft doesn't have to sue to undermine open source projects, they just have to threaten anyone who uses them in a successful product. That train-sized loophole in the .NET patent "promise" keeps the option available to them.

I would be surprised if any major competitor (who isn't otherwise covered through some existing patent agreement) will take up any of this code for their own products, or even allow their employees to look at it.
posted by Poldo at 5:10 PM on November 13, 2014 [2 favorites]


I took this as evidence that Microsoft understands .NET has failed. It feels like a Hail Mary open source release, the sort of thing you do when a project is EOL and losing midnshare. But I live in the SF / Linux bubble where no one develops on Windows, certainly doesn't deploy code on Windows, so I'm totally out of touch with who would be excited for this. I've always thought .NET was an interesting technology, such a shame it was shackled to a crappy OS for servers.

Miguel de Icaza is somewhat excited. Particularly about the patent promise. Project Mono is a significant achievement and I'm thankful to him and Xamarin for all their open source .NET work over the years. I've played a few multiplatform games to Mono, although since Microsoft pulled the rug out from under XNA that's another dead end.
posted by Nelson at 6:16 PM on November 13, 2014


Microsoft doesn't have to sue to undermine open source projects, they just have to threaten anyone who uses them in a successful product.

First off: threatening to sue is a surefire ticket to a declaratory judgment suit. The best possible outcome in a DJ suit is that the patent is found "not invalid"; the worst case is that the patent is found invalid or unenforceable. There's no real upside for the patent owner.

Second: that article completely misunderstands how Microsoft's strategy played out. It could successfully extract royalties without suing for enforcement because Microsoft had a strong position. No one wants to sue. Suing is a mug's game because the damage awards are designed to compensate, not yield a profit, and the patentee still has to pay their attorneys. Every other patentee would prefer to have done exactly what Microsoft did: use a strong position to get a license agreement without having to take their chances in court. There's nothing unique about it.

The article's thesis is that Microsoft's magic attorneys somehow convinced the attorneys of LG, ZTE, Asus, and other massive companies that Microsoft had a better position than they really did. It's a laughable, completely unsupported assertion.
posted by jedicus at 6:32 PM on November 13, 2014


.NET doesn't use COM

So, here's where you have to distinguish a specific implementation from the fundamental requirements of the system. Because it turns out that the desktop CLR does indeed use COM as a fundamental part of its loading strategy. Does COM matter once the CLR is loaded? Probably not. But there's a whole bunch of hosting APIs for .NET that are very much based in COM.

However, there's another implementation[*] of .NET which (at least inside Microsoft) used to be called "CoreCLR". This is, for instance, what used to be the implementation of .NET. I believe (though am not certain) that it's also the version of .NET which shipped with Windows Phone. From what I've read of the various announcements, it's this thing that's actually being open-sourced. That's not necessarily a bad thing -- they managed to get rid of a lot of cruft like COM when creating it -- but it also means that some of the features of the desktop CLR (like AppDomains and its tremendously-byzantine security model) are not going to be present.


*My understanding is that they share a lot of code between them, so it's not an independent implementation.
posted by Slothrup at 7:03 PM on November 13, 2014 [2 favorites]


Well I swore I would never waste another minute of my life learning another Microsoft development system after they hosed the people who had been loyal to VB/VS since its inception, and I'm not sure this changes that.

.NET is still shit in many ways compared to VB6. Oh sure it does more and all that but .NET 1.0 is fully incompatible with and won't run on Windows 8 at all, and I've got at least two frameworks built for industrial embedded devices that ONLY work with .NET 2008 and not with 2010 or after. Folks who have tried tell me it's still very hard to get .NET apps to run under WINE, and that the IDE is hopeless.

Meanwhile, my codebase dating back to 1994 and VB3 all still runs with nothing but minor bug fixes under WINE and in Windows 7 and 8 without a hitch (though the IDE coughs up a warning when you install it under 8, since I don't use SourceSafe it works fine).

Also, don't forget it was barely two years ago that Microsoft announced the dev platform for MetroTM AKA The Future was to be Silverlight, not that old busted relic of yesteryear .NET, and they only walked that back after the collective industrial asshole pucker heard 'round the world. I guess somebody somewhere got a clue that if they ever went back to that well again the motherfucker would get boarded over and poisoned.

I suspect that's why they're giving .NET away; they decided several years ago it was no longer worth anything to them. I'm guessing they are standing on the edge of a roof thinking seriously of finally breaking the Windows API once and for all to force a shift to some new tablet centric hotness. They already dipped a toe in that by breaking those legacy applications that were stupid enough to follow Microsoft's advice in 1995 to put all their stuff in a folder under "Program Files," where as of Windows 8 all newly created files are slapped with a read-only bit that can only be reset with the ATTRIB command from a console. That behavior can only be disabled by completely disabling UAC, which for reasons nobody can explain to me completely disables all Metro apps, effectively turning your spiffy state of the art Win8 box into a crippled Win7 box that actually does a pretty good job of imitating a patched XP box once you install Classic Shell. But I digress.

There is no way this is the altruistic move of a good corporate citizen. It's a distraction while they figure out the next way they're going to skull rape you. It reeks slightly but oh so pungently of desperation as iOS and Android seem to be the ascendant platforms for just about everything. And as we old timers know Microsoft will not hesitate to throw their loyal users on the bonfire of their ambitions when they think the technological winds are shifting.
posted by localroger at 7:30 PM on November 13, 2014 [5 favorites]


I never got .NET... and this makes me sad that it won't die a quick death now. Why Microsoft decided to avoid native code and add a layer of DLL hell times 100 to every system in the world just didn't and still doesn't make sense.
posted by MikeWarot at 7:33 PM on November 13, 2014


Why Microsoft decided to avoid native code and add a layer of DLL hell times 100 to every system in the world just didn't and still doesn't make sense.

Well Mike, I happen to know the answer to that. Back in 2003 there was this upcoming thing called JavaTM which was The New Hotness because it was buzzword compliant in a lot of new nifty ways but most of all was cross-platform due to being based on a byte code interpreter, and there was a lot of buzz that it was going to be the straw that finally killed ActiveX, which had never gotten really popular and was kind of a security disaster and just sucked.

So Microsoft's answer to Java was .NET, a theoretically cross-platform byte code language like Java which could be used to deliver web content, for embedded development, and so on. Of course MIcrosoft had no customers for such a project so they created a market by pulling the plug on the most successful dev platform in the history of computing and saying that .NET was its replacement even though it was about as compatible with what it was "replacing" as FORTRAN.

And of course being new at it they got it wrong, so .NET 1.0 was full of holes and bugs and 1.0 apps weren't even compatible with the 2.0 framework, and then there was 2008 and 2010 and 2013 and stuff that works comes and goes and la-di-da, because being cross platform is kind of a moving target I guess.

But the one thing to remember is that nothing Microsoft has ever done with .NET has ever been aimed at any goal other than lining their pockets, and this will turn out no differently, probably because they're about to burn it all as they come out with something totally different again.

They decided .NET was worthless when they were developing Windows 8. They're giving it away for the same reason. There are no altruists in Redmond, and only a fool would not expect them to have a way to be making money off of this.
posted by localroger at 7:46 PM on November 13, 2014 [8 favorites]


Also, don't forget it was barely two years ago that Microsoft announced the dev platform for MetroTM AKA The Future was to be Silverlight, not that old busted relic of yesteryear .NET, and they only walked that back after the collective industrial asshole pucker heard 'round the world.

Actually, I think that .NET apps which target Metro do actually use the same "Core CLR" that Silverlight uses (and which is being open-sourced now). But the messaging around Windows 8 and .NET was deliberately bad -- in my opinion, because Sinofsky had decided (not without some justification) that .NET was what was wrong with the first round of Vista development.
posted by Slothrup at 7:50 PM on November 13, 2014 [1 favorite]


But the one thing to remember is that nothing Microsoft has ever done with .NET has ever been aimed at any goal other than lining their pockets

...unlike other tech companies, which give you lots of free stuff out of the goodness of their heart.

Obviously, a business is going to make decisions that it thinks are in its own best interests. Those interests may sometimes be aligned with yours, and sometimes not. What's interesting to me as a Microsoft employee is that the decisions being made these days show an awareness of the extent to which software and software development have been commoditized, that short-term profit may be incompatible with longer-term success, and that the company's traditional strengths have actually become liabilities in a world where distributing software is effectively free.
posted by Slothrup at 7:58 PM on November 13, 2014 [4 favorites]


It's difficult to understand the rationale for .NET unless you've actually developed native apps for windows before, especially if you had to dick around with stuff like COM or Win32 or, god forbid, ActiveX controls in IE using the ATL in C++. All the people who actually were actually knowledgeable enough to develop functional native windows software back in the day are busy doing useful things with their lives now, and doing a GUI using WPF or winforms or javascript or whatever is probably 10-50x easier than dealing with "native" windows programming, and I'd consider myself an expert.
posted by Veritron at 8:00 PM on November 13, 2014 [4 favorites]


...unlike other tech companies, which give you lots of free stuff out of the goodness of their heart.

No, unlike other tech companies which not universally, but mostly, know that it is a bad idea to screw over your own representatives and distributors. It was only a few years before the .NET fiasco that Ballmer was yelling DEVELOPERS DEVELOPERS DEVELOPERS. Well, this is one DEVELOPER who will never use another Microsoft development system again, ever, even if it sucks my dick and writes the application for me. I will always expect them to fuck me over. You get to waste fifteen years of my life once, you don't get to do it a second time.
posted by localroger at 8:04 PM on November 13, 2014 [4 favorites]


MetaFilter: You only get to waste 15 years of my life once.
posted by I-Write-Essays at 8:22 PM on November 13, 2014 [13 favorites]


Well, this is one DEVELOPER who will never use another Microsoft development system again, ever, even if it sucks my dick and writes the application for me.

Okay, thanks for your feedback.
posted by Slothrup at 8:23 PM on November 13, 2014 [13 favorites]


I would still kill for Visual Studio for linux and a C# front end to clang so I could cross compile for MIPS and Arm targets.

C++, Eclipse and gcc are well past their sell-by dates
posted by monotreme at 9:03 PM on November 13, 2014


xoc, i think you're wrong. as slothrup states, COM is pretty well entangled in the low level behavior of .Net - curious to actually see the reality of it all.
posted by j_curiouser at 9:44 PM on November 13, 2014


Regardless of the CLR, which by its very nature has to be platform specific, the apps you write in .NET have nothing to do with COM or the registry unless you want them to. With portable libraries, you actually have to pull tricks to get that to happen, by creating interfaces and passing in objects that have concrete implementations that are non-portable.

.NET is pretty well designed from the ground up. C# is my favorite language of the ~15 or so that I can program decently in. My favorite quote from Anders Hejlsberg, the architect behind C#, when asked why he didn't put some feature into it, said, "because we didn't know how to do it right." Compare that philosophy to so many other languages, where they put every crap thing they can think of into the language, whether it works or not.
posted by Xoc at 12:56 AM on November 14, 2014 [3 favorites]


Localroger:.NET is still shit in many ways compared to VB6.

I think I might have had this conversation with you before on here, but for most devs and most use cases .net 2 onwards is way way better than vb6. Proper exception handling. Proper classes. Proper type handling, generics, dynamics, lambda, and so on. No fiddling with the registry. A comprehensive framework providing well thought out objects for most os tasks.

I think your area (industrial control systems) and apparently your way of working (wanting to keep the same codebase for 20 years without recoding or migrating) are a bit of a special case. Indeed you could argue that for real-time control situations, garbage collection platforms such as Java and .Net are never going to be a good fit. I think your main point (".net was not an adequate replacement of vb6 for me") is true for you, but not true for many devs.
posted by memebake at 2:52 AM on November 14, 2014 [7 favorites]


Tech people under the age of 25 tend to not have a good sense of just how much anger and resentment Microsoft managed to accumulate in the industry. They weren't some slightly inept rich uncle trying hard and failing to be cool. They were a cool blooded manic hell-bent on world domination and if they could screw you over in the process then so much the better. There are probably two entire generations of techies, especially in the open source world, whose instinctive reaction to anything Microsoft does is "fuck those guys."

That is a big, big thing to overcome when you're trying to make an open-sourced .net into a widely adopted thing.
posted by LastOfHisKind at 3:56 AM on November 14, 2014 [8 favorites]


net 2 onwards is way way better than vb6.

We've transitioned from VB6 to .NET over the last five years, and I have to disagree. We do very standard client applications - windows, GUIs - plus some extra code for doing assistive technology things, like hooking the keyboard. I'll ignore the latter part, because it might be argued that's too specialised (!)
  • With VB6 I can create a program that will install with a single MSI file through Active Directory and that will run on Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10. I can't create a .NET program that will run on all of these without also installing the framework: I can't even create a .NET program that will work on Windows 7 and Windows 8 out of the box. There aren't any MSMs for the .NET framework, so I have to fire up a separate executable as part of my installation process. Which is a pain. Of course, I can write a bootstrapper to do all this work for me. Wait, what language can I write the bootstrapper in?!
  • VB6 has very very limited threading support. This makes it really simple to code: you find the COM object that does what you need, call it, and hook the event that comes back. Or start a timer that checks for finished. If you're really smart you can put the slow code in a separate DLL, kind of making your own COM object. That's about it. This limitation means that the VB6 code I work with is forced to be nice and simple. .NET code can have threading, which means that the damn programmer who wrote the code that's landed on my machine can use any one of about six threading models, maybe several at once. Which makes everything really complicated and prone to horrid errors like race conditions. Ugh. Never mind, there'll be a new .NET threading model along in another two years, maybe that'll make it all work smoothly!
  • VB6 does COM really well. Add a reference, Dim an object, off you go! C#, lots of type casting and gunge.
  • VB6 does the Windows API really well. Look up the API, try a few ByRefs and ByVals, all magically works. .NET always seems to have a problem with something somewhere.
  • Exception handling try/catch is a pain. In VB6 you've got fairly simple Resume Next and Goto, so you can (for example) have five lines one after another trying to get some information from an external API: if one fails, no problem, try the next. See trying to use MSAA for example, or Office automation. In .NET, a line has an error - where the heck does it go next? Does it all end up in Program.cs? Or MainForm? What about all that horrid threading, too - where does the Exception end up? I can't always be sure that users are protected from seeing a message saying "you are stupid and this product is rubbish" (did you know that error messages in shipping software always say that?)
  • VB6 programs start up and when you click on a button something happens. .NET programs feel a bit... Java-ish. Bit slower to start. Bit slower to respond when you do something. Bit less fun to use. Not to mention the text doesn't look quite right, all a bit blurry, and as for DPI....
  • So I want to use the lovely WebBrowser control, which now supports HTML5 like IE, right? Oh no, it runs as IE7 by default (!) unless I... write some magic registry settings!
  • Press Alt in your WinForms application. File menu lights up. Press left and right. Whoa, the menu selection goes backwards! Bug, won't be fixed. Annoying for my users (mostly blind). Sure, I should be using XAML instead? NO. It's like writing HTML in Notepad with a very slow browser that won't render DOM errors and has no debugging tools.
Let's face it, if .NET was really good, Microsoft would have written some of their own programs in it. What is there, Windows Media Player? Oh, and Visual Studio! Would that be the same Visual Studio with a terrible reputation for being very very slow and the text not looking right? AHA!

.NET is... okay. Visual Studio provides a good IDE. There's usually something you can find in the Framework so you don't have to write much code to do simple things like reading a file. It works. It's just not much fun.

It's certainly no VB6. Give me VB7, compiling to an exe that just runs, easy COM and Windows API, UIA and proper I18N, more things in the framework... that would be awesome!
posted by alasdair at 3:57 AM on November 14, 2014 [2 favorites]


So I want to use the lovely WebBrowser control, which now supports HTML5 like IE, right? Oh no, it runs as IE7 by default (!) unless I...

Try Awesomium it's been a lifesaver.
posted by tempythethird at 4:09 AM on November 14, 2014


Let's face it, if .NET was really good, Microsoft would have written some of their own programs in it.

Nearly all new code written at Microsoft to run on servers is with C#.
posted by Slothrup at 4:18 AM on November 14, 2014


My argument in favor of .NET that I haven't seen on this thread yet: I favor functional-oriented statically typed languages that still have some OOP support, like Scala. (Clojure is also very interesting to me.) If you want a language like this on a proven battle-tested and performant runtime, your choices are basically Scala and Clojure on the JVM. I'm a big fan of the JVM, but Scala seems to be increasingly messy and Clojure IMO is too new and too polarizing.

So, I'm happy to see the CLR becoming a viable alternative. C# - the flagship CLR language - is the homebase of Reactive Extensions, which, combined with some language features like anonymous types, type inference, lambdas, and language support for promises (async/await), allow C# to be written in a fairly functional style. And then, there's also F#, which has OSS at its core, and seems to me like a kinder / gentler / saner Scala. All this together adds up to a viable alternative to the JVM - and who can argue against having more than one viable game in town? As a bonus, the fact that F# seems to be turning into a first-class mobile language thanks to Xamarin makes it pretty much the only choice if you want to do native functional development on iOS and Android.
posted by tempythethird at 4:26 AM on November 14, 2014 [1 favorite]


To expand on alasdair's great rundown -- the installation situation is surreal. Since I ditched my last plugin dependency (coded serial ports to the API instead of relying on MSCOMM back in 2003) and since they started including the VB6 runtime as part of the OS with Windows 2000, you can just drop one of my applications in its folder on c:\ and make a shortcut to the .exe, and it runs. No installer necessary at all.

Your computer blew up? Just copy the backup of c:\myapp onto the new box, make a shortcut to the .exe on the desktop, stick anoother one in the startup folder, and you're ready to go. Because I am such a dinosaur you don't have to find where the right Program Files is hidden in this version of Windows, and all your data will be there too.
posted by localroger at 5:11 AM on November 14, 2014


They were a cool blooded manic hell-bent on world domination and if they could screw you over in the process then so much the better.

Comcastic!

I think it's reasonable to allow Microsoft to move past some of its past sins though. By and large they took the anti-trust finding seriously, and I truly believe Microsoft did not abuse its monopoly position too much in leveraging into other businesses. Like, say, search engines: could you imagine if the unfettered Microsoft could have "integrated" Bing Search into the desktop? Ugh. Now that Ballmer is gone and it's been 10+ years, it seems fair to look more at what Microsoft has done recently than what they used to do.

Sadly, the Microsoft that Ballmer left Nadella with is much diminished. When was the last time someone was excited or delighted by a Microsoft product? Some of their stuff is at least competent; MSIE is useful again, Visual Studio is a good tool, Office continues to work effectively for people. Bing and Office online are both pretty solid web service products. But none of them inspire passion.

Still baffled by the .NET open source move, other than as evidence Microsoft is ready to move on. No one's going to suddenly start adopting .NET on other platforms because it's open source now, 10 years later. Node.JS, Go, hell even Java+Scala have a lot more mindshare.
posted by Nelson at 6:40 AM on November 14, 2014


I program in C#/.Net in an office environment (Windows machines, SQL Server, IIS) and I like it a lot, especially compared to VB which I used for years. We do mostly web apps and console utilities, so maybe it sucks for installed forms apps, but we generally have been happy with it. I don't have a lot of experience in Java or other non-MS languages but I did have to do a little Java coding a while back for a plug-in and Eclipse/Java drove me bonkers. Some of that was just inexperience probably, but consuming Web services especially seemed more tacked on. In Visual Studio you right-click and Add Web Reference ... and paste the URL and that's about it.

There is a huge workplace install base of Windows and people are pretty happy with it as users, so there'll probably continue to be a market for C# for these environments and for web sites run in these companies. As far as Windows itself, what I'm convinced is the most important thing is consistency. Let's say it's the year 2040 and we are on Win 23. What people want is: Start menu at bottom left from whence they can open up productivity apps; easy access to a web browser; and uh ... that's it. I dunno if it needs to be re-imagined, at lease not for desktops/laptops.
posted by freecellwizard at 8:52 AM on November 14, 2014


Definitely in the 'fuck those guys' camp. They threw weight around to hold technology back for years, while creating misery and horror for literally millions of people. They can throw a couple of toys to the devs, but I'd like to think we have longer memories, ballmer or not. Hope they get lenovo'ed, like their os2 sparring buddies at IBM.
posted by davemee at 9:31 AM on November 14, 2014


Well - I guess it's a good thing that C# is open source so it's not "Those Guys" anymore, and "Those Guys" can die off and C#/.NET can still exist/thrive without the need for MS's existence.
posted by symbioid at 9:49 AM on November 14, 2014


Or Anders Hejlsberg or Eric Lippert or Erik Meijer or Scott Hanselmann or whoever else is working on the .NET ecosystem.
posted by symbioid at 9:49 AM on November 14, 2014


But C# and .NET isn't going to exist/thrive without Microsoft's existence. It only exists now because Microsoft pushed it so hard on Windows. Making it open source isn't going to magically make a lot of new people interested, there isn't going to be some .NET renaissance.

I dunno, I could be 100% wrong here. I think VMs are a good technology and the CLR has a lot of advantages over JVM. And client-side GUI writing still sucks as much as ever, and the .NET variant of it is credible. But in the meantime the developer world has moved to Javascript webapps, and scalable cheap servers, and mobile devices. I don't think there's much room for .NET in any of those areas.

What people want is: Start menu at bottom left

I have some bad news for you...
posted by Nelson at 10:58 AM on November 14, 2014 [1 favorite]


But in the meantime the developer world has moved to Javascript webapps, and scalable cheap servers, and mobile devices. I don't think there's much room for .NET in any of those areas.

For every person doing web apps in JavaScript with Ruby on Rails and MongoDB on EC2, there are about 100 people doing employee payroll business logic or calculating grain inventory or computing optimal manufacturing schedules. Seriously, I know a guy whose main job is making databases of foliage for a city parks department. Millions and millions of people write amazingly narrowly focused business apps and they shouldn't be underestimated.
posted by miyabo at 11:31 AM on November 14, 2014 [5 favorites]


Pondo> Now I ain't no IP lawyer, but if you were to take some of this "open source" .NET code and stick it into a different run time, it sounds to me like you are opening yourself up to a lawsuit.

I think there's some sense that you're right to be skeptical, but on this particular matter it's worth considering their definitions:
".NET Runtime" means any compliant implementation in software of (a) all of
the required parts of the mandatory provisions of Standard ECMA-335 – Common
Language Infrastructure (CLI); and (b) if implemented, any additional
functionality in Microsoft's .NET Framework, as described in Microsoft's API
documentation on its MSDN website. For example, .NET Runtimes include
Microsoft's .NET Framework and those portions of the Mono Project compliant
with (a) and (b).
posted by atbash at 11:33 AM on November 14, 2014


(Don't get me wrong, I'm still not going to start using Microsoft's products. Too much personal history there.)
posted by atbash at 11:42 AM on November 14, 2014


Still baffled by the .NET open source move

Partly its the rise of certain people within Microsoft (Guthrie, Hanselman, others I guess?) who have pushed for adoption of techniques that have worked well in the non-MS world. e.g. MVC, Nuget-style package management, unit testing, general recognition that open-source works very well for dev tools, and a bunch of other things have cropped up in the C#/.NET world in the last few years. I think MVC was open source from the start. The rise of Satya will accelerate such initiatives. Open-sourcing the whole .NET Framework is an obvious next step.

Secondly, from hanging out on Hacker News I can say that there is more interest and buzz around C# now than there ever has been. And this is among 'serious' developers who mostly use trendy stuff. Generally C# has been looked upon favourably from a language design point of view - sort of like a good all-rounder. And I've seen a lot of people say that no other platform has an IDE as good as VS.

Thirdly (and I'm a bit sketchy on this one) there's been a lot of interest around Xamarin recently. Its based on Mono and lets you code an app in C# and then compile it to run on iOS, Android and Windows Phone.

In the context of all that, open-sourcing .NET is like a pivot to possibly catch a wave of new interest, rather than a *shrug might as well*.
posted by memebake at 1:53 PM on November 14, 2014 [3 favorites]


In Visual Studio you right-click and Add Web Reference ... and paste the URL and that's about it.

Nope! That's only for .NET 2-3.5. You have to do something else much more complicated now to do with Windows Communication Foundation. "A Web reference should be added only if your application targets version 2.0 of the .NET Framework."
posted by alasdair at 2:13 PM on November 14, 2014


I can only underline the sheer weight of hatred that MS has grown on its hull over the years, through its own actions and attitudes. You might not believe it if you haven't been swimming alongside for thirty years: I have, and it's been very aptly earned. As a programmer, as a journalist, and as a friend of various people and companies, the list of examples of which I have first hand knowledge is not small and, on occasion, truly shocking. Much more happened than has been written about, and what has been written about is more than enough to prove the point.

That said, nobody is beyond redemption. .NET going open is a good sign, and I still (hah, ethics in journalism!) will be genuinely excited when MS does something good. For a long time, MS' dev side has shown off some of the best aspects of the company - which is not to say it hasn't done the reverse - and if the balance of progress is in a direction which is a net (hah! again) good to the industry, then take it as it comes.

As I haven't been a developer for a long time, I only passively inhale the various arguments and trends in what makes a good, productive, safe environment for making good, productive, safe code. Platforms, frameworks and languages des jours come and go. But I think from observation that the quality of the end product in general across the industry has improved immensely, certainly considering the insane acceleration in environmental complexity, and that the main driver for this hasn't been this or that bright idea or product or methodology.

It's been the huge increase in pragmatic adoption of the proven good that has only been possible through open systems, open code and the freedom to mix ideas like bacteria swapping genes. For the longest time, MS has taken but not given, killed not nurtured. It's perhaps hard to argue that Satya has none of that, but he's certainly post Ballmer/Gates and certainly hasn't got the "the PC is the fortress from which we will rule the peasant lands" mindset which produced the First Microsoft Empire.

From the standpoint of thirty years of hegemony, this is something to celebrate.
posted by Devonian at 2:38 PM on November 14, 2014 [3 favorites]


j_curiouser, .NET doesn't use COM, Win32, or the registry, except where you are trying to be compatible with other technology that uses those. In portable class libraries (which you use when you are trying to be cross platform), you are pretty isolated from the operating system.

nope - here's a dependency walker export of the most basic .net WinForms app [default project, one form, no controls, release build].
posted by j_curiouser at 11:46 AM on November 15, 2014


alasdair: In .NET, a line has an error - where the heck does it go next?

In WinForms, you can catch any unhandled exception with a couple of event handlers: http://stackoverflow.com/a/5762806/22194 ... what I disliked about VB6 exceptions was the lack of stack trace. Trying to put any sort of useful error logging into a VB6 program was a nightmare because you only got an error message, no stack or clues as to where the error came from. We ended up writing a Visual Studio 6 plugin to automatically edit all the code and insert On Error Goto error handlers into every single method or function that then added the method/function name into the error message and re-threw it.
posted by memebake at 2:30 PM on November 16, 2014


« Older Winter inside the Yamal crater   |   Letterboxing Newer »


This thread has been archived and is closed to new comments