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.
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.
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.
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.
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.
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.
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.
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.
I think that maybe StackExchange qualifies
Game studios.
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.
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.
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).
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...
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.
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. :(
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.
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.
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.
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)
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).