Hacker News new | past | comments | ask | show | jobs | submit login
Microsoft .NET CoreCLR is now running on FreeBSD 10.1 (amd64) (github.com/dotnet)
393 points by hestefisk on April 24, 2015 | hide | past | favorite | 189 comments



Hey all, MS PR guy here (yes I know, cue* the cabbage throwing). Just wanted to let you know we made a subreddit, and MS will answer some questions around Build 2015 announcements next week (.NET, Azure etc). Feel free to post Qs there if you'd like: http://www.reddit.com/r/Microsoft_Build/

edit: cue


Cabbage? How about a lot of praise instead? Because that's what I'd throw at you guys for doing what you're doing with .NET. I'm a .NET programmer by day, and Linux-fan (and user) by night, and I honestly can't wait until I can run an asp.net based mvc website on my Linux-based server (running Apache; I know it's not impossible now but it's not quite fully there yet, or supported by MS), and thanks to your efforts, that now feels like something that's maybe actually going to happen the way I hope it will. So huge thanks from me!


The only thing missing for the non-emacs only users is Visual Studio for Linux... Even if it's not open source... Cue cabbage from Stallman and GNU-Onlyists.


Yes, as a GNU/Linux user who dabbled with .NET almost a decade ago, I approve of this change in direction towards open source.


I still remember Rotor for FreeBSD[1]. Thanks for doing things for real this time! I am looking forward to the effect this will have on F# adoption.

[1] https://msdn.microsoft.com/en-us/library/cc749640.aspx


I just wanted to let you know, I think you guys are absolutely awesome. I used to be a huge MS hater, but you have really stepped up your game lately. Way to go.


No cabbage here either. The key is this part of the post: > MS PR guy here

Keep up the good work re .NET.


Why was this downvoted?


I was wondering the same. Is asking why anything was downvoted also to be downvoted ? will my comment also be downvoted for asking why "asking why the parent comment was downvoted" ?

edit: grammar


> Is asking why anything was downvoted also to be downvoted?

Yes, because it breaks the HN guidelines:

Resist commenting about being downvoted. It never does any good, and it makes boring reading.

Everyone commenting here needs to absorb this rule and develop the small amount of discipline it takes to just not do it. Optimize for signal/noise ratio, because that's what serves intellectual curiosity (https://news.ycombinator.com/newsguidelines.html).


Ah, thanks for posting that here... I would have assumed that guideline to have been directed towards people asking why they themselves were downvoted. That is, I didn't "comment about being downloaded". Perhaps the guideline could be clarified? (Hopefully needless to say, I don't mean to quibble about 2 karma points, but do want to help improve HN).

Personally, I've felt a great uncertainty whether downvotes are intended to be used for "I disagree with you" or "your comment isn't what we accept here at HN". I've always assumed the latter but think I heard something from you/PG indicating the former recently. There isn't anything about it in the guidelines. I don't expect a reply from you here (not sure it would do much good, other than just for me) but if you ask around and others have the same lack of clarity, it might be worth writing on.

Lastly, thanks a lot for all the great work you've done for HN in the past several months! (longer?)


Thanks for helping to improve HN! We need all the help we can get.

There has never been a rule against downvoting for disagreement on HN. (Perhaps the people who think this are mistakenly applying the rule from Reddit, a much better-known site.) But that doesn't mean just any kind of downvoting is ok. For example, downvoting a comment that says 2+2=5 is ok (unless it was quoting Dostoevsky!) But downvoting a substantive comment merely because you don't like the same things as the author is not ok. We see this a lot, for example, in programming language debates.

Some users want us to formalize the downvote policy in a precise rule, but we don't have a precise rule. Here's what we do say about downvotes. First, when you see a comment unfairly in the grey, be a good community member and provide a corrective upvote. Most comments that unfairly dip into grey get corrected this way.

Second, when you get downvoted, resist the temptation to strike back. Getting downvoted excites emotion. It stings a little, and the mind recoils from the idea that one might have deserved it. The way to respond as an HN user is to take the hit, review your comment to see what might have evoked it, adjust future comments when you see anything, and shrug it off when you don't.

If you want more clarification of community norms around downvoting, I've been impressed by brudgers' recent few comments on it and by dragonwriter's comments in https://news.ycombinator.com/item?id=9317916. They both did a better job of articulating the function of downvoting on HN than anything we've written ourselves. There is a body of community practice around this, and if you pay attention with the intent of learning it, you will.


Shouldn't downvoting 2+2=5 be done for quoting it to Dostoyevsky instead of Orwell?


You posted this 9 days later and I didn't see it till 736 days later! but here you go: https://en.wikipedia.org/wiki/2_%2B_2_%3D_5#Abb.C3.A9_Siey.C....


Thanks very much dang!


As you wish, here's some Coleslaw: Awesome job Microsoft! I'm very curious to see if the larger industry embraces .Net on Linux / FreeBSD as one of the core languages. At some of the big tech companies, Java and C++ are still king, partly because of their OSS echosystem. Would be great to see C#, F# up there with them.


Was "echosystem" a typo? (Regardless, a brilliant portmanteau of "echo chamber" and "ecosystem" IMO)


I'm surprised people on that sub are asking for POSIX support back. Windows had it, nobody used it, because most modern software built for OSs like Linux and BSD aren't POSIX compliant themselves.

Even porting from Linux to BSD is some work, and they're quite similar in userland. Porting from Linux to "Windows Services for UNIX" (POSIX layer) seems like it is far more work, and if you're going to go that far why not just produce a native Windows binary without the dependencies?


Developers who use Windows seem to be picking up interest in developing for Linux and other Unixes (which makes a lot of sense). The POSIX layer can be useful to make Windows more Unix-y.

When working from Windows, however, I've always been very happy with Cygwin and regard it as an essential add-on to any Windows install. I really don't care whether Windows has built-in support for a Unix-like environment, as long as I can compile and run my programs.


No cabbage for you mister. Great news, finally I can run ASP.NET apps on linux and in docker containers. Makes my life as a mac user a lot easier!


@jrdnmadrid no cabbages, just a standing ovation: Compare MSFT from http://prdlxvm0001.codify.net/pipermail/ozdotnet/2014-May/01... to only months later https://www.mail-archive.com/ozdotnet@ozdotnet.com/msg11190....


I really appreciate the effort the .NET Core team has been putting in, along with the ASP.NET team. We are a heavy .NET shop, but I would love to not be tied to a specific OS platform because of our application framework choices (managing a fleet of Linux boxes is much easier with tools like Puppet/Chef, Powershell DSC is getting the Windows world closer but there's not a lot of support behind it yet - at least on my *nix boxes my configuration is just a bunch of text files).


Why cabbage, MS is doing great these days :) - glad to see them going Open Source with a lot of stuff! I saw you registered 26 days ago.

How's this PR different with how you did it before ( just wondering - i suppose it's a lot of action - reaction related - direct) ?


You like cabbages?


piles on

Thank you for helping bring CLR to FreeBSD.

https://github.com/dotnet/coreclr/pull/782/files#diff-ebcfa0...

That's clean, documented code man.


Can you all get to work on Office compatibility next? I don't care about .NET/CLR either way, but I still get sent documents in proprietary MS formats and they're still a major pain. I'd love some kind of import/export library from open formats into MS proprietary stuff.


I know you're being modded into oblivion and it's more likely for tone than anything else. For the most part, I haven't had much trouble using LibreOffice against newer ms .(doc|xsl|...)x documents, which is much closer to open than anything from ms-office before it. The oddities tend to be the use of fonts that aren't embedded or the use of other embedded content that will never work outside of a windows context. The simpler the document, the less trouble though.

