936 comments

[ 3.6 ms ] story [ 374 ms ] thread
2015 is going to be a year of Microsoft.
Get in line. We're still waiting on (year+1) being the year of the Linux Desktop.
We shall see. There is lots going on, both from Microsoft and from the rest of the OS community. It's definitely going to be interesting.
It may be a bit premature to say that, though 2014 looks to be the year that I started liking Microsoft again.
I doubt. It should be a year of Linux desktop, haha. Wayland with drivers from Nvidia, KDE 5 and Mozilla Shumway are supposed to be coming. And also Daala video codec and Steam Machines / SteamOS. Quite a number of breakthrough developments for 2015.
2015 is going to be a year of Microsoft.
(comment deleted)
If you would have shown me this headline 15 years ago I would have thought it was an onion article. Who would have thought they would have come this far?
I'm not so sure, I kind of feel like this is them following Embrace Extend Extinguish, except they realized they moved to step 3 too soon so they're going back to step 2 or 1. I do not have faith that they won't try step 3 again later.
In a nutshell, that's my problem. Once bitten twice shy. Even so I'm happy that they are moving in this direction, let's hope they do it some more.
Absolutely. There is zero regard for open source from Microsoft here. At the very least they must be trying to return to the "developers, developers, developers" days. With Bill Gates punching the clock, it's really anybody's guess what the real motivation is here, but it sure as hell isn't all the things we know and love about open source.
> Absolutely. There is zero regard for open source from Microsoft here.

What would it take for you to say "gosh, now Microsoft has regard for open source!" ?

If the answer is "nothing, I'd never say that ever" then you don't have an opinion, you have a fixed religious belief.

And how does your threshold for Microsoft differ from the same for Apple. Google, Facebook et al?

When its history shows otherwise.
What specifically has to be in the history? What yes-or-no test, what action that hasn't already happened?

Major projects open-sourced on GitHub under MIT licence? Check. Runs Linux, java and PHP in the Azure data centres? check.

It sounds like you have a fixed religious belief instead of an opinion. Every day must be infuriating for you! You're too much of a fanboy to consider that Microsoft isn't your friend, or that other people have opinions counter to yours. But I've already put too much food beneath this particular bridge of yours.
Hahaha. Projecting much?

Microsoft is a company, like many others. Some divisions do things that are friendly and benefit me, sometimes, because they want to sell things. That's realistic.

I'm well aware that onions differ, which is why I ask about people’s reasons for holding those opinions, so that I can understand them. Of course, it's equally likely that people will resort to bluster and accusations instead of answers when they really don't have reasons, rather than examine themselves.

I would be in disbelief 5 years ago. Its a new microsoft
15 years is a long time. The culture changes because new people coming in have different ideas and upbringing. People that any company recruits have different ideas about OS than they did 20 years ago.

For instance, one of the movers here is Scott Guthrie, who joined MS in 1997: 17 years ago.

http://en.wikipedia.org/wiki/Scott_Guthrie

And let's not forget thsi from Hanselman: "I've been here pushing open source and the open web for over 5 years and things are VERY different." http://www.hanselman.com/blog/MicrosoftKilledMyPappy.aspx

The culture changes because new people coming in have different ideas and upbringing.

Market forces and realities impact Microsoft's decisions far more than culture does. The reality of the Microsoft stack right now is that very few people are choosing it as a greenfield option, and those already invested in it are looking at alternatives.

Just a few weeks ago I wrote about a new project I was initiating, choosing Java as the platform. Understand that I've been a Microsoft stack developer for many years, but a variety of inertia, platform support, ease of getting setup with the development tools, and trust in the platform reasons made Java the better choice.

But this announcement changes the equation to some degree, as have Microsoft's various other opening up directives. Microsoft no longer sets the technology agenda, so choices like this are simply a reaction to that new reality. That isn't being cynical, and the changes are very welcome, but Microsoft didn't just punt the old timers and now they see the light.

> Microsoft no longer sets the technology agenda, so choices like this are simply a reaction to that new reality

