It has been super exciting watching this all unfold over the last year, for those wondering where to get started in the new world of .NET open source - start here:
Somewhat echoing what spriggan3 said, it seems odd that you suggest going straight to chat to learn about a piece of software rather than trying to find answers to your questions before bothering other people. To me (and this may be a function of where I'm from), it seems very rude to ask for help with something when you don't absolutely need said help (RTFM Noob!).
It's entirely possible you meant your comment for people who already have experience with the source in question, in which case I've misunderstood you.
So, what's the story if I want to build a C# application that runs on Windows, OS X, and Linux? Do I use "regular" .NET for Windows and Mono for OS X and Linux? Or will everything eventually be unified into one common platform?
Roslyn is cool, but there doesn't seem to be a standard way to tell Visual Studio to use a custom/roslyn C# compiler rather than the framework one. That kind of limits its usefulness.
Honestly, I am a little tired of all the articles (edit: I meant posts) claiming MS is suddenly in the Open Source camp.
To truly support Open Source, they should show a willingness to work against Software Patents. The essence of Open Source is the freedom for anyone with a computer to turn their imagination into code. MS remains one of the biggest obstacles in that path.
Instead here is what they do:
1) Directly attack the Linux kernel in Android through patents
2) Sell patents to trolls like Intellectual Ventures, and directly fund them via investments
>Honestly, say what you will about Google, but I can't imagine them ever threatening another software company with software patents.
That is a naive fanboy outlook towards a company. Its a well known fact that Google bought Motorola only for the patents. Google has also managed to use the patents to sue other companies including Microsoft. Although I still believe it is the game that is flawed and not the players. Google has also done things that could hold back the Windows Phone ecosystem. However, none of that should discount how much Google has contributed to betterment of the web just like Facebook or Microsoft. Open-Source is open source, the only thing that matters is license here and it is as liberal as it could get MIT.
It's a fallacy that you cannot support both open source and software patents. Religious opinions aside, they are both simply different forms of IP, each effective for different things.
> Honestly, I am a little tired of all the articles (edit: I meant posts) claiming MS is suddenly in the Open Source camp.
Okay...but this isn't one nor is it really an "article". It's simply the page about Xamarin being opened source. That's it. It's MIT licensed and opened sourced.
Did you not read the page or did you just want to rant about the same things people complain about with Microsoft in almost every HN thread about their open source efforts? I'm not saying some of these are not issues but when they're unrelated and don't add anything to the context of the content I don't get the point.
I honestly disagree with your stance against patents, disregarding dull patents and the issues they bring like patent trolls, I really believe that the industry needs patents to prevent unfair competition.
The issue is the length of patents, the Software industry doesn't need 20 year-long patents, it's too much time, at most a patent should be valid for 5 years...
And well, we also need mechanisms to punish people who abuse the patent system with dull patents.
It is very hard for large software companies to unilaterally work against software patents because it puts them at a competitive disadvantage, at least temporarily. It's sort of like arms limitation talks where you can't put down your nukes before anyone else does or it's an open invitation to attack.
Second thought: Every time I looked into Xamarin (and I do this every 6 months) there was a lack of killer apps created with Xamarin on both iOS and Android, users' experiences with Xamarin were either rare or negative and in total the community felt non-existent
Third thought: Ok got it, they open source to get PR, build a community; I hope that helps and it's not their last resort
Quick question for .NET developers: is there a solution for totally command line driven workflows yet? I really don't want to mess around with .SLN files and IDEs like Visual Studio and MonoDevelop. I'm sure VS is fine for people who like it, but I really want something like `cargo build` or `go build`.
Look into the tooling around F#, you can use most/all of it using the command line and simple text editors. Much of it can be applied to C# too. FAKE is a good place to start:
On the editing experience side, OmniSharp brings a richer text-editing experience to dot net development on many existing platforms and editors, including command line classics like emacs and vim.
A trivial MSBuild project that simply compiles all C# files in the current folder is not hard to write by hand, although taking one generated by VS and trimming it down might be easier. In any case, there is csc as the command-line compiler as well.
I just wish they didn't kill RoboVM. I get the warm and fuzzies when something big is open sourced just like everyone else. Then I snap back to reality and remember that it's ultimately the same organisation that close-sourced RoboVM then killed it, screwing over a lot of people depending on it.
Seriously, RoboVM could have been huge. An ingenious way to introduce app development to your existing hordes of Java devs. Great tech, killed because of business decisions...
I'm glad to see Microsoft embracing Open-Source, C# is such a wonderful language and easy language to use. In light of all the trouble Oracle has been giving Google, I would love to see them embrace it and provide a true alternative to Java on Android.
Microsoft will need to revise their patent pledge first. If you look at the way it's currently written, it's almost as if it was specifically meant to preserve their option to pull an Oracle v Google against a vendor who decides to pick up .NET and run with it.
Meanwhile, Google has switched away from their Apache Harmony derivative to the officially anointed sources, so there's not much incentive to make the move away from Java entirely, anyway.
If Xamarin is open sourced and RoboVM is dropped, I can only speculate that Microsoft did not want to touch JVM with a 10-foot pole and chose to not entertain Oracle legal. May be I am wrong, but that is one possibility.
IIRC, RoboVM is being dropped. No further development work. I could be wrong though, I'm half remembering it being discussed on a Reddit AMA with Miguel de Icaza.
EDIT: It wasn't in the AMA after all, but it has been dropped:
Last time I used it (more than a year ago) it was still felt quite buggy. That being said, has anyone successfully used Xamarin or have an example of a large and successful app built with it?
I recently spent a few weeks with it and decided to not use it for a cross platform mobile app I'm working on.
1) The documentation seems good at first, but some parts are outdated and I did find myself stuck with it a number of times. iOS and Android docs are lightyears ahead.
2) The code editor in Xamarin Studio for OSX is mediocre. I've tried using VSCode instead but intellisense didn't work. I imagine using Visual Studio must be a lot better. Both Xcode and Android Studio are much better in my experience. Maybe with the upcoming C# IDE from JetBrain this will change.
3) You need to learn iOS/Android development anyway. Xamarin Forms works well for prototypes and such but in the end you need platform specific UIs and libraries. So you need to do the leg work in the native docs (Swift/Java) and understand how these APIs/languages work and be able to "translate" those to C#. It's double the work compared to writing directly in native code.
4) The community around Xamarin is minuscule. If you get stuck there isn't much material out there to help you compared to native iOS or Android. Also in my short experience their forums were not very helpful. I imagine with an expensive corporate account with dedicated support that must be very different, but for a solo developer it feels like you are on your own.
As much as I like C# as a language I really don't see the point of Xamarin in my case. I started learning Java/Android form scratch and I'm having better results in less time. I will have to work more to get both iOS and Android, but I won't feel miserable and the dev experience in OSX will be awesome with first class tools.
I'd say Xamarin would be perfect for someone that already knows how to develop for iOS and Android but hates working with Swift and/or Java, loves C#, and has access to Visual Studio in Windows.
Can't speak for the mobile side of things, but I used Xamarin for Mac to port a Delphi application and bring it to market last year. Considering when I started I didn't know anything about Macs, Cocoa or Xamarin for Mac / MonoMac, it turned out pretty well. Xamarin have some good people cruising their forums and offering support.
I'm using it for a few projects. One for a client on the side and one for my primary job. It's really nice to work with. There are issues here and there, but overall, it's a very viable solution and I'm quite happy with it.
Now only if .NET adoption on Linux would pick back up like when Mono was pushing it. .NET is a great environment for developing desktop applications and Linux really needs them.
GTK# could use some serious love, as much as I enjoy Vala I would much prefer to be able to use Npgsql for database access than deal with the crapshoot that is libgda. Unfortunately after the GTK3 transition it seems nobody has really felt like maintaining GTK# much, meanwhile plain old C and Vala have been getting all the cool stuff (GTK composite templates, in particular).
I built a website that just went live a few days ago (still crazy ugly). It is .NET core on Ubuntu using various Azure Services (nothing fancy, just standard ecommerce... but still):
The biggest hurdle has been dependencies, but support has been improving a lot every month. Getting deployed was initially a pain, but I've found a way to make it smooth. I think soon i'll be writing up how I deal with it. I deploy about 3 times a day without interruption on my single server behind an nginix reverse proxy.
Now my only remaining qualm with Xamarin is this: Having two garbage-collected environments interacting within the same program, as is the case with Xamarin on Android, just seems pathologically complex. Does anyone have enough experience with Xamarin on Android to know if this is ever a problem in practice?
Edit: I wonder if the Xamarin.Android developers ever considered compiling CIL to JVM bytecode (which would then be compiled to Dex bytecode), then reimplementing mscorlib on top of the Java standard libraries. So basically, IKVM.NET in reverse. Then there'd be no bridging between two environments.
Recommended watching for iOS and Android - https://www.youtube.com/watch?v=VJsmrTQWD2k simple to identify these problems once you know of them. I keep coming across implementations that make some very fatal mistakes about resource management, notably these problems would potentially also happen when not using Xamarin as well (developers not reading documentation/being careful with allocations)
With Android the most common mistake is cross-heap references, putting a large C# array into a java arrayadapter for example will result in objects that live in both worlds which makes it expensive for Java to see the C# object and C# to see the Java object. The objects are effectively being mirrored, the solution is to use C# all the way down. Where the object was created defines ownership, for example ArrayAdapter containing C# objects means owned by Java with overhead for Java to bridge the C# objects.
Of course Xamarin was built on top of earlier Open Source work in MonoMac, you still could do OS X applications without actually paying for Xamarin but it wasn't as easy as using Xamarin straight.
So this is also partly just giving back from where they took it.
As an aside, has anyone here created a Xamarin android app using material design? I was recently trying to integrate their component for the design support library, but it seemed horribly buggy.
What I don't understand is why they had to purge the commit history. Did they not use Git internally? Do the commits contain sensitive information? Does it make it easier to clone the repo?
> What I don't understand is why they had to purge the commit history.
When the team I'm on open sourced an upgrade framework[1] of ours we did the same. There's hundreds of commits over the course of years where the only intended audience was internal, some of those may contain information that wouldn't be appropriate for external consumption (e.g. a reference to non-public information) and others (well most of them really) contain information that would be useless externally (e.g. links to builds or reviews that are accessible only internally, bug numbers, etc).
ghuntley|9 years ago
.NET CLR Managed Runtime - https://gitter.im/dotnet/coreclr
.NET Framework - https://gitter.im/dotnet/corefx
.NET Compiler as a Service ("Roslyn") - https://gitter.im/dotnet/roslyn
.NET Orleans Actor Framework - https://gitter.im/dotnet/orleans
Mono Framework - https://gitter.im/mono/mono
Xamarin iOS, Watch, Mac Bindings and Framework - https://gitter.im/xamarin/xamarin-macios
Xamarin Android Bindings and Framework - https://gitter.im/xamarin/xamarin-android
Everything is licensed under the MIT license w/patent pledges.
twoquestions|9 years ago
It's entirely possible you meant your comment for people who already have experience with the source in question, in which case I've misunderstood you.
spriggan3|9 years ago
mintplant|9 years ago
naasking|9 years ago
stop1234|9 years ago
And links that contains no source code! A chat room with a broken image!
http://imgur.com/RF61z6Y
jeswin|9 years ago
To truly support Open Source, they should show a willingness to work against Software Patents. The essence of Open Source is the freedom for anyone with a computer to turn their imagination into code. MS remains one of the biggest obstacles in that path.
Instead here is what they do:
1) Directly attack the Linux kernel in Android through patents
2) Sell patents to trolls like Intellectual Ventures, and directly fund them via investments
3) Support the cartel called BSA, which includes other luminaries like Oracle (http://www.bsa.org/about-bsa/bsa-members).
Honestly, say what you will about Google, but I can't imagine them ever threatening another software company with software patents.
nivla|9 years ago
That is a naive fanboy outlook towards a company. Its a well known fact that Google bought Motorola only for the patents. Google has also managed to use the patents to sue other companies including Microsoft. Although I still believe it is the game that is flawed and not the players. Google has also done things that could hold back the Windows Phone ecosystem. However, none of that should discount how much Google has contributed to betterment of the web just like Facebook or Microsoft. Open-Source is open source, the only thing that matters is license here and it is as liberal as it could get MIT.
sremani|9 years ago
No one is taking away your right to hate Microsoft, but picking OSS as bull-work of your argument is not there any more.
edit: bull-work(tm)
throwawaykf05|9 years ago
BinaryIdiot|9 years ago
Okay...but this isn't one nor is it really an "article". It's simply the page about Xamarin being opened source. That's it. It's MIT licensed and opened sourced.
Did you not read the page or did you just want to rant about the same things people complain about with Microsoft in almost every HN thread about their open source efforts? I'm not saying some of these are not issues but when they're unrelated and don't add anything to the context of the content I don't get the point.
Aldo_MX|9 years ago
The issue is the length of patents, the Software industry doesn't need 20 year-long patents, it's too much time, at most a patent should be valid for 5 years...
And well, we also need mechanisms to punish people who abuse the patent system with dull patents.
munificent|9 years ago
See: http://www.cnet.com/news/google-microsoft-settle-long-runnin...
It is very hard for large software companies to unilaterally work against software patents because it puts them at a competitive disadvantage, at least temporarily. It's sort of like arms limitation talks where you can't put down your nukes before anyone else does or it's an open invitation to attack.
anonymfus|9 years ago
pjmlp|9 years ago
greenspot|9 years ago
Second thought: Every time I looked into Xamarin (and I do this every 6 months) there was a lack of killer apps created with Xamarin on both iOS and Android, users' experiences with Xamarin were either rare or negative and in total the community felt non-existent
Third thought: Ok got it, they open source to get PR, build a community; I hope that helps and it's not their last resort
So, is Xamarin really a viable solution?
gregmac|9 years ago
It's not that: Microsoft acquired Xamarin earlier this year [1].
Xamarin is also holding a conference [2] right now, so I suspect this announcement is part of that.
Edit: Yes, it was. [3]
[1] https://news.ycombinator.com/item?id=11169215
[2] https://evolve.xamarin.com/live
[3] https://adtmag.com/articles/2016/04/27/xamarin-evolve-16.asp...
tacos|9 years ago
AlwaysBCoding|9 years ago
tree_of_item|9 years ago
muttech|9 years ago
'dotnet build' to build it.
ZenoArrow|9 years ago
http://fsharp.github.io/FAKE/
Forge is also worth checking out:
https://github.com/fsprojects/Forge/blob/master/README.md
One more suggestion, if you'd like an easy (but simple) all-in-one solution for F#, check out Ionide:
http://ionide.io/
sago|9 years ago
`mono` to run it, rough equivalent of java.
We code for the Unity game engine, but use command line mono tools for testing and feature development.
ColinDabritz|9 years ago
http://www.omnisharp.net/
ygra|9 years ago
davb|9 years ago
jestar_jokin|9 years ago
cptskippy|9 years ago
colbyAFTrustedK|9 years ago
Meanwhile, Google has switched away from their Apache Harmony derivative to the officially anointed sources, so there's not much incentive to make the move away from Java entirely, anyway.
pjmlp|9 years ago
drudru11|9 years ago
seibelj|9 years ago
sremani|9 years ago
ZenoArrow|9 years ago
EDIT: It wasn't in the AMA after all, but it has been dropped:
http://www.linuxjournal.com/content/death-robovm
Aldo_MX|9 years ago
[1] http://bugvm.com/
koyote|9 years ago
Last time I used it (more than a year ago) it was still felt quite buggy. That being said, has anyone successfully used Xamarin or have an example of a large and successful app built with it?
pier25|9 years ago
1) The documentation seems good at first, but some parts are outdated and I did find myself stuck with it a number of times. iOS and Android docs are lightyears ahead.
2) The code editor in Xamarin Studio for OSX is mediocre. I've tried using VSCode instead but intellisense didn't work. I imagine using Visual Studio must be a lot better. Both Xcode and Android Studio are much better in my experience. Maybe with the upcoming C# IDE from JetBrain this will change.
3) You need to learn iOS/Android development anyway. Xamarin Forms works well for prototypes and such but in the end you need platform specific UIs and libraries. So you need to do the leg work in the native docs (Swift/Java) and understand how these APIs/languages work and be able to "translate" those to C#. It's double the work compared to writing directly in native code.
4) The community around Xamarin is minuscule. If you get stuck there isn't much material out there to help you compared to native iOS or Android. Also in my short experience their forums were not very helpful. I imagine with an expensive corporate account with dedicated support that must be very different, but for a solo developer it feels like you are on your own.
As much as I like C# as a language I really don't see the point of Xamarin in my case. I started learning Java/Android form scratch and I'm having better results in less time. I will have to work more to get both iOS and Android, but I won't feel miserable and the dev experience in OSX will be awesome with first class tools.
I'd say Xamarin would be perfect for someone that already knows how to develop for iOS and Android but hates working with Swift and/or Java, loves C#, and has access to Visual Studio in Windows.
mb_72|9 years ago
iask|9 years ago
donniefitz2|9 years ago
vpanyam|9 years ago
There's a list with some more companies here: https://www.xamarin.com/customers
coldtea|9 years ago
miguelrochefort|9 years ago
oblio|9 years ago
snuxoll|9 years ago
swalsh|9 years ago
http://savorylane.com
The biggest hurdle has been dependencies, but support has been improving a lot every month. Getting deployed was initially a pain, but I've found a way to make it smooth. I think soon i'll be writing up how I deal with it. I deploy about 3 times a day without interruption on my single server behind an nginix reverse proxy.
shanselman|9 years ago
unknown|9 years ago
[deleted]
dintech|9 years ago
Aldo_MX|9 years ago
[1] http://bugvm.com/
mwcampbell|9 years ago
Edit: I wonder if the Xamarin.Android developers ever considered compiling CIL to JVM bytecode (which would then be compiled to Dex bytecode), then reimplementing mscorlib on top of the Java standard libraries. So basically, IKVM.NET in reverse. Then there'd be no bridging between two environments.
ghuntley|9 years ago
With Android the most common mistake is cross-heap references, putting a large C# array into a java arrayadapter for example will result in objects that live in both worlds which makes it expensive for Java to see the C# object and C# to see the Java object. The objects are effectively being mirrored, the solution is to use C# all the way down. Where the object was created defines ownership, for example ArrayAdapter containing C# objects means owned by Java with overhead for Java to bridge the C# objects.
ianlevesque|9 years ago
ianleeclark|9 years ago
skrowl|9 years ago
Scramblejams|9 years ago
yedpodtrzitko|9 years ago
"For Unity developers, this means making sure the latest .NET APIs, tools, and language features are available to you."
– Support for C# 6
– Upgrade Mono Runtime and Class Libraries
etc...
warrenmiller|9 years ago
dep_b|9 years ago
So this is also partly just giving back from where they took it.
hugi|9 years ago
ywecur|9 years ago
Is everything needed to actually be able to use it productively open source now?
Is Xamarin Studio open source?
mandeepj|9 years ago
For more details, you can listen to this podcast from founders of Xamarin - http://www.dotnetrocks.com/?show=1276
ashitlerferad|9 years ago
Keats|9 years ago
Bouncingsoul1|9 years ago
alashley|9 years ago
j_s|9 years ago
"Everyone Can Create Beautiful Apps with Material Design"
https://evolve.xamarin.com/live
m_fayer|9 years ago
pier25|9 years ago
Cyph0n|9 years ago
frostmatthew|9 years ago
When the team I'm on open sourced an upgrade framework[1] of ours we did the same. There's hundreds of commits over the course of years where the only intended audience was internal, some of those may contain information that wouldn't be appropriate for external consumption (e.g. a reference to non-public information) and others (well most of them really) contain information that would be useless externally (e.g. links to builds or reviews that are accessible only internally, bug numbers, etc).
[1] https://github.com/vmware/upgrade-framework
coldtea|9 years ago
Very likely.
hobarrera|9 years ago
unknown|9 years ago
[deleted]
ashitlerferad|9 years ago