Are you actually having significant problems in your day to day use, or was this just trolling?

All of that said, I'm actually very happy to see MS opening up .Net/CLR because there is a lot of code that runs under it, and being able to port and reuse that in a linux environment. Even in my current project creating a replacement for a .Net application in node/iojs, there's a small service I'll be using that will run with mono because re-creating the piece in question would be problematic, though that piece will enable a live data migration (encrypted data) to something that won't need the .Net code in question.


In the work I do, I still have to deal with older .xls and .doc formats. Agreed that LibreOffice and open source libraries do indeed work much better with newer MS *x documents. It's pretty far from 100% though. These semi-open formats are a hassle for me, and they're a major hurdle for any organization trying to build a business built on parsing MS Office files on an open source platform.

As far as MS opening up, I won't deny that they are moving in the right direction, but as far as I'm concerned there's still a ways to go. Get complete compatibility for Office file formats, and I'll be much more sympathetic.


Awesome.

As a Linux guy (and running a couple FreeBSD servers) in a Windows world and Windows shop, I'm glad to see these ports. I'd love to take our code and port it to different platforms, alas .. 'WinForms', 'WPF', 'WCF'.

Ignoring the UI part - there are no solutions as far as I'm aware (nope, Gtk# isn't one either) - what do people use as a WCF replacement? So you're developing a .Net app and need SOAP for one reason or another: What do you pick?


> So you're developing a .Net app and need SOAP for one reason or another: What do you pick?

I haven't used it myself, but I've seen it mentioned several times, so I'll just throw it out there for visibility: https://servicestack.net/


ServiceStack is fantastic for full fledged webservice. For a Sintra style apps however make sure you check out http://nancyfx.org/


+10000 for Nancyfx! I have multiple projects using Nancyfx on Linux and it runs great. You can totally run webservics or web sites off of Nancyfx. Heck you don't even need to have a web server to run Nancyfx, it comes with its own host. I run my projects with nginx and it runs like a champ.


Looked into that in the past, but that's a commercial project, right?

While the setting I'm looking at is commercial as well (a corporate product), the idea is a rogue "let's see if I can port that in my free time, because why not" project. No budget. No corporate interest.

And frankly, porting WCF services to SS would be a tough sell, if the former work fine and are 'free'/included, so I guess there's zero chance to upstream this, unfortunately.


ServiceStack v4 is commerical and really, really cheap. ServiceStack v3 is licensed under MIT (or BSD) and extremely mature, the community has taken over support and it has allowed Dennis to focus implementing features that $enterprise really care/need that the usual developer does not.


It might be an awesome project. I've no idea who Dennis is, but may he earn a decent living.

That said: Cheap? I know that attitude comes up a lot. It seems a business license (required, because > 10 people) is a thousand dollar. In what world is that 'cheap', if you compare it to WCF aka free?

Yes, $999 (per developer!) might be reasonable, but read the idea up this thread. I'd love, as in wishful-thinking?, to port our software, in my own time, without any support or budget, to platforms I care about. Let's say SS allows me to replace the WCF parts: How would I sell that to my boss?

"Look, you know those weird platforms you have no love for? Pay $999 per developer and our software is now able to run on those."

It's not going to happen. The commercial license of SS makes it immediately useless for my pet project. It doesn't matter how amazing it is, unfortunately.

We're a very MS heavy team. I'm the outlier. Anything that doesn't come from MS (and sometimes even those suspect 'open-source' projects - how do they make money??) basically doesn't exist. Porting WCF stuff to SS would introduce a new framework, replacing well-known technology with something else. Ignoring the price this would be tough and anything but cheap: Training has a cost as well.


IMO, from my experience with cross-platform .NET stuff, ServiceStack probably is your best choice. And yeah, it costs money. But seriously, a grand is nothing compared to, like, your salaries, if it will improve your development and workflow. If it won't, and you're making arguments to that end, then don't do it - and that's valid too, your boss would be right to disagree with you.

Sometimes open source is the wrong answer for an organization. You may not like that, but that's when you quit (which is not a big deal).


ServiceStack might be the best thing mankind built. I cannot use it.

1) I'm talking about a pet project. Not 20% as in one day a week. I'm working normally, would love to see a way to make this (a port) happen in the evenings. $50 would be more than I would like to spend here, because it's my own money and the end result - even if successful - is probably a 'Huh? Interesting..' and that's that. It would be for my own amusement.

2) To see if it will improve my workflow I'd need to invest (time) in it first. Since I don't have a use case for SS (see 1) I see no point doing that in the moment. I learn new stuff every day, the queue is basically endless. SS could've jumped to the top if it would've been a viable option. So I'm not making the case that it won't improve my workflow: I plainly don't know anything about it.

3) Yes, my salary is more than a grand / month. But that's a crappy metric. It certainly feels as if lots of people here make $100+ a year, the SF crowd. Right, if you basically cost that much in 4 days then this might be something to argue. But that scale changes rapidly with smaller salaries.

4) Even if we agree that $ 1000 (per nose) is nothing, who's going to spend that? No clue how this works in other companies, but here you have to make a case, get X people from management to agree. Why would they? "I would be more productive"? Without snark, I'd really like to see a case for a purchase like this that could work in my scenario. Here's the rundown again, that's what you'd face: "Replace a free and well-understood MS technology in a shop run by MS fanboys with an open-source stack that no one knows a thing about for thousands of dollars, so that the one developer with his crazy interest in non-Windows environments can rip WCF out of our stable and mature product to - maybe - port it to Linux, because he'd consider that cool". No offense, not trying to attack you here - I just want to make it blatantly clear that 'random' comments a la 'that money is nothing' are - if not wrong in general - not useful here.

5) Quitting can be a big deal. It would be in my case. Circumstances, details matter.


> Even if we agree that $ 1000 (per nose) is nothing, who's going to spend that? No clue how this works in other companies, but here you have to make a case, get X people from management to agree. Why would they? "I would be more productive"? Without snark, I'd really like to see a case for a purchase like this that could work in my scenario.

From what you're saying, and I'm not saying this to rip on you: I doubt one exists, and it doesn't sound, from your description, like making one would be an ethical maneuver anyway. I don't work in Microsoft-heavy shops because I don't enjoy it, but I don't try to change them to suit me because it would not be in the company's best interests and I am mature enough to understand that. (If asked, because I've been hit up by decision-makers in Microsoft shops before, I'll explain my position, but that's always from the outside.) I feel you when you say that your circumstances preclude finding a better fit, but that doesn't mean that introducing additional risk is the right thing for the employer who pays you to work effectively on their behalf.

Changing established shops is at best difficult and comes with little payoff unless you own the damn thing, and should be done with the best interests of the org in mind--that's what they're paying you for. If you can't get what you feel like you need and what you want doesn't outweigh the opportunity costs, you should leave, because it's better for all involved.

