449 karma · joined December 30, 2012
[1] http://www.washingtonpost.com/blogs/wonkblog/wp/2013/03/27/i...
I'm not sure if he convinced me regarding O'Reilly specifically (haven't read O'Reilly enough), and I agree with others about the repetition and bad style ("crazy talk"?). But some actual thoughts were hidden in there.
I don't know about shader profiling. GDB is apparently supported for debugging, haven't used it: http://www.kandroid.org/online-pdk/guide/debugging_gdb.html
EDIT: By the way, depending on the accuracy you require, you might want to take a look at this poor man's profiler that Mike Dunlavey has been advocating: http://stackoverflow.com/questions/375913/what-can-i-use-to-... It doesn't require compiling the operating system, you can just send a kill signal to your process multiple times and examine the stack traces from the logs. It may or may not be enough for your needs.
It's paradoxical however that to increase the portability of certain types of apps across mobile ecosystems, eg. iOS and Android, and now Ubuntu, your best bet can be to write the portable part in native C or C++, bypassing the Dalvik layer using JNI/NDK. This is apparently the common way to make cross-platform mobile games.
On memory consumption: I haven't made any measurements, but the Android .dex bytecode format has been designed with low space requirements in mind. See http://www.youtube.com/watch?v=ptjedOZEXPM . However, all apps run in their own VM process, with lots of common structures shared with them using an initial shared VM process and clever forking.
I always thought one of the main original motivations to use Java was because it's so well spread among developers. Since in the early days before the JIT compiler, there must have been a really obvious overhead even with the interpreter hand-coded in assembly. But they must have wanted to use a well known higher level language with good IDE support etc.
Ubuntu mobile apparently uses Qt: "It uses QML to give you a really slick, easy development experience for native apps with engines in C or C++, and JavaScript for UI glue that isn’t performance critical. We also give you full native OpenGL, which the top games companies are using to make incredible games." It seems actually pretty nice for developers: http://developer.ubuntu.com/get-started/gomobile/
They have a version of the Ash shell, Berkeley licensed, with the original notice by Kenneth Almquist. The Busybox Ash is also derived from the same origin.
As others have pointed out, they also have their own libc.
Most of these decisions seem to have been made to avoid using the GPL outside of the kernel. And a custom libc seems to entail that patches have been necessary to enable some of the standard GNU based tools they do have. If I understand correctly, mainly because of Bionic, you often can't just take a standard piece of Linux userland software and make it work without modifications or without including the GNU libc.
Also because of avoiding the GPL, the hardware driver model is different, with most of the driver logic being in closed source userland code.
The filesystem layout is non-POSIX-like, the way the user accounts and processes are handled is non-standard, they have their own dynamic linker, etc. Not to mention that a large part of the system relies on their Dalvik (Java) virtual machine, with a large application framework implemented in C++ and Java through JNI.
I'm not familiar with the embedded Linux landscape, so I don't know if this heavy avoidance of the GPL is common there. But I do know Android does not resemble GNU/Linux for these reasons.
I'm not saying Android isn't good for Linux. I also do appreciate the ability to read and learn from the source code and modify it.