Also very true, the culture didn't "just" change. It's another reason why anyone hating on MS while ignoring Google, Facebook, Apple et al is living in the past.

It was a totally different world for development 15 years ago though. These days web applications are taking over what used to be in-house developed Windows apps. Those in-house apps represent a huge amount of software development. I think that market mostly dried up for Microsoft. Linux and open source software rule the web app space. On mobile it is Android and iOS.

C# is a nice language, better than Java for sure. Microsoft has a long way to go yet to win back developers (lots of dirty tricks in the 1990s) but at least they are heading the right direction now.

It was a totally different world for development 15 years ago though.

Yeah, now Microsoft are dead.

Microsoft person here, all these things you're seeing today have been coming for a while - they always 'felt' right, but with an org of our size and history, you always have to consider every possible scenario. I'm super excited that people here are bold enough to increase speed here. We're all pretty excited :)
This is really a great move. C# is an awesome language and deserves to have a future on Mac & Linux. Microsoft is changing for sure.
Does this mean that Mono will no longer be necessary for cross-platform C# use?
Only if it's easy enough to port, and I doubt it would be. Although Mono will definitely gain from the original source code.
It does say that they are "expanding .NET to run on the Linux and Mac OS platforms".
"To further support cross-platform mobile development with .NET, as part of their strategic partnership, Microsoft and Xamarin..."

I would be pretty shocked if MS just suddenly dropped their won linux/mac implementation. Xamarin and the mono team have been working on this for a very long time. MS is just bringing them further into the "legit" fold

Open-sourcing .NET doesn't magically make it work on other platforms (a not-insignificant chunk is Win32-specific, for example). But it certainly makes the Mono team's job easier.
They say open source, but not which license they're going to use. It may not be possible to integrate with anything in practice, or as free as developers would like it to be.
It would pretty dumb of them to take this step and then pick a license which wasn't permissive enough to make it happen. Plus, given that they mention they're working with the Mono team on this, I'm sure they're going to get good advice.
No I think they are providing open source libraries of the server stack which is written in c#. Still needs mono to compile to linux/mac but now mono won't have to (re?)implement those, they can all share the same MS c# code
In reading the article, it sounds like they're going to work with the Mono team to bring it everywhere.
(comment deleted)
Yeah pretty much. Miguel is going to have te rewrite everything.
Mono (the code) and .NET Core will merge (per Scott Hanselmann)

Microsoft will (in partnership with Mono the project) ensure that .NET core and server stacks run on Linux and OS X.

They've just demonstrated deploying an ASP.NET MVC5 application on Linux, running inside a (Linux) Docker container and being remotely debugged from Visual Studio on Windows. Which seems to indicate that they are already pretty far down that road.

Would love to see that demonstration, do you have a link for that?
"To further support cross-platform mobile development with .NET, as part of their strategic partnership, Microsoft and Xamarin announced a new streamlined experience for installing Xamarin from Visual Studio, as well as announced the addition of Visual Studio support to its free offering Xamarin Starter Edition — available later in the year."

Well that should make a lot of people around here happy.

Nope, now I don't have an easy thing to complain about in Xamarin threads.

Joking aside, there are a lot of surprises coming out of MS, this is all quite nice.

No mention of which license they are using?
(comment deleted)
Excellent job, Microsoft.
I welcome it. And still think it is 10 years too late. 2.0 was a blast and provided higher quality of life and speed of contemporary JAVA. If they had made it multiplatform back then the world would have been different.
They probably didn't have the resources back then to make it multiplatform. It would be a distraction from providing the core features of the platform. Now that the platform is mature, it's a good time to do it.
This makes a lot of sense for Microsoft. It doesn't in any way cheapen or lessen the .NET business at all, if anything more things will be built on .NET which will lead to higher sales of things like Azure, which for a lot of non .NET devs has almost 0 mindshare.

I've never heard a Ruby or PHP developer list Azure as a potential deploy target. That is a real problem for Microsoft, even though Azure can do a lot of the same things AWS or Google's cloud does.