(A grand a year really is nothing, though. Software developers have broken their brains when it comes to cost structures. That's in the ballpark for the amortized cost of a cubicle, which can realize way less value for the company than the right piece of software. Or, you know--the Windows Server CALs that are the actual cost of WCF.)


I don't understand what's up with the .NET community and the perpetuation of proprietary licenses for frameworks. I do not understand how developers can build on top of proprietary platforms.


I think you mean restrictive license. There items nothing wrong with corner case proprietary licences. What is every license before it is stamped 'open source' or 'free software' but a proprietary license? Many people consider copy left licenses more restrictive than your average commercial license anyhow.


No, I really do mean anything that is not open source and I do not agree with you. For software development at least, everything is wrong with proprietary licenses that forbid ANY of these freedoms: http://opensource.org/osd-annotated

And any would-be license that isn't already stamped as open-source by OSI or as free software by the FSF is an instant red flag, simply because there are plenty of licenses available to pick from.

> Many people consider copy left licenses more restrictive than your average commercial license anyhow.

Even though some people might say that, that's only because they don't know what they are talking about. A license for proprietary software does not give you the right to fork. As a recent example for why that is important, ask the people that have invested in FoundationDB how they feel about that, then read the story of MariaDB on Wikipedia to understand the difference.


Honestly I do not understand that you really would not understand. So here is a typical example of why developpers do build on top of proprietary platforms: startup creating hardware which gets interest almost exclusively from the industry where due to all kind of reasons a common proprietary platform, Windows, is used. Hardware came first and then at one point early on they have to decide what toolset/frameworks will be used for lowlevel and toplevel applications. But really there is not a lot of choice at all: either do what the others do and develop for Windows and as such assure customers will come in, interoperability with other hardware is easy and so on. Or do 'the right thing' and go open source which has the benefit of open source but that is about it. Good luck finding customers willing to embrace your product and use it in their production lines if it runs on some, to them, alien platform of which they couldn't care less what license it has and if there is no straightforward way to make it work together with the hardware they currently own. So basically you are choosing between keeping your startup alive and well and making an income, or bakruptcy.


FYI v4 source is AGPL. They're not very good at mentioning it on the main site though. (https://github.com/ServiceStack/ServiceStack)


Thanks, I didn't even see that. The site lists 'free' only for a limited featureset (like 10 requests it seems?). That'll let me check it out at least.


V3 may also be suitable for you as well and is completely free BSD/MIT licensed and is supported by a active community on GitHub. V4 is essentially V3 w/about a years extra work on top. Dennis is the creator of ServiceStack and it is now his full-time job, income supports him in implementing features that corporations - like yours - need.

ps. condolences about the "if it's not from microsoft it doesn't exist", there exists many companies with better cultures. Outliers like you are worth their weight in gold.


V3 has a free license suitable for usage in closed-source projects. It's still quite usable. V4 switched its free license to the AGPL.


Depending on what parts of WCF you are using in practice, it may just work [1].

[1] http://www.mono-project.com/docs/web/wcf/


WinForms seems to work OK under Mono on Linux, which also IIRC claims WCF support.


Why is Gtk# not a solution?


At a guess, I'd say that would be a rewrite, not a port.


There's that, right :)

That said, I apologize for the 'no solution' part. It was uncalled for. I personally don't like working with Gtk# (said as someone that still seems to be listed in the Tomboy maintainers file, although I haven't contributed for a long time). It might be a viable solution. I plainly don't like it very much.


Winforms support in Mono might work, but many 3rd party controls simply don't work right outside windows... but that depends on your original project... WPF is almost a non-starter in mono. I mostly work with services and web based apps, so it's more likely to work in mono. That said, I'm doing most new development in node/iojs these days, and prefer it that way.


Feels like PG has to rewrite an article.

Microsoft woke from a coma.

http://www.paulgraham.com/microsoft.html


Honestly, that kind of thing gets on my nerves. I guess I don't really care about computers in PG's view.

The reason that Windows sucks for most people is that IT departments suck. It's really something that has motivated me to find ways to stop the suck. There are lots of great innovations on the platform since Vista that just aren't used...It's like Windows admins are frozen in time somewhere around 2003.


Quite right, my home computers hardly had any problem, whereas the ones managed from IT, oh well....

I use Windows since version 3.0 where I configured my AUTOEXEC.BAT to boot straight into Windows, and after several detours with many UNIX flavours in the last decades, I have settled back in Windows as my main desktop OS.


I think the amount of remote exploits and drive by installers has something to do with it too... too many people have computers with malware on them. I don't entirely lay the blame on MS here as even Chrome, Firefox and various addons like Flash and Java have had remote exploits. Most malware doesn't need elevated privileges to be effective either. A lot of them run as browser extensions now.


More like, it died and a twin sibling took its place. Nowadays, Microsoft looks nothing like the old Microsoft.


It would be nice to have both JVM and .NET CLR available on major unix like platforms.


That is indeed the goal and where the CLR is heading!

This work was done (almost) entirely without any MSFT involvement. Contributions were done by a bunch of guys affectionally called "the port team" whom you wouldn't want to meet in a (technical) dark alleyway ;)

@janhenke, @josteink, @ajensenwaud, @xied75, @kangaroo, @ghuntley, @qbit & @richlander (MSFT)

https://github.com/dotnet/coreclr/issues/455

edit: Special shoutout to interoute.com and Paul Kelly whom comped the infrastructure needed for the team to collaborate on/test with FreeBSD, NetBSD and OpenBSD.

edit: Extra special shoutout to @kangaroo who was the first successfully merged pull request after MSFT open-sourced everything. His commits added support for .NET on OSX. He was awarded a custom, personalized/engraved scotch glass at the recent .NETFringe open-source .NET conference in portland a couple weeks ago.

https://twitter.com/search?q=%23dotnetfringe


