I strongly disagree. FOSS is a huge force for both backend development and front end web development. One can also argue that Android is mostly open. EDIT: The large majority of servers in the world are running on FOSS. I can also predict a large number of upcoming devices like the internet of things to be running on it. Whether or not they run Android is another story.
The only reason FOSS may not be a "player" is because it's not a single monolithic organization, but instead it's a very loose coalition of thousands of individuals, organizations, and companies.
> How many languages can you use to write apps for your iPhone or Android device? Objective C and Java respectively and that's about it.
This may be the case for clients, but a lot of mobile apps also depend on server side apps.
In North America and Europe it's theoretically open but OEM's dependence on Google's services (which for many people are part and parcel of the Android experience) and the control Google exert through that means that there are real limitations on how open it is in reality. This week showed just how much freedom Samsung, the largest smartphone maker in the world, has to do what it wants with Android - almost none.
You can argue that that's not really Android, it's the services, but until there are solid FOSS alternatives to those services you can't use Android to put together a compelling smartphone without Google.
That may change over time but for now for a majority of people it's a relatively closed platform.
In China and much of Asia where Google services are either unavailable or less compelling it is far closer to open. OEMs use the OS, bundle what they want and ship it without Google knowing or controlling anything and that's maybe a third of Android shipments worldwide so not insignificant.
I actually have an older Galaxy S and I installed CyanogenMod on it without Google's services, so no Google Play, no GMail, etc... The phone is actually usable. I have more apps on it than I have on another Win Phone 8, a Lumia that I received as a gift.
As a browser, I'm using Firefox, which I happen to believe it's the best mobile browser right now. For email I'm using K-9 Mail, a pretty good open-source email client that can also do PGP encryption btw. My contacts and my calendar are synced fairly OK, since I'm connected to my Google account through the Exchange protocol.
For maps I'm using OsmAnd - extremely awful interface, but the maps are from OSM and are awesome and because it helped me get to where I wanted, I have tolerated the UI. For music and movies I'm using Apollo and VLC.
For Facebook and Twitter and other high-profile apps, I could have gone with Amazon's Appstore, however I preferred to use the web interfaces, packaged as apps in Firefox's marketplace. Not as snappy as the native interfaces, but they work and you also get better sandboxing.
The amount of work to go from zero to open-source Android is huge. You could fork Android and release something usable today. Amazon did it ;-)
1) This is really an option for a relatively small part of Android's install base most of whom don't know F-Droid exists, let alone how to install it or why they might want to.
2) Any company wanting to produce a phone on this basis is (a) depending on a lot of other products and organisations and (b) putting out a product with - for instance - a substandard maps product next to the competition.
So yes it's open, but not in the way that I think many would like it to be (that is where a genuinely open phone that the average punter can and does use exists).
That said, yes Android isn't technically Android without Google services but it doesn't mean that stripped down it's still not useful. Just ask Amazon or one of the many companies in Asia that have forked it.
> until there are solid FOSS alternatives to those services you can't use Android to put together a compelling smartphone without Google.
You've made my argument in the same post.
> In China and much of Asia where Google services are either unavailable or less compelling it is far closer to open. OEMs use the OS, bundle what they want and ship it without Google knowing or controlling anything and that's maybe a third of Android shipments worldwide so not insignificant.
The interesting thing for me is how Google react to the areas where they're losing control of Android. For them Android is (or was) a means to an end - it stopped Apple getting control of the mobile space which would have made Google beholden to Apple for traffic to their services.
I personally don't believe Google have particularly strong feelings about Android as an open source property, they care about it for what it does for them in areas they do care about. It'll be interesting to see how that plays out over the next few years and what that means for Android.
That last point is one of the reasons for why I switched away from iOS to Android. I have yet to encounter an Android phone that doesn't do Wifi tethering because the mobile career says so. And my prior mobile career also had the nerve to ask me for an extra 4 EUR per month for wifi tethering. It's my device damn it and I feel that Windows Phone is a shitty iOS replacement, without the sexy.
> How many languages can you use to write apps for your iPhone or Android device? Objective C and Java respectively and that's about it.
For targeting iOS you can actually use Ruby [1], C# [2], Java [3]. Many iOS games are using Lua for scripting. Speaking of which, Unity 3D is a platform for building games and you can use Javascript, C#, Boo or UnityScript (a sort of ActionScript). The problem with iOS is that Apple had artificial restrictions that disallowed virtual machines, so bytecode and virtual machines were out. I think they lifted those restrictions, though iOS is what I call a defective by design platform.
On Android there are no limits. People build stuff with Java, because it's the least painful path and works fairly well. Games are still being built with C++. I have used Scala and it works well. Many people are also building apps with JRuby and Clojure ... though Dalvik is not as capable as a real JVM, so dynamic stuff has performance issues.
Even if you target the browser, you can compile C++ to asm.js and for replacing Javascript there are full-featured replacements available that use Javascript as bytecode - like Dart or ClojureScript.
> server side development which is in a sense a niche
Err, what? 99.9% of all software being built today is either server-side or has indispensable business logic that's handled server-side.
> [Linux, server-side] could have co-existed with Microsoft perfectly happily
You're probably too young to remember all the shit Microsoft did to prevent Linux and the web as a platform from happening. That's OK, you'll live and learn.
[1] http://www.rubymotion.com/
Anyone owning a computing device in the days of Microsoft's reign was able to use any programming language in existence (pretty much) to do development for their device. The APIs were accessible and libraries and technologies played with each other. Mostly because they were around some common lower denominator (e.g. a C or lower level API). You could install anyone's software without needing an intermediary. It was clear that you owned your device, you owned your software and you owned your data. They didn't force other software vendors to pay them a fee. It wasn't Microsoft that broke all that. Microsoft is only playing catch up there.
I don't know Windows Phone 8 at all but if all you're saying is right then that sucks and I won't defend Microsoft there.
SaaS is just another facet of this multi-pronged attack on the user.
You could use any programming language you wanted - as long as you ported the headers and import libs to it. The Windows SDK and other Microsoft SDKs supported only C (Microsoft's, not Borland's or Watcom's, nor GCC) and Visual Basic. Wanted to use Delhi and Borland didn't create import units yet? Too bad, you had that to do for yourself.
Which is similar situation today. Both iOS and Android have well defined ABIs. Do you want to use something, that is not oficially supported by respective vendors? You can create the bindings for yourself. Nobody is preventing you. For some languages it was done, for some it was not. Android by its nature supports anything that compiles into Java bytecode, so even the bindings problem is a less of an importance. (Yes, there could be problem with Clojure, because of different assumptions on the part of Clojure and the constrains on Android devices. Due to that, it will run, but very slowly).
You can install any apk on Android device, without any intermediary. On the other hand, Microsoft got Apple envy and does prevent you from installing any application on WP handset.
In today's mobile world, Apple and others could learn from the drawbacks of the desktop world and implement a "better" system, at least in some respects. It has certainly helped their revenue.
http://www.embarcadero.com/products/rad-studio/ios-developme...
http://scala-ide.org/docs/tutorials/androiddevelopment/index...
I'm guessing no.
The entire experience is a sorry joke. I'm a big fan of Delphi as far as a tool to produce good/fast/native apps goes. They really dropped the ball with the ios/android tools. They ripped off GPL code, causing multiple patches to "fix" mis-appropriated open source code, it's fairly obvious there is no money, and the only customers they have are the existing ones who have a bunch of greybeards with a lot of Delphi experience and nothing else who are desperate to pump out _something_ for the mobile market, but are unprepared to learn _anything_ new.
Sorry, I'm just bitter that they took a decent product (Delphi 7), and took a shit on it, and then continued to grind it into oblivion.
Android allows you to freely deploy your applications to their devices, while iOS requires a little more work. In neither case do you have to go through their respective stores (I'm thinking enterprise/personal apps here). For commercial sales it's increasingly a moot point: consumers are purchasing apps through app stores regardless of platform.
As a developer, I've never felt more free, less beholden to a corporate entity and their hidden agenda, and have an awesome stable of tools and technologies from which I can use to build solutions. It's almost gotten to the point where I have too much choice!
And that's awesome!
Compared to truly open devices, and moderately open systems (even Windows or OSX), that is an absolute joke.
So I guess your answer is, Objective-C, Lua, or Microsoft technologies (implemented by Xamarin)? I guess Microsoft may have a role to play in this. ;)
iOS - ObjC, Ruby, Common Lisp, Haxe, Java, HTML5, C#, C++, probably others...
Android - Ruby, Python, Clojure, Java, Common Lisp, Haxe, C#, HTML5, Scala, C++, C, anything that runs on the JVM or translates to Java, anything that compiles to native code. Basically everything. Some are easier than others.
On my phone there are commercial apps that run on Clojure and Haxe, two fairly obscure languages.
This is hilarious, since Linux and BSDs are just killing it in the server space - take a look at stats on Amazon EC2, or DigitalOcean, or even just server market share stats. Take a look at what pretty much every web service uses as their backend (Linux).
Linux is pretty much the only game in town in the HPC (supercomputing) market.
> As a developer it actually feels worse.
I'm currently working with someone who only knows how to program with a ton of hand-holding from VS. I don't doubt it feels worse for you.
Linux makes development feel 1000x better if you are willing to learn a few basic things, which you'll retain forever.
This is why the world is better today - because Apple, Google, MS, IBM - not one of them 'controls' anything. They all push a little in various directions, but openness is winning. Linux is more relevant than ever, Mozilla is more relevant than ever, and the open web is bigger than ever.
EDIT: Something happened to my footnote. The HW specs used to be open in the PC WinTel era. We could freely exchange software. We could run multiple OSes. Lots more choice in languages etc.
> The world of Google and Apple (Samsung and FOSS aren't even a player) is a world of closed computing platforms
As a user of Omnirom and a donator to Replicant I don't understand how you come to this conclusion.
Agreed, the alternatives to google apps are not too good today, but that could relatively easily be changed. But if compared to windows phone. Really? How?
> where people can't control their own devices
If installing a different operating system with the tools from the official SDK is not controlling my own devices, what is?
Again, the proprietary drivers is a bad situation, but compared to windows phone, what exactly do they more openly?
> and can't and don't code for them.
All the tools required to build apks are open source. The eclipse android plugin was open source and android studio is open source. Enabling installing your own apps directly is natively built in and can literally be enabled in seconds. If you "can't and don't code for" android even if you want, then there is really nobody but yourself to blame.
> More languages? I don't think so. How many languages can you use to write apps for your iPhone or Android device?
As others have said, you may want to use android's gui toolkit, but other than that native applications can rather easily be wrapped. As it is linux, you may even run command line programs in any language you can compile for arm or compile an interpreter for directly.
> Objective C and Java respectively and that's about it.
Have you actually heard about xamarin'c c# for mobile devices? python + kivy? ...?
> With Google not only do you not control your apps/device
Well, I can compile the operating system myself and remove any apps I don't like in the process. I could also remove them from the device because I have root rights. There is literally nothing but the proprietary drivers and firmware I don't control, but again, how exactly does that get better with windows phone?
> even your data isn't under your control any more.
I use the google apps for convenience but you can use your android device without them perfectly fine. Install f-droid. Install only open source apps. Try doing this with windows phone?
> Yes, Microsoft's business practices weren't so great, but I don't agree the new world is much better.
With android being open source you can see the benefits directly: Other systems like Blackberry OS (or whatever it is called) or Sailfish OS can (rather) easily implement android's runtime and run almost all android apps natively. Compare this with what wine has to do?
> As a developer it actually feels worse.
It feels worse not to have proprietary microsoft specific tools that lock you into the microsoft ecosystem forever?
The world of Google and Apple (Samsung and FOSS aren't even a player) is a world of closed computing platforms where people can't control their own devices and can't and don't code for them. More languages? I don't think so. How many languages can you use to write apps for your iPhone or Android device? Objective C and Java respectively and that's about it. With Google not only do you not control your apps/device even your data isn't under your control any more.
Yes, Microsoft's business practices weren't so great, but I don't agree the new world is much better. As a developer it actually feels worse. The only exception is Linux and server side development which is in a sense a niche (plus that existed before Google and Apple rose to their dominance and could have co-existed with Microsoft perfectly happily).