Smart move Microsoft.

What does this mean for ReactOS?
I don't think it moves the needle off of "irrelevant".
nothing? they are implementing windows, not c#
ReactOS seems mostly meant for supporting old Windows applications (a very noble effort). So... nothing?
Together with the Visual Studio Community announcement https://news.ycombinator.com/item?id=8595855, this is great news.

I've always missed the power of visual studio when programming for open source platforms. This can change things a lot.

There's no indication from that that you'll see a Linux or OS X port of Visual Studio. They might, but they haven't said that.

This Community Edition is extremely similar to the Express Edition, except with some limitations removed (e.g. extensions enabled) and some new limitations added (5x team members max, which the Express Edition doesn't have: no limit).

The Express Edition can be used to produce and publish commerical software. It says so right on their home page [0].

[0] http://www.visualstudio.com/en-us/products/visual-studio-exp...

Still great news, even without a port of VS to OSX or linux. Personally I'm perfectly fine with using a windows PC as my development station, as long as I can create cross platform .NET code.

Extensions enabled on the community edition is great news for people who can integrate awesome tools like resharper

I know it's silly but I'm tearing up. I grew up with .NET but neglected it for years because of moving to OS X, iOS and web dev. I played for some time with Xamarin and I'm so happy this is where MS is going. <3 Scott & Miguel, I'm sure they both had a lot to do with it.
Is this Microsoft's runtime or Miguel's? I can't work out whether:

- he's made it (if Mono is everywhere and now blessed by Microsoft)

- he's ruined (if Microsoft's original Windows-only .net runtime is now everywhere, and there's no need for Mono)

EDIT: apparently it's both - https://twitter.com/shanselman/status/532558786486370304

I think Xamarian made a very good move in getting into cross platform toolkits, rather than just relying on support contracts for Mono. At this point I think they're in a position where Microsoft Open Sourcing the .Net runtime isn't going to hurt them too badly.
(comment deleted)
What I've overheard on some podcast discussions is that they are taking the multiplatform Silverlight runtime, and have enhanced it to be a headless server-type runtime instead of browser-plugin-UI-focused. It doesn't include all of the windows-only features of the CLR and BCL, but has all you need for ASP.NET vNEXT.
I would expect that Xamarin's role with Mono is analogous to 37signals\Basecamp is to Ruby on Rails. Neither organization makes money developing Mono nor RoR. They make their money supporting and consulting organizations that chose to use the software that they are developing.
Me too. I went from OSS stuff to .Net in 2009 and fell in love with C#, and eventually Visual Studio. It's nice to see the two worlds merging and moving forward.
It will be interesting to see how this will work in practice.

C# will port over just fine. But the .Net libraries? System.Windows has little to nothing in it, and right now using things like System.IO.* on Linux and Mac is just asking for trouble.

What are they going to do, hack in System.IO.* Linux support after the fact? Or just add Linux.IO.* which is even more of a hack. In either case you're going to get very messy very fast.

The .Net libraries absolutely could have been designed with cross platform in mind, for example if they put the IO libraries in System.Windows.* and several of the other Windows-specific APIs.

As it stands the .Net framework/libraries are very Windows locked. So much so you'd almost have to scrap them and start over to make it more platform agnostic.

To be fair thats pretty much exactly what xamarin have done for ios, android and mac.
Yep, and check out System.Console for some horrors in the mono runtime.
System.Console isn't something that most apps rely on. It's handy for printing something out in a tiny one-file test app, but generally not relied upon for bigger apps.
Are you saying core .NET libraries are worthless?

Because in that case what's the point? Why not just use Java.

I'm sorry, but I have literally no idea how this post follows from the one you replied to?
> I'm sorry, but I have literally no idea how this post follows from the one you replied to?

Literally? Well it is visually displayed under it and to the right :P

Are servers / daemons not a common usecase? Most, if not all, of the apps I write on a daily basis do not have GUI.
Is this on a UNIX? If so, yes, it's common to write to stdout/stderr there. Not in Windows, though - anything which is long-running tends to be a Windows Service and there's no point writing to System.Console from there because no-one will see it!

I haven't done much .NET on UNIX but if I was doing so, I'd probably want something a bit more UNIX-friendly than System.Console, though I know it does have the ability to deal with different streams.

Links to some examples?
From Hanselman's post:

"ASP.NET 5 will include a web server for Mac and Linux called kestrel built on libuv."

I've been playing around with kestrel/asp.net vNext (Which I guess is now 5) on Mac, and while it's still rough, it's a good dev server.
Somehow reminds me of the Microsoft/Novell agreement, will wait to see how it turns out...
Microsoft's focus on this release is the server.

Mono plans on contributing to the effort our cross platform changes to Mono, to make .NET work great on Unix.

Details here: http://tirania.org/blog/archive/2014/Nov-12.html

After reading most comments here, the linked announcement, your blog post & some other websites, I only have one question left. If Microsoft releases their code under the MIT license, will mono follow suit and stop using the GPL?
I don't think they are open sourcing the client libraries like WPF and Win Forms. Like you are alluding to, what good would it do if they did since it is 99% Windows only functions in there.

They are open-sourcing the server side code. I think this means your ASP.Net apps can run on Windows, Linux, Mac OSX all from the same open source code base. No worry about Mono incompatibilities and bugs.

> I don't think they are open sourcing the client libraries like WPF and Win Forms.

I didn't allude to that.

Mono has been doing just fine. Yes, you can't rely on WinForms, even though a port exists. You can't do COM, that's for sure. But that doesn't mean that Mono is not valuable for what it is right now.

Microsoft doesn't need to provide compatibility for the Windows specific bits, as those bits are not part of the Core. And a platform like .NET has enough value in open-sourcing just the Core (i.e. whatever goes in the ECMA standard). For example it's a perfectly acceptable strategy to use GTK# on Linux, WinForms on Windows, MonoMac on OS X and Xamarin.Whatever on iOS / Android.

On System.IO, indeed there are differences between Winsock and Linux's epoll or BSD's kqueue (i.e. notify on completion versus notify on ready). There are differences between the 2 models, but I don't see that as a problem for System.IO and if you think it is a problem I'd like to read an explanation as to why.

Personally I'm very excited about this announcement. I avoided .NET for years and preferred to settle for the JVM because I do not like building on top of proprietary things. If they are really open-sourcing the .NET runtime, whilst uniting their efforts with Xamarin, that's really good news. Now hopefully the ecosystem around .NET will follow, as .NET needs an open-source oriented ecosystem and needs one badly.

"What are they going to do, hack in System.IO"

System.IO works very well on Linux/Mac right now. It was one of the first things implemented by the Mono team.

Having ported numerous .NET applications, all of which do fair heavily file I/O (the most common use case for System.IO), the main sticking point has been code that deals with filenames and paths. As in "/home/billy" vs "c:\Users\Billy". A hour or so of cleaning up your code and making use of Path.DirectorySeparatorChar and IsRooted is all I've needed to do.

"As it stands the .Net framework/libraries are very Windows locked"

This shows a lack of understanding of the .Net framework. Yes, if you used crazy Microsoft specific WCF libraries for networking protocols instead of industry standard stuff, or used WPF for graphics, that going to be a problem. But there are literally thousands of classes providing a fairly comprehensive set of data structures, network protocols, etc that are completely untied to Windows or Microsoft. If you are using something in System.whatever you are pretty OK.

P.s., Sockets aren't in System.IO, they are in System.Net

(comment deleted)
I wouldn't call that an insult, much less a passive-aggressive one. Maybe it's time to get a bit of fresh air; the world's not out to get you.
...or maybe it is...just not billyhoffman.
As far as I understood, they are really slimming down the core .NET CLR (runtime). Most of current BCL .NET libraries will be exposed as separate nuget packages, which makes it really convenient.
Ofcourse someone will have to write the linux/osx implementations, but I don't see much in System.IO that would be asking for trouble.

The CreationTime on DirectoryInfo would have to be faked, and it's not entierly clear if FileSecurity would map cleanly to posix acls, but nothing sticks out as being fundamentally incompatible with linux at least.

According to the announcement on visualstudio.com about the Community Edition, it isn't just for students and open source developers. Basically, only enterprises or companies with more than five developers need to pay.
This is a huge amount of tech resource. Don't know if it will actually bring to something working on the other platforms, but for sure it will help projects like Mono which deserved a little help.
The key points seem to be:

"Available Wednesday, Visual Studio Community 2013 is a free, fully featured edition of Visual Studio including full extensibility."

So, it sounds like this will replace the Express edition and let you install extensions like you can in the Pro version.

"Visual Studio 2015 and .NET 2015: build for any device - Built from the ground up with support for iOS, Android and Windows, Visual Studio 2015 Preview makes it easier for developers to build applications and services for any device, on any platform."

It almost sounds like you're going to be able to run VS2015 on different platforms, but I doubt it. Maybe you'll run the web version of VS2015 to develop from Mac/Linux?

"To further support cross-platform mobile development with .NET, as part of their strategic partnership, Microsoft and Xamarin announced a new streamlined experience for installing Xamarin from Visual Studio, as well as announced the addition of Visual Studio support to its free offering Xamarin Starter Edition — available later in the year. "

This is very interesting - .NET is going fully cross platform but they haven't bought Xamarin...are they planning on competing while keeping their frenemies close or something else?

The iOS and Android part don't make sense to me. Surely you won't be running VS on your iPad? So are they saying it has support for compiling to iOS and Android? Wouldn't they need to mention Xamarin in that sentence for it to make sense?
I doubt the idea (at this point) is to "RUN" Visual Studio on iPad/Android...

My money is on the App Creation naively in VS 2015 - via Xamarin or similar plugins - instead of having to rely on tools like Eclipse or IdeaU.

I think I'd lose my mind if I could develop apps in Visual Studio and C# instead of having to use Java and pay $1000/year for Xamarin.

It would destroy Xamarin if they made it free to develop C# for iOS/Android.
Highly depends on what the deal between Xamarin and MS is. For example they could work out a deal with Xamarin where they would provide free access under same terms as Visual Studio community (the >5 people) and Microsoft could pay them more than enough to cover their loss while promoting their development stack.
Doesn't Xamarin have a load of other stuff around testing and the like?

It could just mean a move away from Xamarin as a core development tool into producing things which support development on these platforms.

I highly doubt Microsoft will release and support Linux/OSX/iOS/Android API bindings.

What will likely happen is Microsoft will :

* open source the core libs

* open source the JIT

* make sure it works on all platforms

* open source the ASP.NET and port it to Linux/Mac so they can separate Azure from being a Windows only cloud service

Xamarin then packages these in to Mono and Xamarin.iOS/Android providing a layer on top of MS core stuff. Microsoft will then be able to sell .NET as a truly cross-platform solution and make VS/Azure more popular where it's probably losing to other OSS ATM.

I agree re Linux and OSX but I could see iOS and Android. The scale of mobile is such that if you want to be relevant in the way MS have historically, they're two platforms you can't ignore.
I think it's just an oddly-worded sentence. They're saying that you can use VS to target multiple platforms (including IOS). They're absolutely not saying you'll be able to run Visual Studio on an IPad.
One theory I've read is Microsoft wants Xamarin to stay third-party so Microsoft's competitors continue working with them.

Xamarin is working with a great many companies who would think twice about working with Microsoft directly. This way Microsoft can shove money to Xamarin to forward the ecosystem without scaring anyone.

Nice theory... but they went the opposite direction with Nokia.

I don't think they'd have any issue purchasing Xamarin and importing/re-branding.

Nokia is a totally different case, so doesn't invalidate his theory.

Nokia sells to consumers, so there wasn't the problem (as his theory suggests) of corporate clients not wanting to have business with MS.

Not saying that his theory is correct, just that it's different case to Nokia.

Nokia was also definitely pre-Nadella. The Xamarin theory supports Nadella's whole "cloud and mobile services" schtick.
AFAIK, Nokia didn't want to be affiliated with MS...not the other way around.
Not only that, but Xamarin's independent existence is like free insurance for companies choosing .NET - even if Microsoft were to drop support (unlikely, but look at Silverlight), Xamarin would continue providing a viable way forward for the language and runtime. Now that MS's .NET is open source, Xamarin's .NET is like OpenJDK - Xamarin is a governing body and authority for the language/API if Microsoft were to drop it. So it's good for Microsoft to have Xamarin as an independent entity.
Xamarin is IntelliJ, and Mono is OpenJDK
More like Xamarin is IBM. From http://openjdk.java.net/faq/ ... if you replace these words from that FAQ, it's remarkably similar to the current .NET situation (even though Xamarin is much smaller than IBM, the amount of attention each company gives to language & core framework development is probably on a similar scale).

> Oracle and IBM announced in October 2010 that we will collaborate in the OpenJDK Community to develop the leading open-source Java SE implementation, and make the OpenJDK Community the primary location for open-source Java SE development. Oracle and IBM will support the OpenJDK development roadmap that was proposed before JavaOne 2010, which accelerates the availability of Java SE across the open-source community.

http://blog.xamarin.com/microsoft-and-xamarin-expand-global-...

"Today we’re excited to take the partnership to the next level, by announcing:

1. Support for Visual Studio 2015 – Today, we released support for the Visual Studio 2015 Preview release, which includes Xamarin templates that make it easier to discover and download Xamarin from within the IDE.

2. Free Xamarin Starter Edition for Visual Studio Users – Today, Microsoft announced a new, free edition to Visual Studio—Visual Studio Community. Visual Studio Community contains support for extensions, which means it will be Xamarin compatible with from day one. We want to help make Visual Studio Community a tool for anyone to create native apps for iOS and Android, so we are announcing our plans to enable our freely available Xamarin Starter Edition to work with Visual Studio Community. We are also doubling the size limit on apps that can be created with Xamarin Starter Edition, so that you can build even more capable apps for free. This will be available in the coming weeks.

3. Special offers for MSDN Subscribers – We’ve worked with Microsoft to create a 20% discount for Visual Studio Premium and Ultimate MSDN subscribers to purchase Xamarin Business or Enterprise Editions, or world-class mobile development training with Xamarin University, available up to 60 days after the Visual Studio Purchase."

So the free Xamarin users will get Visual Studio support, but us with Xamarin Indie still have to use Xamarin Studio? I just want to use VS with Xamarin! But I guess that won't happen, because that's the only worthwhile reason to purchase their Business subscription (and the whole >5 employees clause).
Yes ... I'm in the same boat, however the 'core' of my app I developed as a PCL, the substantial part of developing for which I spend time in VS and using Resharper. Xamarin Studio is pretty OK, but VS is damn good to develop with.
I believe they mean you write code in VS and target Android/iOS/etc for builds. It sounds like it's moving more towards a regular IDE than very .NET specific.

It does not sound like you can run VS on different devices.

Wow, writing in C# for Mac, that's almost like heaven.
You can already do this today.

Miguel

What do you use for GUI apps? GTK or native Core.Graphics libraries?
I bet you a million dollars he uses Xamarin.Forms ;)
Xamarin.Forms is not supported on Mac.
Nor Windows, nor Linux. I know that. The OP didn't specify a platform.
Still, I should take that million dollars and hold it in escrow for you two.
Xamarin.Mac is all about native Cocoa app development in C#.
(comment deleted)
Loving this. Recently started working on a project with my brother who loves MS .NET stack and I have no experience in it. I was really skeptic due to the reputation MS has of being closed source and license heavy. I could not have chosen a better time hopefully!!