Working with the "FreeBSD Port Team" was great. The team really lived up to the aspirational name. It would be fair to say that there were people from the port team on the repo and the gitter room (https://gitter.im/dotnet/coreclr) more hours of the day than not. Nice!

We gave @kangaroo a "port" glass to thank him for his OS X "port" and did it in Portland at the already mentioned .NET Fringe conference. We also gave him two bottles of port, one of which was "Washington Port" from Whidbey island (Whidbey being the codename for .NET 2.0). The engraving was done in the Microsoft "Garage".

We're looking forward to giving out a nice set of engraved FreeBSD port glasses once FreeBSD catches up to the OS X and Linux.


A BIG THANK YOU (MSFT and FreeBSD) to make this happen!

I've been a Java on Ubuntu/Linux for as long as my professional career but would love to see .NET becomes THE first class OSS enterprise stack on FreeBSD.

FreeBSD needs more LOVE from MSFT.

Having said that, I would love to see the .NET team produces something like Gradle/Maven (aside from the hatred toward Maven, NuGET is way behind and MSBuild reminds me of Ant thus NuGET + MSBuild combo is similar to ANT + Ivy instead of Maven/Gradle. And if you guys ever decided to adopt a scripting language for build, please, for the love of technology, do not use F# for the build scripting language like http://fsharp.github.io/FAKE/, just... not readable :)).

I cannot wait for the day when I can write a solid .NET GUI app or tools or Web-App for FreeBSD that looks nice and be productive with the tooling around it (unfortunately IntelliJ/Eclipse, Java, Maven, Tomcat/TomEE, Jetty, PostgreSQL/MySQL stack are still way too far ahead).


That is really nice to see. I remember really liking c# but ultimately wanting something with better Unix support. I'd really like to see this succeed.


"collaborate on/test with FreeBSD, NetBSD and OpenBSD" - so this is a NetBSD and OpenBSD port too?


Direct from one of the main contributors (@janhenke) - "To my knowledge NetBSD is not started yet, OpenBSD has some initial commits but is not close to FreeBSD yet"

.

If BSD on .NET is of interest to you (or anyone else reading) and are willing to help out please introduce yourself in https://gitter.im/dotnet/coreclr . Any help is appreciated on all systems, even if it is infrastructure, documentation or general marketing/pr.

.

Additionally if you want to see .NET on OpenBSD/NetBSD please jump in the channel and let us know how, why and where you will be using it. The team is quite small and wants to make sure efforts are focused correctly.


To further expand on that, I would say that currently we have ambitions for the work invested in the FreeBSD port not to be FreeBSD-specific, but also let the other BSDs benefit.

I still think the main focus of the team is getting it working on FreeBSD, but if OpenBSD and NetBSD can gain from that effort we're more than willing to work together.

So far, unfortunately, there has been little commits (or even testing) for the other BSDs. So if you want your BSD represented, it looks like you may have to step up and take some responsibility :)


Working on it now...


and boom. Basic platform support by @justincormack for NetBSD just got merged - https://github.com/dotnet/coreclr/pull/798/commits


There is a fair amount to do, mainly around unwind and contexts so far...


Gather a team. Take bite-sized portions at a time. Be realistic.

I think this github-issue here is full of good advice, so please do check it out:

https://github.com/dotnet/coreclr/issues/803


What is the web server going to be?


Selfhosting baby, nodejs+express/ruby+rack/sinatra style.

For more details check out http://owin.org/ which is the main project that has been working to unshackle .NET from IIS by providing a implementation free interface for building http applications.

Other projects of interest are https://github.com/SuaveIO/suave and https://servicestack.net/ , http://nancyfx.org and https://github.com/Topshelf/Topshelf


I have been doing some work with Kestrel but I know it's not destined for production usage. I'm wondering what will be the solution. I'm interested in running core clr web apps on cloud based linux vms.


I'm curious, is there a reason to avoid using .NET for web services deployed on *nix?

I'm interested in using it, I love .NET as a platform, I just have this vague sense of worry that I can't quite rationalize. Mostly based on Microsoft's past performance with cross-platform efforts.

Thoughts? Is my gut feeling right or wrong?


I can't answer with complete certainty, but I'd like to point out that C#/.NET is now more open than Java/JVM. A case like Google vs. Oracle couldn't happen.

- C# is standardized (albeit an older version that the current one) - C#/.NET has more permissive licenses (MIT & Apache vs GPL) - C#/.NET is now developed in public, on GitHub - Microsoft has promised not to sue for patent infringement on .NET

I'm not a lawyer nor do I play one on TV, but it looks like even if Microsoft changes it's mind, it can't take it back. The worst it could do would be abandon support. That would be a huge hit, but something the community could recover from.

Meanwhile, you have Java with Oracle shutting down security fixes for Java 7, unless you get a long-term support contract. Which would you rather deal with?


> it looks like even if Microsoft changes it's mind, it can't take it back

I had some correspondence with RMS back in November right after CoreCLR was announced, and he doesn't seem to agree. All he said was that MS's non-standard/custom patent grant isn't sufficient and that http://endsoftpatents.org/2014/11/ms-net/ is correct.

While I think http://www.fsf.org/news/dont-depend-on-mono was cogent and made a convincing argument at the time, and there may even be problem with the new patent grant, the endsoftpatents.org analysis just seems like a poor one.

I also pointed out that the .NET Micro Framework wasn't under a custom patent promise, but instead has been available under Apache 2.0 for years. It seems that even if let's say the worse case scenario is true, and there is a loophole in the patent promise, and it was put in to facilitate nefarious plans on MS's behalf, then the free software community could render even such deliberate plans as ineffective. The key move would be to continuously and aggressively hedge on alternatives and to make it well known that's what's going on. The community could aim for aggressive portability to other languages/runtimes with the use of a tool to do mechanical translation. If MS (or one of its affiliates) tries anything shifty, the community flips a switch and for compatibility relies on an NETMF-based runtime (still being available under Apache 2.0 and all) and otherwise begins living entirely in Vala land, with MS having proven they don't want to play ball.

It's like Mutually Assured Destruction, except for one side's wholesale elimination of their risk of being destroyed.


CoreCLR is open source now, so even if Microsoft abandoned it tomorrow, the community would keep maintaining it or worst case most of it would probably get merged into Mono. This BSD port was mostly a community effort by the way.

I've recently decided to switch to .NET for everything. Mainly because I really like F#, and I've been using C# for a side project in Unity, but also because an open source CoreCLR makes me worry a lot less about vendor lock in.


Nice choice! There is a _lot_ of investment in .NET at Microsoft. The move to open source and the community reaction to it has only made it more exciting and compelling for the company.

I get and appreciate the sentiment on "if Microsoft abandoned it tomorrow". Just clarifying that this risk is _very_ far from reality.

It's also really interesting to look at how Microsoft is approaching C#/Roslyn. One aspect of that is the C# 7 effort, which has an ambitious scope and has a great deal of open/public interaction. Check it out: https://github.com/dotnet/roslyn/issues/2136


IIRC, the stack was mostly proprietary commercial software. It was expensive to get started unless you use the dev edition, even then you need Window.

For me, the web development was too magic, way more so than RoR. I got an acquaintance that only do .Net. And he harps about how .Net got Razor and data base represented as object unlike open source. When I pointed out that Razor was just a template engine and that database thing is just ORM which many other MVC frameworks have he just didn't get it. He didn't get it's a template engine nor does he understand that it's an ORM. Magic! I also tried some .Net dev, and it's very magic in term of abstraction. The VisualStudio IDE is amazing and C# seems like a much better language than Java. But the ecosystem isn't as rich, Apache such an awesome organization but Oracle is very pushy.

The downsize for me is big, ecosystem. Most of the open source projects play very well together, C# is a newbie, I rather wait for it to mature within the open source space (including books and tutorials).


I feel like there's this stereotypical .NET dev in everyone's head on HN. Your friend, for example, didn't even know that Entity Framework was an ORM, and he likes "magic" and not understanding any lower level implementation.

That's too bad, because there are tons of sharp .NET devs who despise the concept of "magic" (and no, ORMs are not magic, and Entity Framework is fantastic) and who understand the abstractions that .NET offers. I would hesitate to write off all .NET enthusiasts as clueless less-than-hackers.

(disclaimer: Microsoft employee, nothing to do with .NET though)


One thing I find good about Microsoft's libraries is that for the most part they do a good job of working as magic and working with someone with understanding.

XNA is the example I always use. You can use XNA and make games without understanding anything about the graphics card but you can also dig in and write your own shaders and basically go however deep you want to/need to.

There are some things in .NET that do seem kinda magic, and razor is one of them. Not because it's a templating engine but just in how lightweight it is and how surprisingly decent intellisense can be with it. Most templating engines feel so verbose and ugly after working with razor.


Agreed on Razor... it's by far the best template engine I've used. It's a shame it's a bit of a pain to use outside of a web context (email templates, for example). Though I actually like using component-like systems more now (React, MercuryJS, RiotJS, Polymer...) with JS client and server.


I know what you mean, but I also think that street runs in two directions. ASP.NET was pretty late with MVC because (of course this is just me speculating) that was what those dirty Django & Rails heathens were up to. Turns out, MVC was a pretty good idea after all.


If you use ASP.Net MVC it's a lot less magic and more predictable than using webforms... That said, Razor with C# is a really nice template engine. The integration is far nicer, and more predictable than any other I've used. These days I'm targetint React under node/iojs which I would say is far more magical...

Entity Framework is also a really nice ORM for most small-mid sized projects... If you're really stuck on using a strongly-typed environment I will say that C# is one of the better ones and would choose it any day over Java (and a lot of others). My issue with many .Net and Java projects is that a lot of "enterprise" design patterns are used when they are more in the way than helpful. Abstractions are used which only improves testing or portability, but neither testing or portability are used. But this is more of a design choice from the developers than the languages/platform used.

I also disagree with your reference to .Net/C# not having a large ecosystem... There are a lot of tools for C# out there, most open-source and easily available via Nuget. Not to mention that Stack Overflow has authoritative answers to almost anything you could need with .Net or C# and has MS employees as regulars to offer support.

This is from someone who doesn't even write much C# any longer (still supporting two legacy apps in C#), and does most of his development being deployed to Linux servers.


Just because someone doesn't understand it doesn't mean it's magic.


I wouldn't worry about the past part. We use IBM software on *nix and they were worse in their day than MS ever was.

A few people have concerns that the patent grant isn't as broad as it should be.

For me it would mostly be an ecosystem thing. I use Typescript because it drops right into the pipeline I was already using, but switching VMs is a big ask. How good is Thrift for .NET?


Yeah, there are Microsoft patent traps out there for code that uses core .NET features in idiomatic ways, and Microsoft's patent grant only covers what's necessary to implement the core CLR. They also only used to cover patents that were essential to implementing the CLR, so just using code that implemented it in the obvious/efficient way could land you in legal hot water. I'd hope they've extended it to cover their actual implementation now that it's open source.


The patent promise that the MIT-licensed CLR has been available with since .NET Core was announced last year is completely different from the patent promises MS has used in the past, and definitely applies to Covered Code (i.e., what they are shipping), just like Apache 2.0. In fact, it's almost as if they referenced http://www.fsf.org/news/2009-07-mscp-mono while crafting the new promise, to intentionally address the problems in that post.

> just using code that implemented it in the obvious/efficient way could land you in legal hot water

Apache 2.0, GPLv3, and MPL2 are no different; you can't take Covered Code that company X is distributing but that doesn't infringe their patent A, then modify it to make use of methods/techniques that do infringe patent A, and expect to be indemnified from litigation. And each of these other "sufficiently-free" licenses explicitly says so.

Having said all that, I do wish they would have expressly used Apache 2.0 instead, just for good measure and to avoid the casted aspersions.


The tooling isn't as good as on windows (namely, httplistener isn't as fast, ditto with the mssql driver).

