Hacker News new | ask | show | jobs
by syshum 3463 days ago
I have never understood the desire to have 1 Homogeneous Platform with no variety, no customization, no personality.

To have a large corporate overlord dictating how I use the device I "bought"

I see these same statements in the Linux Desktop world where everyone bitches about how All the Distro's are different, and how the Arch way is different from the Debian Way, and different from Red Hat, Canonical etc.

That is what I LIKE about Linux, that is what is LIKE about Android.

If i wanted a Corporate Overlord I would use an Apple or Microsoft commercial garbage

3 comments

It'd be nice if you could just customize Android on ARM and have lots of different spin-offs in the same way you have various x86/64 and PPC Linux distros. I wrote about this:

http://penguindreams.org/blog/android-fragmentation/

The problem is with all these ARM boards. As other comments have pointed out, vendors have tons of binary blobs and shim layers that link them to the kernel. Nvidia/AMD do this too with their video drivers, as well as Intel/Broadcom/Atheros with their Wi-Fi/BT chips. The difference on the PC platform is that it's standardized enough that you can run any kernel/distro on almost any x86/64 board and it will boot and give you a console.

Android vendor kernels are patched to hell, duct tape, just enough crap to get to production style software. They don't submit patches upstream because their code is often junk. ARM SoC are also all incredibly different.

You can download x86/64 versions of Debian, Gentoo, Void, Slackware, whatever and it will at a minimum boot on any PC hardware made in the past few years (probably even a Pentium if you use a 32-bit distro). Not all your hardware will work, but it will at least boot. ARM makes no similar guarantees. Cellphones don't support device trees, and even if they did the whole device tree system is a mess of its own.

Google has ultimate control over all vendors with the OHA. They can mandate standard kernels and drivers across devices. They won't though. There's simply too much money in requiring people to replace devices every two years.

You're spot on here.

To also add, some (most!) vendors make dirty hacks to the kernel source, as they maintain it as a standalone tree for the most-part.

Wired the headphone jack the wrong way around? Don't bother with a new PCB revision, as deadlines are too tight, and getting things perfect seems to have no place; just hack at the driver code in a messy way and change the outputs! It's not like you're ever going to really keep the device supported for a long time anyway!

So you get layered hacks - the SoC maker adds their own hacks because their production cycles are so short. Then the OEM gets the SoC and integrates it with their board, and due to their short development cycle, hacks around any issues they have too. End result is unmaintainable spaghetti of hacks and tweaks, which mainline wouldn't touch in a million years.

If the vendor is patching kernel they probably must release their patches and proprietary drivers as GPL requires (regarding drivers they could avoid this by moving important parts into userspace).
There's two things that happen: one is adding more hacks in the kernel that while required to be released under the GPL (and sometimes are, sometimes aren't!) are never going to reach the mainline kernel in a thousand years because they are way too hacky.

The other is creating userspace blobs that get passed void* from the kernel containing (kernel) internal data structures. The problem then comes about when the kernel changes those data structures.

Because there's a very finite amount of open-source developer time in the world, and expending it all over the same territory over and over is foolish.
Developer time is not a finite resource. People contribute to projects that they are passionate about. Fragmentation can encourage engagement. It's not like unpaid xfce and kde developers would start kernel hacking if everyone converged on gnome, even if it would benefit the ecosystem. Many would pursue other hobbies.
Developer time is finite. Fact. There's no basis to question this. There's limited numbers of people on the planet and they have limited time. Sure, the number of contributors can grow (we haven't reached peak-developer numbers), but it actually grows more with success than with failure. Fragmentation is fine if there's actually enough resources for at least one project to really succeed. In most cases, and probably in the case of community-centered free/libre/open Android variants, there's a shortage of developer time and a real worry about it being fragmented into multiple projects instead of being more cooperative.
Volunteer open source developers are not interchangeable cogs ('resources') to be redeployed across projects at will by anyone except themselves - they are volunteers and work on stuff they are passionate about.

The F/OSS 'community' has some of the most entitled folk on this blue planet - I'm yet to hear anyone suggest pet shelter volunteers work together on a mega-shelter instead of "wasting effort on duplicate roles".

That's a false equivalency. No one suggests IT staff deploying hardware are B duplicating effort because there's a physical correlation between results and resources.

But 10 different desktop environments are each solving the same problem 10 different ways, consuming 10 developers time, when a collaborative project would be able to reduce that by a huge factor and benefit everyone.

I would also suggest it's naive to think charity's don't have opinions about the duplication of effort. 10 storage animal shelters might very well waste funding and resources which could otherwise support 2 or 3 better equipped ones.

>But 10 different desktop environments are each solving the same problem 10 different ways, consuming 10 developers time, when a collaborative project would be able to reduce that by a huge factor and benefit everyone.

Most of the time, they don't merge because they don't want to.

For example, the guys working on Gnome3 wouldn't want to work on LXDE and vice versa. People want to scratch their itch. If I have a light computer (or have heavy tasks), I cannot run Gnome3. If LXDE didn't exist, I would go without a window-manager or would switch back to Windows.

And many who would look at an "ugly" DE like LXDE would switch back to Windows if they didn't have Gnome3.

>> when a collaborative project would be able to reduce that by a huge factor and benefit everyone.

Or benefit no one because you create a Desktop that no one likes because it is developed in a way to pisses everyone off

Gnome users do not like the KDE Experience

Awesome Users do not like the Gnome Experience

XFCE users do not like the Awesome Experiance

This is the reason these products exisit, and no it is not "duplicating efforts" any more than have different models of Cars is "duplicating efforts"

Do you really believe the automotive industry would be better off is all the Auto Manufacturers did away with all Models and simply made 1 car.

You're not the target audience.
>target audience

Of what?