Many "What IFs", but for me the developing tools and silverlight are key. Also on the RIM side QNX is a very promising bet against Linux/iOS/Windows, the demo doesn't feel real, but QNX is a strong OS.
Many "What IFs", but for me the developing tools and silverlight are key. Also on the RIM side QNX is a very promising bet against Linux/iOS/Windows, the demo doesn't feel real, but QNX is a strong OS.
And FWIW, I do my Android hacking with emacs and a shell buffer.
First of all the language. c#, especially in the latest iterations has become incredible. Featuring the goodness of both statically and dynamically typed languages. It has become very elegant and powerful.
Sadly, I can't say anything similar on Java. Is has been very slow to advance, very conservative when advancing, and the tools are still so slow (At least eclipse).
Regarding GUI development on Silverlight. Microsoft has done many things right with it. It has the best separation of UI and logic that I have seen built right into it. They have xml files to represent the UI (In the same way web has HTML), and the framework is as flexibly as could be (e.g. it wouldn't take you more than a minute to create a scrollbar that looks like a clock for example (If you have the graphics ready).
And the most important of all - they have a UI editor built for DESIGNERS. It encourages you to worry about the UI look and feel, and not on the logic behind it. It has tools in it from the designers world, and encapsulate a lot of headaches (E.g. setting a gradient direction is done by dragging a line over the area, and not by setting some numbers).
In addition, Silverlight has the advantage of being a second generation after WPF. Microsoft has learned from its mistakes with WPF, and simplified Silverlight dramatically. They could do that because Silverlight was a new technology which didn't have the requirement to be backward compatible.
Android allows you to define your UI in XML as well[1]. It's not that novel, Flex does the same thing too. But not to be too dismissive, it would nice to hear of experts in both to tell us what Android might be lacking.
Regards UI editor, yes, Android doesn't have any WYSIWYG UI editors. There is one, but it's 3rd party and not as polished as you describe MS's to be.
--
Another example is package management. If you want to mount an ISO in Windows, you have to scour Google for a while attempting to find a spyware-free available download. It's a garbage situation in Windows.
Linux, however, has amazing window management capabilities as well as package managers.
Now, if we turn to ease-of-use, I'd like to remind you that Google Chrome OS is coming out in one month (ish). While it is a proprietary OS, there is an open source / free software version called Chromium OS. This is a Linux OS that looks totally easy to use and will be natural for non-Linux people to handle.
I very strongly disagree that the Linux desktop is "a good distance" behind its rivals.
I'm a Fedora Core user at work (and have been for the better part of a decade) and am consistently appalled at the unreliability of things like sound and clipboard management. Areas that are completely taken for granted on other platforms.
create a new list box which works exactly like a normal listbox would but the items in it are replaced by whatever you write between <datatemplate></datatemplate> tags, and all the bindings you make in the data template are automatically set so that they are bound to the object they represent (ie the dynamic properties in data template 3 are bound to object 3 in the source list). And the entire thing takes only about 30 lines of xml.
Bind any property on any object to any property on any other object
Have any properly which is bound to any other property be automatically updated when the value of that property changes
Attach new properties to any xml element, and execute code when that property changes (useful to change a bool in one class to cause a window to close in another)
You can create entire master detail system and bind them together without haveing to write a line of c# code to tell it how it should look or what it should do -- which means that (if you structure your code right) that you can create unit tests that check that when one button is clicked, an item is removed from a list, etc.
Again, MS have created something that is really, really far ahead of anything else here. Too bad it is windows only.