It's "safe" to use, and will be for the future but is not on par with windows yet.


IntelliJ is better on Unix than Monodevelop - there is still no end to end story for *nix developers backed by MS (compared to something modern like Dartlang)


Monodevelop/Xamarin Studio does indeed have a long way to go. Do you know about the open source project OmniSharp? http://www.omnisharp.net/ which provides xplat development toolchain. .NET in Sublime Text/Emacs/VIM yep. It was created and maintained by both employees of MSFT and the OSS community.


It's an interesting technical achievement and serious question without trolling - is there demand for running .NET apps on anything except Windows? If you're in the .NET world why would you want to do anything else?


I'm going to offer an anecdote that isn't technical.

Like it or not, but there is a definite stigma associated towards working on Windows. Developers on HN are surprisingly open-minded towards developing on Windows, but in the real world you'll find a lot of developers that look down on those that choose Windows as their development platform.

I've met a range of devs, from those working at startups, to people who work at Google, and many of them have been extremely dismissive of not just .NET, but those that work on Windows. I've worked at a startup using ASP.NET, but I reckon many C# devs would probably rate their chances of getting a job at a big tech company to be slim and none because they favour .NET. I spoke to some ex-Googlers a while back at an event, and I asked about the Google interview process. They asked me what language I coded in, and on hearing that my main language was C# they were less than favourable about my chances. It's a shame really, because I'd quite like to work somewhere like Google, but I wouldn't want to have to hide the fact that my strongest language by far is C#.

In my mind, bringing .NET to Mac and Linux will do something that we rarely see in the development world. The Windows world will be bringing something valuable to the Linux world. The best part about this for me isn't being able to use .NET on an OS that I'd love to learn more about, but not having that niggling doubt in my head about my choice of language/framework, and I reckon a lot of .NET developers, especially younger ones will feel exactly the same.


I think the perception is that you learn Windows in your university business school's IT classes and C/Python/Unix/etc. in the computer science department. It goes beyond "eww a Microsoft language" and into "just another b-school pseudoprogrammer who's going to write awful code I'll have to maintain forever". And up until very recently, choosing an MS stack meant voluntarily locking yourself into a single-vendor platform, something that horrifies most Unix hackers. C# isn't alone in this; notice that approximately 0% of F/OSS code in a typical Linux distro is in Objective-C.

I don't claim that's an accurate perception, but I've heard quite a few comments to that effect from this side of the aisle.


There are basic some things that make using open tools not work very well... the following 3 seem to bubble up and stop making lots of unix dev + python tools not work:

No fork

No ansi in terminal

Seperate Select for files and Sockets on Windows..

Fix those and I bet loads of the open source tools would start working, making Windows much more attractive to X platform devs.


In my eyes the problem is no longer technical, but cultural. There are a million things Microsoft could do to please developers on other platforms, but I just think that there's no changing some peoples minds. When people think of .NET developers, they think of a middle-aged man that works for a big company writing corporate code, and this is not the kind of developer that start-ups or companies like Google want in their ranks.

The moves that Microsoft are making will help validate those .NET developers that enjoy working on the framework AND want to feel like a part of the larger developer community. Technically, things will continue to improve under this direction, but what I really hope is that the per-conceived notions about .NET developers are laid to rest.


> Seperate Select for files and Sockets on Windows..

And linux has the epoll/posix aio split for sockets and files.


> "Developers on HN are surprisingly open-minded towards developing on Windows"

OT, but I have not found this to be the case. Most comments on HN that mention developing on Windows are usually followed up with "Windows? Ugh", "OP must not have a choice", and other comments about how rough Windows development is.

Back on topic, as a C#/.NET developer I completely agree with your points.


Imagine a decade ago telling people your favorite language was JavaScript... I've been a fan since long before "The Good Parts" was published, and still am. There are still a lot of people that are completely dismissive of it.


Exactly. I could not have said it better myself, matches my experiences as well.


Actually being multiplatform (not just variants of Windows) has real value. From my perspective, that means being able to use F# (a sort of OCaml.NET) anywhere. That, and true competition.


Feels risky, like something Microsoft might pull the plug on. Like Internet Explorer for Mac.

Microsoft has always been very stop/start about supporting other platforms - projects come and get cancelled and go.


Your feelings couldn't be more wrong on this. Making .NET cross-platform is one of their major initiatives towards creating a more open and future-proof Microsoft and part of the foundation for the next generation of their ecosystem. It's the very reason why Core was split off of .NET. They are betting the barn on this, its not some flimsy side project.

http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-i...


Well coreclr at least has 778 forks on github currently, so it will be a bit harder to pull the plug on hopefully. It's also mit licensed and has a patent promise. IANAL but it looks pretty safe, especially with the mono project picking up the code and integrating it (in theory).




A community is rapidly building around CoreCLR, and there are several companies that have a huge interest in running .Net languages on platforms other than windows (Xamarin, and Unity come to mind).


My current project at work is .Net based and I would love to have it run on *nix, as would the rest of the tech team. All of our infrastructure is based around Linux and I've had to spend quite a bit of time porting stuff over for use on Windows. The major holdup keeping us from using Mono or CoreCLR is that the tech we've licensed is .Net based but links against the Win32 API (for silly reasons like reading XML files to boot). Hopefully the vendor will move away from that in the future.


Wouldn't running .Net on Unix/Linux natively no longer be necessary with your .Net apps Dockerized?


Develop F# (or C#) with Visual Studio and deploy into Docker on CoreOS is the bright, bright future that is rapidly becoming a reality. See you later IIS, I've hated every moment dealing with you.


Absolutely. 100% looking forward to nginx CoreClr being trivial too.

Would also be interested too tighter integration between node and CoreClr. So I can write node modules in C# / F# on deployed to posix or windows.


Heck, no need for nginx - just self-host using OWIN and push the web-hosting concern up a layer to be mainly one about load balancing and handling deployments.


I think we need a reddit for people interested in running the CoreCLR/CoreOS stack. And an acronym. CoreCore? 2Core? Core2Core? CLROS? Dual Core?


