Who exactly stands behind Mono after Novell is sold (if and when)? Isn't there a significant risk, beyond the present one of MS making some move against them, that it will be left to stagnate by a new owner? And even the MS risk hasn't been cleared up for me. Please don't give me the stuff about MS promises against suing, it's totally unrealistic. Sure, you can argue it's not probable, but you can't argue that it's impossible or an insignificant risk - it's real. Who exactly has mono installed anyway? All that market share on.... which device or platform? The web? Mobile? Some small percentage of one operating system and basically nothing on the others? The Linux community doesn't just not have it installed they are actively hostile to mono.
What I am peddling here is FUD, but it's warranted FUD, there are too many unknowns for what amounts to a buggy C#. Isn't the C# selling point that it's a better Java? How does that value proposition hold up for a B-grade C# with patchy coverage of the forms et cetera, with a patchy install base and an extremely uncertain future. Mono has totally failed to gain a critical mass, so there will be no openoffice.org=>libreoffice. When the takeover of Novell comes it will die a horrible and withering death getting further and further behind the parity with the MS implementation which it has never yet matched. I am sorry to say it, I wish the legal situation and Novell situation were otherwise and people could just choose on the basis of technical merits: but that's not the case, and anyone basing a startup or business on anything to do with mono is certifiably insane.
Mono is open source, so anyone can continue developing it.
If your concern are licensing the patents, MonoMac only uses the ECMA core and the MS-PL bits. If you want to use stuff outside of this and you are still scared of Microsoft going after your very profitable enterprise, remember that Microsoft is open to licensing their patent portfolio to anyone that wants it.
If Mono were to be discontinued, there is a business right there for an enterpreneur: negotiate with Microsoft a license deal for their patents, add a markup, pocket the difference.
That is the worst case scenario, you have to pay the patent holders.
That being said, you do live in a dark, sad and terrifying place. You harvest what you plant, and this fear and horror that you plant can not be good for anyone's health.
>Mono is open source, so anyone can continue developing it.
"Can" but who will? You already implicitly concede the point that mono has no community strong enough to survive without the Novell employees. Your hypothetical entrepreneur that fills this gap is charging money. Hasn't that just incurred an extra cost on the person who built their business on a free Mono? That's if this guy turns up on time for the crucial expansion to your business; if he turns up at all. There may well not be enough users of Mono to support such a model: I can't name a single big or medium sized group using Mono besides Novell itself.
Edit:
I think you have conceded my point against using Mono for a startup i.e. there is a real chance you are going to incur future costs of an unknown size. I don't live in a dark place either, please drop that language, I said I wish it wasn't this way. It's just that, given there are plenty of other options, why pick the horse lagging behind with vultures circling it for your business?
Edit2:
Also, to score a cheap point, I will highlight your use of language "fear and horror". Not only am I planting garden variety fear, but also horror. A new, and more terrifying, breed of FUD. FHUD - Fear, Horror, Uncertainty and Doubt. It's catchy.
I think you have conceded my point against using Mono
for a startup i.e. there is a real chance you are going
to incur future costs of an unknown size.
And do you think that those (possible/unknown) patents that might apply to Mono cannot be used against whatever platform you're using?
Think again ... at least one of the Oracle patents (IANAL, but have been reading the independent claims) applies to any VM that starts interpreting code before doing compiling, which applies to many tracing compilers (from my understanding, LuaJIT, JavascriptCore are good examples).
> Please don't give me the stuff about MS promises against suing, it's totally unrealistic.
You're wrong. It would be pretty much impossible for Microsoft to sue over Mono at this point, even if they wanted to. You gloss over the fact that Microsoft has issued a thorough, unrevokable, legally binding Community Promise to not assert patent claims over .NET implementations:
The purpose and implications of the Community Promise are clear. Microsoft has sanctioned Mono, and no court in the world would let them take the CP back and say "nah, we were just kidding."
> What I am peddling here is FUD, but it's warranted FUD, there are too many unknowns for what amounts to a buggy C#.
Oh please. Ignoring the fact that you appear to be confusing C# and the CLR here, do you actually have any concrete complaints about mcs, or is this just more unwarranted FUD?
Yes, the central point of my comment that you didn't address.[1] That is, Novell looks like it's going to be acquired and there seems to be no reason for the purchaser to continue with Mono. It's a totally uncertain future for Mono. As I said elsewhere I am not slandering Mono, I wish it were otherwise but, given that there are just so many other cool technologies out there, what's the compelling case to bet your business on it with such a rain cloud over it? So it's not about using it for some little side project, its about founding your startup idea with Mono at the core of the technology stack, are you going to take the risk? Would you, personally, use it over the other options for your business when it doesn't have an independent community, only a soon-to-be-acquired Novell?
> That is, Novell looks like it's going to be acquired and there seems to be no reason for the purchaser to continue with Mono
Contrary to other "open-source" projects, Mono has a very active (albeit small) community behind it. Right now there are very active contributors that aren't working for Novell.
Also, making a parallel with another active project, JRuby, its leader quit Sun/Oracle but it is still working on JRuby ... and I've been watching Miguel's commitment and enthusiasm about Mono ever since the start, and it has only grown since then.
It's a totally uncertain future for Mono.
Yeah, because whatever platform you're using is so much safer.
The patents grant by Microsoft also includes supersets (contrary to Java SE implementations), and the ECMA standard you have to implement is rather small, also making it suitable for mobile phones (MonoTouch falls under that community promise, even though it ships with a fraction of what is known as .NET)
It's also an open-source project that doesn't fall under the GPL trap ... yeah, I said it. The class libraries are MIT X11, the runtime is LGPL, it is appropriate for embedding in commercial deployments right now.
>Microsoft has sanctioned Mono, and no court in the world would let them take the CP back and say "nah, we were just kidding."
Microsoft is an entity independent of the people who currently work there. It's not about MS going to court and saying "We had our fingers crossed", it's about new management coming in and claiming previous management did something crazy. Do this promise protect against that?
>>Microsoft has issued a thorough, unrevokable, legally binding Community Promise to not assert patent claims over .NET implementations
I remember when Microsoft claimed to open their Office document formats. I argued then that I didn't know how (legal loophole, impossible to implement, etc) -- but there was a catch. A monopoly company don't want to do that -- "follow the money".
Later, it was found out that the specification was thousands of pages long, etc.
Are there e.g. any creative loopholes in that agreement? How do you know? Has that Promise been analyzed by a good team of lawyers?
Has Mono been checked for other patent troubles? E.g. doesn't Microsoft itself pay licenses to Oracle, because .NET is too similar to the Java environment?
Edit: I do hope I'm wrong, of course. (Fixed a bit of grammar.)
How does that value proposition hold up for a B-grade
C# with patchy coverage of the forms et cetera
Comparing it to other open-source projects (Ruby MRI, Rubinius, Python, Pypy, Unladen Swallow, Perl 5, Perl 6, Ocaml) ... Mono is actually pretty solid and usable right now with good performance characteristics.
The generational GC took a long time to get developed, yes, but at least it does have a beta quality generational GC that you can use right now (compared to the alternatives) + Mono 2.8 also ships with a beta-quality JITer based on LLVM.
And about B-grade Windows Forms ... because you know, Swing is so much better than just porting the UI layer to WinForms / GTK# / MonoMac (Cocoa) and providing a native experience.
Just to offer some counter points... I bought MonoTouch and absolutely love it. Mono is rough around the edges but they do manage to get it right where it counts. At runtime MonoTouch is fast, stable and runs great. MT is so much nicer to develop for compared to Cocoa Touch it's not even funny (I've released two iOS apps written in ObjC and consider myself pretty decent with the platform). Novell knows this and knows this is really the only edge they have, which is why they've put so much into MT and now MonoMac.
Yes Mono's future is shaky, but as a .NET developer I can adopt to Mono pretty much overnight. So if it goes belly up I haven't lost all that much.
Would I base a business on anything Mono? No, I wouldn't, you are right there. But despite all the FUD, there is value in Mono as long as you can maintain a realistic outlook on it.
It's in Microsoft's interests for there to be a strong alternative C# implementation. This is just so they can reassure their customers against the risk of vendor lock-in (and M$ does need to reassure customers about that risk).
For example, I've taken a semi-detailed look at both Java and C#. I find C# and .Net to be very pleasant to work in. I would totally choose C#/.Net for my own startup over Java.
The last time I tried MonoDevelop (let alone on a Mac) it was a total disaster. I hope it's better now. I am pretty comfortable with Xcode, but "native" Mac apps in C# is a pretty good reason to consider switching to something else.
I open the new file dialog. Type in a name, try to copy the name... and it closes the new file dialog! Apparently Cmd-C is bound to cancel. Okay, so it's a little quirky. Let's try again.
I create a new file. Type some text. Select Edit->Copy this time and... it's crashed.
Maybe I'm unlucky.
I install MonoMac, restart, create a project, write some code to display an NSAlert, press build and
Build failed. ~/.config/MonoDevelop/addins/MonoDevelop.MonoMac.2.4.0.5/mono-version-check does not exist.
Jesus
EDIT: As a bonus, a process called mono has been running at 100% CPU for the last half an hour.
EDIT 2: After using it for a bit longer, the editor itself is actually not bad. It has all the features you'd expect and autocomplete seems well implemented. But this software is just far too buggy for any kind of serious day-to-day use.
MonoDevelop on the Mac needs a lot of polish. Structurally it is pretty good and it does get the job done. But there are enough UI and focus related quirks to make me want to pull my hair out.
I say this as a big fan of the Mono project, but if you are remotely picky about native OS X look and feel, brace yourself before opening even the latest MonoDevelop IDE. In that regard, it is grim.
My experience with MonoDevelop 2.4 (the latest release, I believe) on OS X has been pretty good. I use VS daily and dabble in XCode, and MonoDevelop is definitely more VS-like than XCode-like, so it may be a bit unfamiliar for you. Certainly there's room for improvement, but it's relatively solid in my opinion.
Just curios, because if it is anything remotely similar to selling commercial products or closed web-services (as most developers here do), you can't talk about trapping users or about the virtues of free-software with a straight face: that's called a double standard.
And most people that do that (according to surveys I've seen) are either still in highschool/college or just hypocrites ... with the occasional "real deal" that manages to live off consulting for open-source development (core project devs mostly) and writing books / training.
With all of the platforms available now to C# developers (iPhone, Android, Window Phone 7, Windows, Linux, Mac) it makes sense to build applications in a way that will allow you to create native experiences, but also share your code across multiple platforms.
Our recommendation to developers is that they split their applications across the User Experience/Business Logic fault line. Developers then can replace the user experience with native user interfaces for each platform.
This is a bit abstract, so we tend to tell people to build a lot of UI-less reusable libraries and for libraries that have UIs, to split their Model-View-Controller libraries in a way that the Model and its support infrastructure are reusable and the View and the Controller are UI-specific.
This extends a little bit further. You also might end up with an "OS" layer that performs certain tasks in a different way depending on the operating system that you will be running.
For instance, while running on an iPhone, you have access to the gyroscope, something that you wont find on say a Linux desktop. Or on Linux, you will have access to /proc, which you wont have access to on Windows Mobile 7.
A nice example was Paint.NET. When that application was built, the operating-system specific features were all placed on a library called SystemLayer.dll. The UI was all Windows.Forms, but porting the program turned out to be limited to replacing the SystemLayer.dll with one that spoke Posix as opposed to speaking Win32.
I agree, that's good advice -- it's what Sun should have done with Java instead of pushing the least common denominator UI libraries, which lead to a host of lousy UI's that worked equally poorly on every supported platform. :)
Depends on your architecture and your definition of "easy".
To put it another way, I imagine porting a MonoMac app to Windows would involve a similar level of effort to porting a Windows Forms app to WPF, or vice versa. The more code that lives outside of the presentation layer itself, the easier. To my knowledge, code written for MonoMac will be very Mac-specific (you'll have lots of NS* objects in there), and so it's not a matter of flipping a compiler switch to get a GTK# app or something similar. You'll have to re-write those particular sections.
Again, though, if you architect your project well, you can minimize the amount of re-writing that has to be done.
Looking at all these alternate language attempts on iOS and OS X, It seems like it wouldn't be a bad thing to port a Basic that matches the object model of Objective-C, supports blocks, and calling C code / stucts. It might not be a bad bet to be the VB to Objective-C's C++/C#.
C# is just like Objective C in that the vendor lock-in is in the API and resource formats rather than the code syntax. Info.plist is fine, but X/NIB is terrifying when mixed with four versions of OS X, four different CPU architectures and several Frameworks in a pear tree.
What I am peddling here is FUD, but it's warranted FUD, there are too many unknowns for what amounts to a buggy C#. Isn't the C# selling point that it's a better Java? How does that value proposition hold up for a B-grade C# with patchy coverage of the forms et cetera, with a patchy install base and an extremely uncertain future. Mono has totally failed to gain a critical mass, so there will be no openoffice.org=>libreoffice. When the takeover of Novell comes it will die a horrible and withering death getting further and further behind the parity with the MS implementation which it has never yet matched. I am sorry to say it, I wish the legal situation and Novell situation were otherwise and people could just choose on the basis of technical merits: but that's not the case, and anyone basing a startup or business on anything to do with mono is certifiably insane.
http://en.wikipedia.org/wiki/Novell#Takeover_Bids