I wish you all the best guys...
It's awesome to see Miguel running a scrappy startup again. I just read through an old interview with him and Nat from the old IGF days, and Miguel hasn't lost any of the hacker/entrepreneur spirit:
I wanted to meet up with Miguel when he was in SF a few days ago, but now I know why he was so busy.
I'm later to admit how wrong I was. Suddenly mono was deploying into iOS, Android and places where the existing developer ecosystem couldn't have otherwise.
A hearty congratulations and wish you all the best. You deserve it.
From the Moonlight FAQ: http://www.novell.com/products/desktop/moonlight_faq.html#j
This collaboration between Microsoft and Novell is a formal engineering development program. Novell is bringing the .NET-based Silverlight framework to Mono, an open source framework for running .NET applications on multiple platforms including Linux. Microsoft is providing a version of the necessary codecs for Linux.
What investor with a sound mind would feel otherwise? Novell had already dumped millions in to it and look where they ended up.
(Disclaimer: I used to work at Ximian and Novell with Miguel & others, and contributed some to Mono in the early days.)
I don't know what the terms are of that agreement.
Novell had already dumped millions in to it
Nope... no real profits.
Something interesting is that the contributor agreement wasn't a copyright assignment but that you licensed your code to Novell and that you granted them the right to relicense it under any license they wanted.
I know, I know, #242 doesn't sound like a lot, but it's a big store. :-)
I use Mono for the ease of development (powerful language + nice IDE), the nice runtime (GC and type reflection), and the .NET libraries.
Do you call out to native Objective-c code for compute intensive tasks? Do you find the mono garbage collector limiting in performance?
I assume you're using C#, right?
Performance of monotouch is extremely good. For 99% of what you're doing, you do not notice any performance loss at all. I've played around with disabling GC temporarily, but I haven't seen yet a reason to do that in my apps. A few of them use things like huge databases with data, creating thousands and thousands of gc'd objects, and everything works amazingly well.
Not everything can be done in MonoTouch, though. For some things you'll never get enough performance unless you go to C. You can't do a lot of things in Obj-C either. Remember, Obj-c is a dynamic language, so every method call is fairly expensive, which is not the case when you're in .NET land.
If you go with mono, the most striking thing you will notice is increased startup time. On iOS with full AOT this effect is less pronounced, but on webos/android even tiny mono apps have 1-3 seconds of black screen at startup since there's a lot of JIT/metadata work to be done.
On darwin platforms, we've found that mono's garbage collector pauses unmanaged threads at inconvenient times and were forced to move audio playback into a separate process to prevent glitches. This only mattered with large numbers of live objects (>500k), but it did come into play. The new SGen collector may fix this, but it still (as of 2.10.2) crashes too often to be used.
Memory usage is noticeably higher than for comparable objective-c apps, but is not the end of the world.
Once your app is up and running, the mono runtime is plenty fast enough for most things. We even do some light DSP in C# on these platforms. It's better than you would think.
On a related note, just because you're using C#/.net doesn't mean that you can code like you're in the desktop/server world. You still need to focus on doing as little work possible per screen displayed to get the snappiest possible user experience.
1. The majority (99%) of your app is not perf-circital. It's just setting some properties on UIViews and letting CoreAnimation do the rest, or reading data from the DB, or waiting on a network socket. If something is slow, you just throw it on a background thread with a continuation to resync it with the UI thread.
2. Over the years, I have found that micro-optimizations (like: allocating objects on the stack as in C vs allocation on the heap in C#, no dynamic dispatch in C vs lots of virtuals in C#, etc.) are _all_ that C give you and are not enough to make an app like iCircuit fast.
What you need instead is the ability to easily change and experiment with algorithms. C# gives me this -- programming in a strongly typed OOP language gives me the safequards I need to do this. The GC is what allows me to do this quickly and without pulling out my hair (caches in C/C++ drive me nuts because I have to be so careful about ownership rules of objects).
In a nutshell, I'm willing to trade the small (constant) perf hit in order to have better tools for tackling the hard problems - such as analyzing a 1,000 node circuit.
iCircuit contains one tight loop where it has to factor a very large matrix many times a second. That loop runs fine on .NET on desktop machines (don't even break a sweat), but I used a C function for the iOS version since there was about a 2X improvement of speed for this function. Fortunately, .NET makes it stupid easy to call C functions so I have the best of both worlds.
Assuming I want to go this way - Do you find the mono development tools satisfactory (monodevelop) or do you use Microsoft's and later target iOS?
Platform-wise, Unity has their own web player, pending NaCL support, pending Flash/Molehill support, shipped standalone Windows/Mac, pending Linux support, iPhone, Android, Wii, PS3, Xbox 360. They use AOT compilation on more restrictive platforms (iPhone, Xbox 360, etc).
I couldn't find an official comprehensive list, but this forum post attempts to cover iOS successes. 7 Unity-made games have hit #1 in the app store: http://forum.unity3d.com/threads/65053-iPhone-games-chart-be...
Also, some Gnome apps are written in C#: http://en.wikipedia.org/wiki/Mono_(software)#Software_develo...
I can understand using ASP.NET on Windows servers. There aren't that many better alternatives (there are a couple, but not that many and most of them would require some tweaking), but Linux, like any Unix-like, server has a whole lot of exquisitely refined web platforms that are superior to ASP.NET in each and every way.
Unless you are already invested in ASP.NET. Linux would be the lesser of the two evils.
I'd be more inclined to guess it sees more use in shops that are .Net but want to use something like a memcached or redis server and want to write small utilities on that server in a language they know.
Pure speculation though.
I know one prominent company using Mono is Medtronic, who use it for their iOS app, and have been featured prominently by Apple.
Particularly if it means there could be one platform on which to write apps for both WP7 and Android.
I doubt Ballmer would go for it. He probably still thinks "Linux is a cancer" and a threat to be destroyed, whereas in fact the threat to MS is more from Apple.
If I was running MS I'd use the disquiet Oracle has created in the Java world by pushing for .NET/C# to replace Java as the standard OS-neutral run-anywhere platform.
Personally, I wouldn't touch Mono would a ten foot pole, but that's just me....
For exactly this reason, I don't expect to see this happen.
While I'd love to see some funding for these awesome guys, I don't think that Microsoft's money would be that great. Moving Mono development from a big corporation to a small startup might even help settle some of the FUD problems. Receiving money from MS probably wouldn't...
A year, wow, it doesn't seem like that long ago!
Anyway, downvoting without comment on something like this is poor.
That being said, we want to grow, we want to market, we want to expand, and for that we will be raising VC funds.
Any plans to have a 'Team' section for Xamarin? I'd love to know who jumped on board, tbh.