Come up with something and I'll (and many others) will join. There's a pretty active community over at /r/fsharp already.


Yes and no. There are other little things that crop up. For example, I just built a GlusterFS based file share but Windows does not have a GlusterFS driver so I've had to settle for NFS with failover. The Gluster driver is faster in my use case and allows for simpler administration.


Speaking personally, yes I am very excited about .NET on *nix platforms. I am currently working on architecting a decent sized cloud application using .NET, Django and ElasticSearch. The entire platform will be built on Linux (CentOS or Ubuntu) to control costs.

Why are we using .NET? My company's experience is primarily in .NET and we need to carefully manage discovery costs across all the platforms we are going to working on. I am going to blog about the experience when the project is set to get underway later this year, so stay tuned.


Sure - Linux VMs can be cheaper.


There is an interest, examine prior threads re: CLR and open source on HN.

That said, as a FreeBSD fan (my own domain runs it, I've been running servers on FreeBSD for 14+ years), I'm a bit embarrassed I didn't know about this project -- work at MSFT in an evangelism role.

Glad I learned something new to explore tonight.


This project was (very) briefly mentioned on HN one time earlier[1], but quickly disappeared from the front-page without too much constructive attention.

In reddits /r/freebsd, there was a also some slight noise, which predated the HN-post.[2]

Apart from that, I think it's just all been happening on Github. All in all, for the little attention it managed to attract, I think we've made some good progress so far.

[1] https://news.ycombinator.com/item?id=9031570

[2] http://www.reddit.com/r/freebsd/comments/2vikrs/freebsd_buil...


What's the upside for Microsoft in that?


Microsoft began to suffer when they forgot that they are a software company. They were believing that they are a Windows/Office company. Those cash cows were milked to death, additionally killing everything else along the way. At some point (way later than they should have) they understood what was happening and where it leads. The solution is going back to software (and its cloud form). Sell anything, target everything. Develop for widest possible audience, but also pursue niche markets. Like Microsoft did in the '80. Another point is developer attraction. They need "cool", and this kind of hardcore hacking is cool. The new Microsoft wants to sell any software/service, no matter the hardware nor the OS. To transform from the old Microsoft to the new version, they need cool software. And who can make this happen? Cool developers.


The bigger picture for MS now is building out Azure. They don't care what OS you are running on Azure as long as you aren't using AWS. You know Azure is forecast to exceed the revenues of Windows and Office by 2020, right?


They are shifting away on their reliance of selling the OS to make their money. Putting "Windows" first was part of what was tearing Microsoft apart from the inside and was looking to leave it in the past. They no longer put that much weight on selling Windows licenses. I hear Windows 10 is even going to be a free upgrade, a la OSX.

So what they gain from all of this is getting back into the ring. It also polarizes Windows to a desktop OS (where it belongs) vs Server OS.


There is no more growth (as in ever) in the desktop PC space. It's a mature market as far as the eye can see. Upgrade cycles continue to slow.

Mobile and Cloud are where everything is happening. Amazon own(ed?) Cloud, Apple & Google own Mobile. Whole generations are growing up without using Microsoft tech even in developed countries. Which of the major tech companies to arise in the past 10 years use a Microsoft tech stack? (hint: none)

Microsoft tried to take on mobile with Windows Phone 7 and Windows 8 (Surface, Windows ARM, etc). They were all duds more or less and Microsoft was at risk of becoming completely irrelevant.

I think Microsoft's leadership (including Bill & Balmer) took a long, hard look and realized that Mobile has already past the hockey stick growth phase. At that point only the one or two competitors seen as leaders survive; Apple and Google have already won.

They were also at risk of Amazon and other hosting providers eating away at their server business by making it easier to deploy servers at the infrastructure level. Microsoft also critically lost developer mindshare; despite C# being a much better language than Java (and Oracle's mis-steps creating enormous opportunity) no one gave a shit.

There's a thing that happens in large organizations where a leader can become boxed in and unable to change direction. Balmer was clearly in that position and as someone who deeply cared about Microsoft he stepped down and gave Nadela the reigns. You can also bet Bill is backing him or he'd never be able to get away with making such drastic changes.

So what does Microsoft gain? Getting people to use their software. They'll never own the Mobile OS, so may as well accept it and move on.

People don't want to run Windows Servers? fine, run Linux on Azure. They might as well take your money since they sure aren't going to get you to switch. Why did they push Mobile Services so heavily for iOS? Why do they have Android SDKs? Because if they can't own the Mobile OS, they can at least grab a piece by being a really easy to use back-end for the app ecosystems.

And why open-source C# (Roslyn) and the CLR stack? Capitalize on Oracle's lawsuits over Java and Sun/Oracle's mismanagement of Java (and the years of stagnation Java suffered, though that has changed recently). They'd rather sell you developer tools, or make sure that cool new open-source projects start using C# so it makes it more natural to support Windows in addition to *nix/Mac.

Now that it's all MIT licensed and contains full patent promises I consider Mono a completely legit fork. That means even if Microsoft dropped it all tomorrow, Mono could still continue unfazed.


> Which of the major tech companies to arise in the past 10 years use a Microsoft tech stack? (hint: none)

Game studios.


> Which of the major tech companies to arise in the past 10 years use a Microsoft tech stack? (hint: none)

I think that maybe StackExchange qualifies


One of the StackExchange co-founders was an ex-Microsofter.


Which links with one of the previous posts about Microsoft wanting to be "cool" to developers again. The bright sparks who will go on to found massive tech firms might join a big tech firm first for a few years - odds are they will keep a good relationship with them in their new venture. If all the startups are being founded by ex-Google, ex-Apple, ex-Facebook folk then that will only further harm Microsoft.


I think this comment is spot on. MS is a loooong way from losing the enterprise, but that isn't where the money (or growth as you pointed out) is anymore. They really have nothing to lose from going open, so they're best bet is to get in bed everywhere they can so they have a position to work from later if they happen to develop some advantage.

Apple is killing it on all fronts it competes on, but I wonder, will people continue to pay $800 for a new phone every 2 years, $2500 for a new laptop every 3 years? My intuition says no, but from what I read, Apple is taking more and more market share where it matters, in 1st world countries where there are actually profits to be had. I used to slag on iOs because it was so limited and primitive, but the reality is, they're probably strategically releasing features when they choose to, it's not like they're not smart enough to figure it out. If they're lazy, they could just let Google do all the expensive proving out of features, and then release a better version constantly a year behind and make a killing. Kind of like what Microsoft did for so long, except Apple has much higher volumes.


To answer my own question, I guess it injects life into C# and perhaps enables them to sell more Visual Studio and maybe brings developers back into the Windows platform ecosystem. Even so, it does so at the cost of Windows server licences and potentially starts to erode the need to run Windows servers at all.

Leads me to think back to when Steve Jobs came back to Apple and one of the first things he did was kill all the Apple-licensed Mac clones.


My guess is that they want to sell two things: Azure and Windows Phone via Xamarin.

Say open-sourcing .NET convinces a team or a startup to write their new app in C#. When it comes time to deploy to production, maybe they'll use Azure. VS has some Azure integrations to make it easy.

Now the team needs to write a mobile app. They have the option of using C# with Xamarin. Conveniently, you write Windows Phone apps in C# too, so maybe the team decides to target all three platforms instead of just the major two since they can get so much code reuse. A phone platform is really about the amount and quality of applications.

Sun was never able to monetize Java very well, but MS is in a little different circumstance since it has a cloud service and a mobile OS and hardware.


This. It also applies to the enterprise, all those in house data centres that are ripe to be migrated over to Azure.

Microsoft care an awful lot less that you migrated your Oracle server to Linux if you run that server on Azure...


That I my speculation as well.. when the company I work for migrated from rented hosting to cloud for easier growth, they went Azure because the existing software is all in .Net on windows... Even though new software is targetting Linux, we're staying on Azure mainly for entropy.

It's a valid strategy for keeping their corporate customers.. they have that developer mindshare, and can reduce the systems employees (SysAdmins, DBAs, etc) to boot... Too many corporate environments have dev and admin groups that are combative to eachother... "The Cloud" offers advantages in many of those environments.

I'm not saying it's for everyone, but I can see the appeal on several levels. Though working with some of the azure tools via node, it's not as bright as MS makes it out to be.


Visual Studio 2013 Community Edition is a 100% free 100% fully featured VS.

They are definitely not trying to sell windows or vs licenses with these types of moves, give away the platform and good tools and they will make it popular and make you a lot of money in other ways.


Unless it works flawlessly under Wine, you still need to run it within a Windows desktop.

A Windows 8.1 Pro OEM license costs around $150, which if you're building a FreeBSD desktop from scratch won't come included in the purchase price.


Sure, and that is a fair point, I was just responding to the "sell more visual studio", but of course driving the windows ecosystem in some ways (online, os, whatever) is their stated goal.


I think MS is responding to an existential crisis.

MS seemingly got blindsided by mobile. When it comes to a consumer who is personally engaging with a computing device nowadays and not just doing it for a job, a huge number of eyes are now glued to a device that doesn't use a Microsoft operating system, apps not written in a Microsoft language, utilizing backend services not running Microsoft servers. They own a good part of the boring corporate world people mostly dislike and a decent share of gaming, but consoles are fairly evenly split and their desktop gaming monopoly is only riding on a continually dwindling amount of momentum (a large chunk of games are multi-platform releases, desktop Windows and the Xbox are popular but not necessary for gaming to continue).


They are hoping to sell more Azure services on the back of all this.


I think this is great because other apps like SQL Server, VS etc will now come onto the *nix stack. And there is a ton of demand for that. I for one love SQL Server.


> SQL Server, VS etc will now come onto the *nix stack. And there is a ton of demand for that

Doubtful SQL Server on the 'nix stack has much demand nor will it gain traction. In all OS' not Windows... Oracle, PostgreSQL and MySQL/MariaDB dominate. Not because SQL Server isn't available, but because they are all very solid very good SQL servers.


I've seen a surprising amount of companies with a stack of Java/Linux for the application and SQL Server/Windows for the database. Just look at Indeed.com's job posting if you don't believe me[1]. If SQL Server was on Linux, they'd switch in a minute.

RDBMSes that you pay for are still able to out perform free, community-developed systems [2]. I've done work on both the DBA and the developer side on Postgres, MySQL, and SQL Server, and I can tell you that if platform and cost were never an issue, I'd choose the latter every time.

[1] http://www.indeed.com/jobs?q=Java+SQL+Server [2] https://www.periscope.io/blog/count-distinct-in-mysql-postgr...


I've been involved in several projects with SQL Server on Windows and Java on Linux. The reason for choosing SQL Server is because that is the tool(+ Oracle) most DB administrators are familiar with.

If I could, I would choose PostgreSQL every time. But my clients do not have a person who is willing to learn to use Linux and PostgreSQL. Even fancy things like ultra fast backups with ZFS snapshots and PostgreSQL doesn't sell.

Anyway, working with SQL Server is fine, it's solid DB. But Microsoft should really invest time in a proper CLI tool that work on Linux.


Oracle seems to be the defacto DB at big installations, where SQL Server is common at shops that just want or already have Windows Admins.

The tools SQL Server provides are just GUI'fied versions of cmd line tools available on the other DB's mentioned here... so just saying "it's better because you can click on things" is not really a valid argument.

Not even mentioned above, but IBM's DB2 has a lot of GUI'fied admin tools as well as very robust terminal tools and a huge toolset available in the jtopen library. It's a good choice as well, although not as common in stand-alone installations (you'll encounter it more often bundled with things like as the backing db for AS/400 systems, etc)


