It's also a little sad, in a way. It relegates Xamarin to maintainers of a distribution for another operating system. At the end of the day, C# and .NET are now officially first class citizens on Linux. Speaking as someone that actually ran Mono in production for around a year before realizing it was a ridiculous waste of time and money and switching to Windows Server 2012 after finding and filling dozens of untrackable deployment and stability issues in ASP.NET under Mono, I'm definitely not ready to switch back anytime soon, but Mono is definitely foreseeably a real option.
(And there's nothing wrong with being a port factory that deals with obscure path issues all day. That's why they give you a paycheck...)
Still, Xamarin is doing a LOT more than just Mono, much of it extraordinary.
Also delivering something that actually works is an ego boost. Probably attracts the "right" kind of employee for the task, too.
I don't. I mean yes mono <4.0 has a lot of problems, but it works well enough for me to shell out money for applications running on mono and be happy about it.
Xamarin did an immense amount of work pushing that boulder up a hill. Glad you got results, but frankly it did a lot of damage to a lot of people. I say this as a Microsoft fanboy and someone who deployed sites you've heard of on Mono + Postgres + CentOS.
In the last year or two many .NET vendors went from "yes, it works on Mono!" to "it should work but no support." This indicates the formal death of the ecosystem to anyone but apologist hobbyists and thankfully we've gotten to a better place now.
I'm not sure I understand what you mean here. As I understand things, Mono is still keeping its runtime - JIT, garbage collector (the release notes here mention optimizations to SGen), etc. That means Mono isn't nor is it planning to be "just" a distro for Microsoft's .NET. (But it is using more and more Microsoft library and compiler code.)
So? Who will still use those, if there's a fully supported MS based (+ some open source effort for some edges) alternative?
For iOS I think you would have to figure out how to hook up MS runtime to a LLVM AOT compiler and then do all the work Mono team did to make sure libraries compile/work without JIT.
I really hope Xamarin guys follow Microsoft lead and make entry level version of their product free. It's not just about the ~25$ per month, it's about community as well - say some guy X is maintaining .NET library Y. I write up a port/pull for Xamarin - X goes "sweet but I can't test that since I don't own Xamarin and I can't even include it in my test suite to not break it further". Now I have to maintain a branch of Y for Xamarin and most other people are likely not going to find it or willing to use it.
I don't know which % of their profit comes from the indie licensing but if it's not significant as I suspect I would hope that they see this - it will help both their adoption and the OSS community build tools for their product.
I pay for Xamarin personally and think it's well worth it if doing cross-platform compared to the alternatives out there. I'd continue to do so until there's a very stable open sourced alternative. However, I think Xamarin knows such a possibility could happen and that's why they primarily target enterprise and not individual developers.
C# and .NET will never be first class citizens on unix. This is by design.
Who ten years ago would have imagined so much of .NET would wind up MIT licensed, not just some 'shared source' malarky, on Sourceforge's ~2015 successor?
This isn't the Microsoft of the Halloween memos anymore.
That said, I am excited to see the direction Microsoft is heading. It enthused me enough to start using Xamarin when I want to build cross platform for personal projects and to recently switch my day job to a company that uses .net for most of the their software. Not overly fond of cmd.exe and powershell on Windows still, but for most things, there's always Cygwin and it too has come a long way. Main issue is Powershell inherited all of cmd.exe's bad user interaction design (tab completion, select/copy/paste, buffer, history up/down scrolling) when compared to a typical *nix terminal.
Nowhere near as relevant or enlightening as you think it is in 2015 (wasn't much of an analysis in 1998 either, but still...)
Microsoft hasn't had some crazy awakening like, "Hey, have you guys heard of this open source thing? We should embrace open source and free software!"
They've realized that they're beginning to fall from #1 in the eyes of developers. So they're throwing some bones to try to dissuade people from leaving their platforms.
Microsoft stands to gain NOTHING from open sourcing their platforms besides developer marketshare and perhaps a bit of PR from those who are stupid enough to think that Microsoft suddenly turned altruistic.
They're scared shitless. They shipped a bunch of products that are not so popular with consumers (Windows Phone 7, WP8, Windows 8, Surface Pro, etc.) and developers are starting to care less about targeting people on Windows. This is just damage control.
I hope it isn't enough.
HN mods: can we get a "(draft)" note added to the submission title as well?
Does that go for the runtime as well? Does this mean I can no longer run a (compiled) .NET 2.0 application on Linux?
Please note that this is still a draft and the .NET 2.0/3.5 assemblies will likely reappear as reference assemblies (i.e. containing only method signatures in IL, so you can build against those profiles but not run on them).
http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-...
so updates in Mono are irrelevant to Unity.
> we will also be upgrading to recent versions of the Mono C# compiler, base class libraries, and runtime for use in the editor
> We will continue to use the Mono C# compiler (and perhaps later, Roslyn). We will continue to use the Mono class libraries. All currently supported features and 3rd party libraries which work with Mono AOT should continue to work with IL2CPP. We are only seeking to provide a replacement for the Mono VM and AOT compiler, and will keep on leveraging the wonderful Mono Project.
Also, yes, this is a replacement for the VM and AOT, but the libraries in Mono are still very useful. Many of them are currently being replaced by Microsoft code as well, though, so it looks like .NET, Mono and il2cpp will share lots of code that way. Just not the VMs.
I don't know man. Mono moved away from Boehm GC to a real gc (SGen) because it never really worked for them bespite feeding it a lot of metadata. Others before them have found out that tanspiling to C/C++ isn't really that great (some of the more recent ones where HipHop PHP).
Second, Microsoft is open-sourcing their whole VM - JIT, GC, as well as compiler and libraries. Compiler and library code is already being utilized by Mono, and more all the time. However, Mono doesn't even have plans to replace their JIT or GC with .NET's, as far as I know (and the Trello board linked to in the article seems consistent with that).
Could Mono do that (once Microsoft's builds on Linux and other platforms Mono needs)? Yes in theory, but it would mean abandoning all the massive amount of work they put into their VM over many years. I don't know whether it would be rational or not to do so.
Licensing isn't a problem for Mono to use Microsoft code. However, Mono's runtime is LGPL licensed, and this has been a source of revenue for them (people pay Xamarin for licenses for platforms like consoles where LGPL is a problem). So to replace the Mono VM with Microsoft's could be a step back there.
There are also a few cases where the code needs to be tweaked so it works correctly on Mono and the platforms it runs on.
But there are several issues:
* reference source code not being portable and not working on Unix. * complex dependencies between the portable and non portable pieces * some bits were only released recently, and without those it was not possible to port other chunks * dynamic happy code high prevents some code from being adopted as Mono can be used as a full static compiler on iOS, Xbox and Playstation.
So as time permits we will bring those over.
We also plan on supporting the "core" model where our contributions will flow back upstream.
But "core" is still a bit undefined
Mono project has been mainly pulling Microsoft's code that is managed, which is the one that should run in any OS unmodified.
The release notes are also incomplete and not ready for publishing
Miguel
[1] http://www.reddit.com/r/programming/comments/31ezp0/mono_4_r...
let rec beep x =
if x = 0 then x else boop (x - 1)
and boop y =
if y = 0 then y else beep (y - 1)
let main argv =
printfn "%A" (beep 999999999)
0Awesome work by team Xamarin + Contributors.