Microsoft .NET CoreCLR is now running on FreeBSD 10.1 (amd64)
github.com
github.com
edit: cue
Keep up the good work re .NET.
edit: grammar
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).
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?)
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.
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?
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.
How's this PR different with how you did it before ( just wondering - i suppose it's a lot of action - reaction related - direct) ?
Thank you for helping bring CLR to FreeBSD.
https://github.com/dotnet/coreclr/pull/782/files#diff-ebcfa0...
That's clean, documented code man.
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.
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.
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?
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/
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.
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.
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).
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.
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.)
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.
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.
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.
Microsoft woke from a coma.
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.
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.
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.
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.
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).
.
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.
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 :)
I think this github-issue here is full of good advice, so please do check it out:
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'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?
- 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?
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.
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.
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
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).
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)
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.
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.
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?
> 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.
It's "safe" to use, and will be for the future but is not on par with windows yet.
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 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.
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.
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.
And linux has the epoll/posix aio split for sockets and files.
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.
Microsoft has always been very stop/start about supporting other platforms - projects come and get cancelled and go.
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-i...
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.
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.
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.
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...
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.
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.
Game studios.
I think that maybe StackExchange qualifies
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.
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.
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.
Microsoft care an awful lot less that you migrated your Oracle server to Linux if you run that server on Azure...
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.
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.
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.
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).
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.
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...
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.
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)
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. :(
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.
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.
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).
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.
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.
Are there any announcements to port SQL Server?
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.
It also opens up the playing fields for .NET developers to now target nix as well (without learning a new language).
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...
What does this mean? Googling it led to interpretations that I doubt apply here... ><
http://www.neowin.net/news/microsofts-net-poison-pill
This news, however, is a very positive step. Can't wait for Build next week...
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.
Today's announcement is the real thing.
[1] http://en.wikipedia.org/wiki/Shared_Source_Common_Language_I...
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
Until that milestone is reached and it's hosted on a pretty web site, Microsoft should just focus their efforts on getting there.
What are you referring to?
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.