The tools for working with those are nowhere near as easy to use or comprehensive and streamlined as the SQL Server Management Studio (SSMS) and SQL Server Data Tools (SSDT) / Visual Studio. I doubt they're as robust either. PostgreSQL doesn't even support returning multiple heterogeneous result-sets at the driver level.


Maybe I'm just not doing anything interesting (on SQL Server), but I'd appreciate you expanding on why you think it's superior. "PostgreSQL doesn't even support returning multiple heterogeneous result-sets at the driver level." - I'm not even sure what that means exactly.


SQL Server supports returning multiple result sets, i.e

select * from Product select * from Category

Then in C# you can pull out 2 different result sets and get two different collections. With 1 call to the database. So no round trips.

PostgreSQL supports multiple result sets if they contain the same columns. But the drivers don't support them. :(


Seems like you ought to be doing a JOIN here, otherwise your're returning completely un-related result sets and crunching them in your app logic. It's usually best to let the DB do the data crunching and just return out what you need.


Beyond retrieving the contents of several unrelated enum-like tables in one roundtrip, multiple result sets are also super-useful for grabbing a deep relationship tree of joined tables in one roundtrip.

Writing a single projected SELECT with a deep list of JOINs causes the single result set wire size to explode as you include more and more to-many relations. However, breaking up the joins into separate SELECT roundtrips to reduce wire size will increase latency.

With multiple result sets, you can take all the separate selects, stuff them up in a stored procedure, connect them with insert joins through temp tables, then return multiple result sets from the temp table contents. This gives the best of both worlds: low latency from one roundtrip and a small wire footprint.


It was a trivial example. Are you saying that you never write code that needs multiple un-related, un-joinable sets of data out of the database?

Even with this example - I need a list of all products and I need a list of all categories... Joining them means I have to write client code to split them up again for display.

In any case, I use this tactic a lot for CRUD apps and it makes everything quicker when I can call one stored procedure and get back 7 lists of stuff that I need to display on my page.


> Are you saying that you never write code that needs multiple un-related, un-joinable sets of data out of the database?

Well, I''m not going to say never, but I will say very rarely. The entire point of a RDBMS is to have related data.

> I need a list of all products and I need a list of all categories

Sure maybe, but in our ecommerce platform products have a field which is an id of a category and is linked via FOREIGN KEY. Each category has another id which is it's parent category... so you traverse upwards until you build the entire category path.

I can see wanting to eliminate a round-trip, but one could also just do two separate queries and then cache the results...

I can see why this feature might be a nice-to-have, but I don't think that single case is enough to justify using that DB exclusively (if it were that much af a demanded feature, I'd wager other DB's would have implemented it by now, especially heavy-weights like Oracle).


Let the search results speak for themselves. Try doing a search for: <database-type> multiple result-sets and you will see a lot of requests on how to do it.

For instance - https://www.google.com/search?q=oracle+return+multiple+resul...

Also, have you considered that you don't really know how useful this technique can be since this features doesn't exist in the databases that you use? In any case, availability of features ultimately dictates style. (And I bet money that if you looked in your code, you'd find a lot of places with multiple trips to the database.)

When you look at the search results, you'll find that there are some kludgy ways for people to work around this limitation in Oracle, PostgreSQL and MySQL. (Actually MySQL might have this feature now.) So I'm sure plenty of people are settling for the kludge and moving on instead of complaining.


Another responder explained the multiple heterogeneous result-sets comment. As for the tools...they are superior in the fact that they exist because no comparable tools exists for the competing database servers as far as I can see.

For instance - SSDT is basically an IDE for creating a SQL Server Project. You use it to create your tables, procedures, functions, etc. Every object's DDL is stored in it's own file. You store that in your source repo. SSDT will diff one server-database with another server-database and generate an update script. It will diff the project's DDL with a server-database and generate an update script (or update your project's DDL from the server). It also performs data diffs so that you can make two different server-databases contain the same data (or generate an UPDATE/INSERT script).

