Mono Comes To Android
hairyfeet writes "After releasing Monotouch for iPhone which allows c# development on iOS, Novell has announced the availability of Mono for Android. Will this give us the 'one language to rule them all' that Java failed to bring, or will the bad blood between the F/OSS groups and Microsoft make this a dead end?"
Guess I won't be kissing it for a week or so.
Will this give us the 'one language to rule them all' that Java failed to bring, or will the bad blood between the F/OSS groups and Microsoft make this a dead end?
Neither. It will be exactly what it already is today, just one of many programming languages.
Finally I can hear good quality music with just the one earbud.
No, wait...
Reuters Minas Tirith - Mordor Inc. has announced the release of Ring of Power Open Source Version, to be released to the Free Peoples of Middle Earth. Mordor VP of Marketing, the Mouth of Sauron, has announced that the purpose of this open source version of the Ring of Power is to demonstrate Mordor's goodwill to all people.
"We're really hoping that all those Elves and Numenoreans and Halflings take our Open Source version of the Ring of Power and use it to do all kinds of nifty things." the Mouth of Sauron said. "There has been some animosity in the past between Mordor and the rest of Middle Earth, but we're pretty keen to the idea that this is the time to put it all behind us, so we're releasing, with this commitment from Sauron himself, open source Rings of Power with no future obligations to the Dark Lord, the Nazgul or anyone else in our organization."
When asked about previous attempts to take control of the other competing powers in Middle Earth (such as the infamous "One Ring to Rule Them All One Ring to Bind Them" proprietary patent-encumbered master Ring), the Mouth of Sauron dismissed it out of hand. "That was just business. But this is the dawning of a new age, and Mordor commits to not trying to seize control of the minds of any wielders of any open source Rings of Power... honest!"
(With files from Rivendell Archives)
The world's burning. Moped Jesus spotted on I50. Details at 11.
We already can program Android in Java (and Scala) and script it in Python, Lua, BeanShell, Perl, Tcl, JavaScript and Ruby. I hadn't noticed the multitudes crying out for Mono.
-=Maggie Leber=-
Congratulations! You won a heaping cup chock full to the brim with failure and abject destitution!
.NET 2 was a competitor to Java. Since then I believe the API has gone downhill so much that it really hinders development. Who comes up with data structures that throw an exception because you asked it if something was inside and the answer was 'no'?
Like all MS software, they will blunder on thinking they still drive the entire industry, completely ignoring EVERYTHING their customers tell them and fixing only security issues. Like Windows, .NET will one day be something we look back on while shaking our heads in wonder, with the same feeling you would get watching someone dial a rotary phone.
"...or will the bad blood between the F/OSS groups and Microsoft make this a dead end?"
>>Implying that F/OSS groups are the only ones or even the majority that makes apps for android.
I hear that .Net framework is pretty good for building good games. So it will be interesting to see what comes out of this.
It's really great that there's finally a tool to make life easier for all the developers building Windows Phone 7 apps in C# that want to move their code base to the Android platform!
Uhm, it does, but Mono uses AOT (Ahead of Time), which is different. Wikipedia is your friend.
Wrong.
MonoTouch ( which is the IOS .NET development suite ) uses the Mono Full AOT feature and precompiles all the code into a static binary ( including the base class libraries ) and links in runtime stubs for GC and the likes.
Certain features of .NET are naturally not available ( runtime code generation, features relying thereupon ) and some c# features don't work ( virtual methods in generic classes for example )
So you end up with a fully statically linked executable with no JIT included, fully compliant with IOS licensing terms.
Unity3D uses the same approach ( and probably shares a bit of the codebase )
This just in: "Mono for Android includes the core Mono runtime, bindings for native Android APIs, a Visual Studio 2010 plug-in for developing and testing Android applications, and a software development kit (SDK). The enterprise edition costs $999 (£613) per developer per year, including maintenance and updates. A five-developer enterprise licence costs $3,999 per year, and a professional edition costs £399 per developer per year."
http://www.zdnet.co.uk/blogs/communication-breakdown-10000030/novell-releases-mono-for-android-toolset-10022167/?tag=mncol;txt
-=Maggie Leber=-
Exactly what I thought. So I went and looked - $99 for student (non-commercial use), $399 for basic commercial, through to $3999 for enterprise.
Crazy. Would love to use it, won't touch it with a barge pole at that price.
First, it is mono. Beside any technical argument. There are a lot of people who do not like mono, because it is an incarnation of evil (alias MS). I am not saying that it is, but many people feel that way. So this is definitely one obstacle. Second, Android and iOS are different enough to be different on the low level aka programming language level, which will result either in compatibility libraries which are wrappers and resemble at some point internal DSLs. And they result in another abstraction layer which costs memory and CPU power. When you used an iPhone 3G/3GS you already find your phone to slow. So why torture yourself with slow software. And fourth, there are other cross platform approaches which use external DSLs which do not introduce another layer of abstraction at runtime, only on built time. For example: http://code.google.com/p/applause/
For all those developers that really want to combine all the disadvantages of programming for Android with all the disadvantages of using a Microsoft-controlled API!
I've abandoned my search for truth; now I'm just looking for some useful delusions.
As I understand it, here is the chief complaint that people have about Mono: Microsoft could have some sort of patents that could apply to Mono; and Microsoft could in the future use these patents to do something bad.
I have never seen any specific examples given, it's just a general "there could be some patents" argument. In fact, I believe the theory is that these could be "submarine" patents, not known now but lurking invisibly.
Here's a specific example. This is a long essay about this very issue. What is the danger if we use Mono? "[C#] was developed inside Microsoft, so it's likely they have many patents to cover different aspects of its implementation." Got that? "it's likely" Microsoft has "many patents". Citation needed.
This is the 21st Century, and patents are not only public, there are patent search engines. Where are the specific examples?
The situation is even crazier due to the passage of time. Microsoft introduced .NET in the year 2000. It is now the year 2011. Patents in the USA today have a term of 20 years. Presumably these submarine patents were not filed the same year as .NET was introduced; that would be far too obvious... they were probably filed a year or two ahead of time. So presumably these patents have a maximum life of under 9 years, and probably under 7 years.
In the past 11 or 12 years, nobody has noticed these deadly patents, lurking. But wait: these could be true "submarine" patents, where the patent was filed but not granted yet, and Microsoft is using sleazy tricks to extend the filing period and delay granting the patents. This implies that the patent must have been filed before 1995, when the US patent system was changed (patent term went from "17 years after patent granted" to "20 years after patent filed", specifically to fix the problem of submarine patents). Thus, a true "submarine" patent would have to have been kept going via sleazy tricks for over 16 years now, and nobody has noticed it yet.
So, if I understand correctly, we shouldn't use Mono because it could be a trap. Microsoft could have patents nobody has noticed for a dozen years that will expire within the next nine years that could apply to Mono. Or else they could have pending patent applications that have been pending for over 16 years without anybody noticing; those would apply for 17 years after the patent grant finally occurs in the future.
And if the above turns out to be true, and you wrote a program in C#, what would Microsoft's remedy be? Would you be forced to pay them huge sums of money? Would you be forced to give ownership of your source code to Microsoft? Not likely, and anybody who claims it is likely needs to provide legal precedents showing such a remedy in a similar case. No, the only realistic remedy would be that you would have to choose between buying some sort of licensed version of Mono (to comply with the patent licensing terms), or stop using Mono.
And the obvious exit strategy is to rewrite your C# app in Java. That would be a pain, granted, but hardly the end of the world.
And that is even assuming that Microsoft was successful in asserting these hidden patents. After offering C# up as a free standard, and not taking any action for a dozen years, to suddenly assert hidden patents would leave Microsoft wide open to the "unclean hands" legal doctrine. It's hard for me to imagine Microsoft prevailing in this.
And nobody has yet proposed a motive why Microsoft should do this. How does Microsoft gain by backstabbing the C# community? In the near term they could gain some patent licensing fees, but in the long term they would be alienating people they have been trying to woo. How likely is this, really?
So, in conclusion: because of this nebulously scary potential situation with possible unknown Microsoft patents, Mono and C# are
lf(1): it's like ls(1) but sorts filenames by extension, tersely
I am a programmer and I program in C# sometimes. C# like Java, VB, etc. was established with the idea of high level quick programming. A programming language that allows anyone to program. The problem with it is, that, anyone programs in it. I won't go to say that you can't program hard core staff with it...just most of its programmers don't.
.Net framework. Having that said it's not a bad framework and brings the ability to develop cross-platform in C#. However, the fact that it only includes the basics disables that "rapid programming" paradigm which exists around C# + .Net in quite a large part.
Mono, is a framework and not a programming language. And it does incorporate the basic stuff of the
Programming cross-platform has never been and never will be trivial. Java offers that capability at a high performance cost (still). Also, looking at many OSS developments in Java I tend to think that it brews bad habit. Again, that might not be Java, it may be simply poor programmers and poor architects.
If searching for that "one language to rule them all, one framework to rule them all" grail, have a look at C/C++ and the standard libraries. But don't look at that as being the fastest development path. It's simply the smallest common denominator and that poses some challenges. Programming cross-platform is definitely not an easy task and not for everyone.
Food for thought: Not all software has to be cross-platform.
I can write a .NET program on native windows and when I launch the EXE on a machine with no .NET it will simply fail with an error number. It doesn't ask you if you want to put .NET on or even explain to you that you need it to run the program, it just fails.
So... the same thing that happens whenever you launch any other program with its required libraries missing? Try copying a native VC++ program to a system that doesn't have the VC++ runtime installed. It won't spoon-feed you information about what the VC++ runtime is, why you need it, where to get it, and how to install it; it'll just give you a cryptic error.
If you want to do deployment properly, you need an installer. With Visual Studio it's dead simple to make a setup program that'll check for prerequisites like .NET and install them automatically.
Visual IRC: Fast. Powerful. Free.
With regard to your "find an excuse to not hang out with after work" comment. Actually, it are pseudo-academic language snobs who are avoided. The kind who love adding layer upon layer of complexity (including switching languages and tools all over the place), and take pride in their l337 skills for doing this. They can be great developers but are shitty *designers* (too bad they're usually so clueless at design they never even see or consider this aspect). Remember, great design is about *removing* stuff. As Einstein said, "As simple as possible, but no simpler" [note: this is actually misquote of what he actually said, but it is commonly enough used and conveys the same meaning in fewer words]. That means *fewer* languages, not more, should be preferred.
It this succeeds, it validates their development framework: "See, it's so good the freetards even abandon their precious GNU and Java for it." But Miguel cannot possibly keep mono current, so the thing will always be obsolete. And then whenever MS wants they can shut down not only Mono, but all the projects built with it. That's the crippling blow they are waiting for. They are already directly suing over Android and that's not even slightly derived from MS products.
There are just too many good toolchains to invest the grey matter and training time in this trap.
Help stamp out iliturcy.