SSMS is not an IDE, it just lets you run ad-hoc queries and provides a GUI to manage most configuration element of SQL Server. It's got a GUI to create users, roles, permissions, etc. You can start the SQL Profiler from SSMS. It's got syntax highlighting and intellisense/autocomplete for database objects.

Other databases have some of these tools, but they don't come in one unified package - you pretty much have to cobble together your own kit for other databases.


I'm confused. How's SQL Server related to .Net? Put differently: What does the SQL Server gain by .Net being available for other platforms?

Are there any announcements to port SQL Server?


At the very least, CoreCLR could bring robust SQL Server client drivers to Linux/OSX.


SQL Server is actually a CLR host and this functionality is heavily used by existing apps (http://en.wikipedia.org/wiki/SQL_CLR). And no, I don't think an announcement has been made. However, this shows that it might be possible!


I asked an MS dev evangelist about that and he said SQL Server was likely to be the slowest to move across and open up as it's practically its own operating system and the team are isolated and conservative.


Deployment on Windows is a pain. The images are big, they have a lot of reboots (once a month usually). PowerShell is yet another thing to learn/deal with (despite being nice) but the simplicity of being able to SSH/SFTP doesn't seem to be totally there - scripting is still a second-class citizen. (Try setting up IIS as a reverse proxy with no GUI.)

IIS is ... meh, a pain compared to nginx, and nginx is gimped on Windows. I'd prefer to have nginx FastCGI to an ASP.NET server than use IIS.

Windows is fantastic if you've only got a handful of machines and buy into their other management systems that tie into AD. I'm guessing for companies running Exchange and so on, it makes a ton of sense.

But deploying custom apps I've written in F# or C#, Windows only gets in the way. If the CLR ran fine on Linux, that'd remove the only real barrier (Mono's great, but it doesn't fully support ASP.NET, and has other weird edges (but I've used it in production at high volume for years.))

No doubt this was Microsoft's concern all along. But now with Azure, they figure they can make money on Linux. And at the prices they charge for VMs, they could resell Google Cloud and make a great profit. Azure's compute prices are double Google's.


Not in the .NET world but I found it to be rather pleasent to work with in the past and I certainly wouldn't mind another option on Unixes.


F# running on Unix :-)


It seems pretty obvious that this makes porting existing windows applications to nix a lot easier.

It also opens up the playing fields for .NET developers to now target nix as well (without learning a new language).


To develop in a great language with great tools and deploy to a great OS.


Oddly enough I'm looking at the source for a command line tool, written in C# that runs under windows, but I need it to run under linux.


Could someone please explain how different this is from using Mono on Linux ? I mean internally that too would be running CoreCLR on the Unix-based system. Then what different did these guys accomplish?


Mono = LGPL and CoreCLR/.NET = MIT

Mono (aka Xamarin) are getting out of the compiler/language reverse engineering game and focusing 100% on mobile. They no longer need to clean room the MSFT implementation because the MSR license as a purple-pill. Now that Microsoft has relicensed under MIT developers are arriving in droves.

Advantages? .NET everywhere, SINGLE reference implementation/specification means no more bugs.

edit: You can see the transformation of Xamarin -> Mobile and replacing internal components from CoreCLR over at https://trello.com/b/vRPTMfdz/net-framework-integration-into...


That transition could take a long time.


I don't know about CoreCLR but with Mono I can run my .NET WinForms programs from the early 2000's right now.


> purple-pill

What does this mean? Googling it led to interpretations that I doubt apply here... ><


I read it as an auto-corrected typo of "poison pill" :-)

http://www.neowin.net/news/microsofts-net-poison-pill

This news, however, is a very positive step. Can't wait for Build next week...


I understood it as a halfway pill between the red pill and the blue pill from The Matrix, and subsequently got very confused. Looking at it as a typo makes a lot more sense!


>what different did these guys accomplish?

Instead of taking something like Mono that was pre-built to run on their system, they took the CoreClr source that did not have a working build for FreeBsd, and got it to the point that it did.


emmmm... I recall running .NET on FrBSD somewhere in 2003. It was thir first platform.


That was a Microsoft project called "rotor" [1]. It was a shared source .NET implementation on Free BSD and Mac OS X, but it wasn't licenced for commercial use.

Today's announcement is the real thing.

[1] http://en.wikipedia.org/wiki/Shared_Source_Common_Language_I...


Correct, rotor was a reference implementation shared by Microsoft when they released the CLR specification into the community. It was extremely, extremely basic and the GC was horrible. :-)


Weren't all VMs extremely basic back then? :-)

I was already using jails on FreeBSD for a while back then. Sometimes it feels like there's no progress in tech, except the widespread acceptance of and interest in technology


I prefer Linux but this is good news for FreeBSD. Too bad Microsoft didn't get behind .NET on Linux, FreeBSD, etc back in the early 2000's when a lot of us wanted to see that happen.


They actually did have a build that worked for FreeBSD. But politics made the license useless and they never "got behind" it.


Are there any micro web frameworks (think: Sinatra, Flask, Bottle...) for the .NET stack that run on Unix/Linux?


NancyFX already runs on Mono (officially supported by the project), hopefully it will run on CoreCLR once more of the API surface area has been covered (I wouldn't be surprised if it could run right now, as long as you have the correct dependencies in your project file).


http://nancyfx.org is inspired by Sinatra (Nancy being the daughter of Frank)


Oh nice. I want to develop Android app on .NET!


This is great! It isn't really-real(tm) until there's a PPA though.

Until that milestone is reached and it's hosted on a pretty web site, Microsoft should just focus their efforts on getting there.


I've never heard of it, but PPA apparently means a lot of things. https://en.wikipedia.org/wiki/PPA

What are you referring to?


I'm not sure if this is what was being referred to, but Ubuntu has PPA repositories https://help.launchpad.net/Packaging/PPA.


I believe it is this one: https://help.ubuntu.com/community/PPA


Maybe one day, we'll get a "Hey, sorry about that whole Kerberos Embrace/Extend thing we did", and Microsoft might get an actual bit of interest from *BSD land. Until then, we haven't forgotten.


You just have to get past it. Business is a rough and tumble arena, it's not a place where angels last long. What big tech company does not have a dark side or skeletons in its closet? Oracle? Facebook? Cisco? Google? Certainly none of them. But companies can atone for their misdeeds, learn from them, and become better corporate citizens. Focusing on vengeance and spite is not taking the high road. It's better to reward and encourage good behavior when it happens than to hold on to past misdeeds forever.


They embraced/extended Kerberos, breaking compatibility, and we have to get past it? isn't that victim blaming?

When Microsoft actually atones, we can reward and encourage. until then, BSD users (and anyone who read a Halloween Document[1]) know Microsoft's gifts have strings.

1. http://www.catb.org/~esr/halloween/


That's how this shit works. If no wrongs were done, if there was no sound basis for grievances, then forgiveness wouldn't even be necessary, it would be easy. But that's not how the real world works. People fuck up. People do bad things. Companies do too. Even sainted companies like Apple. You have to get over it in order for it not to destroy all the good work that can be done. Look at Israel and Palestine. Neither is blameless. But if they hold onto their grievances forever they'll perpetuate a miserable situation indefinitely.


Bridge. Build one. Walk over it. Experience what's on the other side. It's wonderful.


the path we're currently walking is lit by the bridge Microsoft already burned. Atonement for the past should probably be asked for, rather than volunteered.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: