Linux on the bottom?

  • Thread starter CocoCreekFisherman
  • Start date

Linux = Lego blocks in random assortment?
Not random as each distribution chooses the packages they want to integrate. So it's more.. by design. Some distros are made to be very light (like angstrom on Pandora), other are made to be used as security tools only, etc... 

Yeah, you should read the book "Free as in Freedom" (you can download it on Pandora and read it on it with Hackerbooks on the repo - shameless plug)
 
Hello good sir, try one of the popular distributions on your desktop, debian, or if you want something very sleek out of the box elementaryos, if you want simple go with crunchbang and if you want to go for something like the most barebone, tinycore.

You can try them without installing with http://unetbootin.sourceforge.net/ they boot up from usb into a live mode, basically using you usb as a hardrive, then you can play around for a while, and decide to install it afterwards.
 
No there are different lego blocks.

The main block, the kernel is the same in all distros (with small modifications maybe). Even in Android, google did some pretty nasty things (try to get network access as root when you are not in the network group? no way), but it is the same kernel.

Without a kernel there is no distro and no operating system. When you read some definitions the kernel IS the operating system.

The blocks around the kernel are the window manager (your desktop with the start button and task bar etc), the file manager (when you open a folder), the browser, the network manager and so on. There a several in linux. Gnome, KDE, Lxde (my favourite), XCD (the pandora one) and so on.

In Windows you can't change the blocks around the kernel (Windows has its own kernel). You have one Window Manager (Aero in Windows 7 or Luna in Windows XP). You can't use Aero in Windows Xp. One file manager. At least you can change the browser ;) . On an open operating system like Linux you can change anything.
 
Last edited by a moderator:
Here's another thread about this subject: http://boards.openpandora.org/index.php/topic/8877-linux-os-not-gnulinux/#entry160014

I think the car analogy works quite well to explain the concepts.

- The car corresponds to the OS, the road network corresponds to the hardware. To make the analogy work, you have to imagine that cars built for one type of roads (e.g. concrete roads) normally don't work at all on different roads (e.g. dirt roads), although if the road is "backwards compatible" with another road, it will work but maybe not optimally.

- The car engine corresponds to the kernel - it is obviously a very important component, and one that has a big impact on overall performance (speed, efficiency). Some car geeks may even go as far as to say the engine IS the car. I wouldn't agree with that.

- There are a lot of other components behind the hood besides the engine itself that are also necessary to make your car work - these would correspond to coreutils, binutils, sysutils, glibc and so on.

- The car needs wheels and doors and so on, those would correspond to a shell (e.g. bash), basic utilities like grep, tar, gzip, diff, etc and basic libraries like libreadline, glib, etc.

- You probably want to have a windshield and other windows in your car - that would be the task of X11.

- The steering wheel and pedals etc correspond to the user interface: the window manager, file manager etc. Lots of options for customization there.

- Maybe you want to tinker with your car, add some modified components, fix something that got broken. You need garage tools and manufacturing machines for that. That would correspond to things like gcc, gdb, make, autoconf, automake, bison, gettext, and so on.

In this analogy, companies like Microsoft and Apple make specific cars of a specific model, built for a specific type of roads. All or most of the components are designed by them, their design plans are their property, and you typically get very few customization options because their components are not designed to be interchangeable and they only offer one combination of components - maybe you can change some superficial things like the color or the seat types, but that's about it. If some component breaks down or doesn't do what you want it to do, there is basically nothing you can do about that, except wait and hope that the company will give you (or sell you) a fix at some point.

Android is a car that has the "Linux engine", but besides that, it's again a typical car with fixed, proprietary components, although some people still try to do some modding. You can get the Android car for free though, while Microsoft's and Apple's cars are not for free.

GNU/Linux is a family of cars, also available for free, but moreover, all the components have public design plans ("open source") which makes it really easy to build them for any road type. Also you are free to modify the components ("free software"), and for each component there are typically several alternatives available. This means you can configure the car in wildly different ways: you can make a small fuel-efficient one-person vehicle, or a huge bus, or a mars rover, or whatever.

A distro is simply a "car configuration": it's a selection of components that are tested to work well together. The main job of a distro maintainer is to keep each component up to date (since the design plans are continuously improving), produce the component (compile it) tuned for each type of road (the hardware architectures the distro supports), and check that everything works well. Of course there is a big overlap between the distros.

I hope this helps to explain things.
 
Last edited by a moderator:
Here's another thread about this subject: http://boards.openpandora.org/index.php/topic/8877-linux-os-not-gnulinux/#entry160014

I think the car analogy works quite well to explain the concepts.

- The car corresponds to the OS, the road network corresponds to the hardware. To make the analogy work, you have to imagine that cars built for one type of roads (e.g. concrete roads) normally don't work at all on different roads (e.g. dirt roads), although if the road is "backwards compatible" with another road, it will work but maybe not optimally.

- The car engine corresponds to the kernel - it is obviously a very important component, and one that has a big impact on overall performance (speed, efficiency). Some car geeks may even go as far as to say the engine IS the car. I wouldn't agree with that.

- There are a lot of other components behind the hood besides the engine itself that are also necessary to make your car work - these would correspond to coreutils, binutils, sysutils, glibc and so on.

- The car needs wheels and doors and so on, those would correspond to a shell (e.g. bash), basic utilities like grep, tar, gzip, diff, etc and basic libraries like libreadline, glib, etc.

- You probably want to have a windshield and other windows in your car - that would be the task of X11.

- The steering wheel and pedals etc correspond to the user interface: the window manager, file manager etc. Lots of options for customization there.

- Maybe you want to tinker with your car, add some modified components, fix something that got broken. You need garage tools and manufacturing machines for that. That would correspond to things like gcc, gdb, make, autoconf, automake, bison, gettext, and so on.

In this analogy, companies like Microsoft and Apple make specific cars of a specific model, built for a specific type of roads. All or most of the components are designed by them, their design plans are their property, and you typically get very few customization options because their components are not designed to be interchangeable and they only offer one combination of components - maybe you can change some superficial things like the color or the seat types, but that's about it. If some component breaks down or doesn't do what you want it to do, there is basically nothing you can do about that, except wait and hope that the company will give you (or sell you) a fix at some point.

Android is a car that has the "Linux engine", but besides that, it's again a typical car with fixed, proprietary components, although some people still try to do some modding. You can get the Android car for free though, while Microsoft's and Apple's cars are not for free.

GNU/Linux is a family of cars, also available for free, but moreover, all the components have public design plans ("open source") which makes it really easy to build them for any road type. Also you are free to modify the components ("free software"), and for each component there are typically several alternatives available. This means you can configure the car in wildly different ways: you can make a small fuel-efficient one-person vehicle, or a huge bus, or a mars rover, or whatever.

A distro is simply a "car configuration": it's a selection of components that are tested to work well together. The main job of a distro maintainer is to keep each component up to date (since the design plans are continuously improving), produce the component (compile it) tuned for each type of road (the hardware architectures the distro supports), and check that everything works well. Of course there is a big overlap between the distros.

I hope this helps to explain things.
^ Very much so yes.  ;)
 
Last edited by a moderator:
Also, linux comes with a toolchain that, combined with those public designs (source code) lets you build any part of the car (operating system) from scratch yourself.
 
Android is a car that has the "Linux engine", but besides that, it's again a typical car with fixed, proprietary components
There are more shellslaunchers for Android than there are for Linux, and you can install most of them quickly and easily from the playstore. Some are free, some for a small cost, some are specific to a carrier and only come pre-installed (and even then there's usually a way to get them if you really want). Not even the dialer, in an OS designed specifically for phones, is fixed, and is designed to be replaced. In fact, pretty much everything in vanilla Android is entirely modular. The only thing that is "Android" is the kernel and dalvik: basically a car frame, an engine, and a bunch of points in the frame where specific components absolutely need to go. "The gas pedal must go here. Here's a box of 100 different styles, pick whichever you want". If there was ever an operating system that fit the "lego" analogy, it'd be Android. Don't want a rear view mirror (file manager)? Pffft, fine, you don't need one and we're not going to force one on you. If you really want you can drive along with a completely empty shell, reaching your hand into the engine itself to pull the throttle and go faster. You wouldn't be able to steer or stop and you wouldn't go very fast without tires, but it'd "work" in as far as a car needs to be able to move forward.With all this customization it's really hard to get a set that is functional and aesthetically pleasing: you want the heated seats, but they're extra bulky so you sit a little closer to the steering wheel, which is a problem since you also chose the "boat captain" style steering wheel and sitting so close it hits your knees a lot. So carriers, who like uniformity, select the parts they think goes best with their phones and lock them down: you get a specific shell, specific dialer, specific message system, specific toolbox, things they think are essential. Then there are non-carriers, like Cyanogenmod and MIUI, which have taken the source and added the things they think are important for a completely different car design.

edit: confused shell vs launcher.
 
Last edited by a moderator:
I was talking about carrier-locked down instances of Android. A rooted Android device gets closer to GNU/Linux in terms of modularity, but still, there is a big difference (afaik) in attitude: Android does not exactly promote Free software - it has of course a big open source community, but there's also plenty of proprietary stuff.

Android does have a lot of customization options - especially compared to iOS or Windows - but most of it is relatively superficial or at the application-level. And most of the stuff in its ecosystem makes some strong assumptions or requirements about the device it will run on (most notably, about available input and output methods) - essentially everything is designed with phones and tablets in mind. This is not the case for GNU/Linux, which has an ecosystem that covers a much wider range of machines, from big server farms to small embedded systems.

Also in terms of development options, in Android you're basically restricted to Java. In terms of hardware, you're basically restricted to ARM (and maybe x86). You cannot use standard libraries like X or glibc.

So from my point of view, most of Android is not really like Lego, but rather like Barbie dolls: there are a lot of them to choose from, and you can dress them up in lots of different clothes, and you can put whatever you want in your doll house and have all kinds of accessories. But still the options are kind of limited if you compare it to Lego.
 
Android as barby doll... This analogy made my day!
 
I was talking about carrier-locked down instances of Android. A rooted Android device gets closer to GNU/Linux in terms of modularity, but still, there is a big difference (afaik) in attitude: Android does not exactly promote Free software - it has of course a big open source community, but there's also plenty of proprietary stuff.

Android does have a lot of customization options - especially compared to iOS or Windows - but most of it is relatively superficial or at the application-level. And most of the stuff in its ecosystem makes some strong assumptions or requirements about the device it will run on (most notably, about available input and output methods) - essentially everything is designed with phones and tablets in mind. This is not the case for GNU/Linux, which has an ecosystem that covers a much wider range of machines, from big server farms to small embedded systems.

Also in terms of development options, in Android you're basically restricted to Java. In terms of hardware, you're basically restricted to ARM (and maybe x86). You cannot use standard libraries like X or glibc.

So from my point of view, most of Android is not really like Lego, but rather like Barbie dolls: there are a lot of them to choose from, and you can dress them up in lots of different clothes, and you can put whatever you want in your doll house and have all kinds of accessories. But still the options are kind of limited if you compare it to Lego.
I prefer and understand this explanation.
 
Last edited:
Only if the barbie doll is designed to have it's head, arms, and legs replaced, dressed up in different clothes, optionally not have legs at all... :p

I was talking about carrier-locked down instances of Android
Of which almost everything is still entirely modular.
Android does have a lot of customization options - especially compared to iOS or Windows - but most of it is relatively superficial or at the application-level
If Android's customizations are "superficial or application level" then the exact same applies to every flavour of Linux. Differences between any two distribution might be things like the window manager, the file manager, default installed applications, library versions, and other mostly application level stuff: underneath it all, anything running the linux kernel and able to load Linux libraries can be said to be "Linux". But of course we're not just talking about "Linux", we're talking about "GNU/Linux", so it needs a specific set of libraries to start, a collection of tools (sometimes from an available list, like different shells or editors), if it's to be graphical it needs a window manager. What have we got in Linux? Gnome, KDE, Enlightenment, XFCE, a few others? Maybe a dozen altogether? Android has all these, and that's just the list of the major ones. Same goes for the file manager, tool box, ssh and http daemons, the list goes on. The only thing that makes Android "Android" is the kernel and dalvik, plus a few libraries (like the NDK), everything else that goes on top of it, from the input to the launcher, is a distinct module that can be swapped out with any myriad of other modules. It's a phone OS, and there are about 40 different dialers you can choose from! The one thing you can argue it was designed for and even that's modular by design. Hundreds of different on-screen keyboards to choose from, or physical keyboard, it's all the same to any application that requests text input.If you compare the phones from two different companies you'd see they can be wildly different in terms of launcher and pre-installed applications. This is exactly identical to the Linux world, where you have Debian competing with Red Hat and Slackware, each with a different set of principles, and within each there are "splinter" distributions, equivalent to different carriers doing their own customizations on the phone manufacturers existing software.

makes some strong assumptions or requirements about the device it will run on
No it doesn't. There is absolutely nothing in Android itself that makes any assumptions about anything, this is why it is possible to compile Android for so many devices regardless of their hardware. The Pandora doesn't have any of the junk in a regular phone and it's able to run Android. If some applications make assumptions about hardware, like whether there's a GPS or a phone or other sensors then that is entirely on the application.Hey, I've got a webcam app on my desktop that assumes I have a webcam and won't start without it, obviously Linux is at fault here, right? :p No, of course it isn't. The application is designed with a specific purpose and I don't fault it at all for requiring the device that it was designed for. Same goes for Android applications.

And then, just because of how modular Android is, it's even possible to get around a lot of these requirements anyway by creating fake devices, because Android was designed for that and doesn't make any assumptions about the hardware.

You cannot use standard libraries like X or glibc
No, you have a completely different set of standard libraries. If the argument is that Linux is somehow more customizable because Android can't use the X libraries, then I'll just turn it right around and say that Android is more customizable because Linux can't use the NDK libraries, or that Windows is more customizable because neither of them can use the W32 libraries. C'mon man, that's a dead end argument and you know it.
but there's also plenty of proprietary stuff
Irrelevant. The discussion is about whether Android can be argued to be more or less customizable than standard GNU/Linux and this can be true whether the customizations are open or closed source.
Also in terms of development options, in Android you're basically restricted to Java
Or perl, ruby, C, C++, brainfuck, python, php, lisp, BASIC, COBOL, bash script... yeah, it's not a short list. Almost every language for an x86 linux desktop has one or more Android equivalents.
Android was designed for modularity, Google wanted it to be able to run on as many different devices as possible, and be easy to use in every case, so they wrote compatibility hooks into it right from the start for all the devices they could think would be useful, and even then they still missed some and had to add them in subsequent releases. Unlike Windows or Linux however, which have standardized libraries for things like sound and video, keyboards and gamepads, Android just has hooks and stubs and everything that goes into those hooks from back end to front can be replaced. You can completely change the launcher and applications will still work (try changing from Gnome to KDE with the same lack of hassle), change the underlying sound system and sound is still produced (and how many applications choke on Pulse vs ALSA vs OSSv4?), and a lot of that is thanks to dalvik. There are arguments to be made about whether this is better or worse: I would definitely say that it is a lot less secure, since anyone can just replace any component and who knows what it's doing, but it is very hard to argue against the amount of customization it provides.

tl;dr;

Android is modular by design, both inside and out, with dozens (and sometimes hundreds) of offerings for what GNU/Linux would consider "standard" components. You can have multiple of the same components installed at any time and choose between them whenever required, or have none installed at all. This is where the lego analogy came in: you have a base board, you can jam as many of any coloured block onto that board as you would like, build whatever kind of mess you want in whatever configuration you want, and as long as everything is built on that base board it's still Android. It doesn't always look pretty, it may not function well but it's still Android, but that's why manufacturers, carriers, and rooters build their own versions, so that there is some uniformity and aesthetic appeal. The car analogy is still better, of course, but if ever there was an OS that could fit a lego block analogy it would be Android.
 
admit it: you were playing with barbie dolls as a child. you're disturbingly familiar with them.
 
OK, Android may be more modular and customizable by design than GNU/Linux. My original statement was that it is more proprietary than GNU/Linux though - that is a different claim. And while the core of Android may work on a big range of devices, I think it's fair to say that the Android community focuses on stuff like phones and tablets. I don't think there are any number-crunching superclusters running on Android, or big web servers, or anything like that.
 
OK, Android may be more modular and customizable by design than GNU/Linux. My original statement was that it is more proprietary than GNU/Linux though - that is a different claim. And while the core of Android may work on a big range of devices, I think it's fair to say that the Android community focuses on stuff like phones and tablets. I don't think there are any number-crunching superclusters running on Android, or big web servers, or anything like that.
Certainly no number crunchers, superclusters or big web servers as one of the posts implies. Even my Android Netbook and Shield [running Jellybean OS] is still phone and tablet based right now. 
 
Last edited:
On an open operating system like Linux you can change anything.
Even the Linux kernel (in wb's analogy the engine) itself, see Debian/kFreeBSD. ;)
That's not Linux though, is it? It's GNU/FreeBSD (to use Stallman's terminology).
You are right. I just wanted to show the problem of the whole thing: If even the kernel is in fact switchable... What is the defining part of your operating system? I would say: The whole thing. Kernel. GNU stuff. Windowmanager. And maybe even your preferred applications. ;)
 
Alright, coming over from the GNU/LINUX discussion I had posted this there

http://boards.openpandora.org/index.php/topic/14153-best-name-for-gnulinux-other-than-linux/#entry270375

it should have probably gone over here as it's more relevant in this thread than that one.

Question to _wb_ , have you dug into or built android from source code? Not even having to use it, but just built it from source? Other than device specific driver blobs that come on things as common as a nexus 7, or as niche as the pandora. The same closed off driver blobs exist on both devices. Everything above that level is open sourced though. Other than that specific peice of the puzzle what is proprietary and closed off?? I keep seeing this thrown around as an argument for not wanting to adopt android but I've seen absolutely zero proof supporting it!

The only part of android that is closed source is the highly ***OPTIONAL*** google play store, gmail, and stuff like that. Which can always be installed later on top of any android build. What open source android (cyanogenmod varient) is like, is what can be installed on the pandora for everyone's viewing pleasure, fully functional minding a unfinished port.

My point is android is open source, from top to bottom. Google controls what gets added and what doesn't just like linus does with the linux kernel and what conical does with ubuntu. So gnu/linux and android are equally as open source and you can pull and fork in the exact same way you can from any open source project. I'm pretty sure saying otherwise is just inaccurate.

That being said, what is techncially preventing anyone from splintering off and making their own fork of android that has the functionality of both operating systems? I posted a link (in my link at the top) where someone ported x to android, there's also busybox for commandline stuff. What is preventing someone from taking it a step further and tweaking android so that the limitations are no longer there? It's easy to say not possible... but nobody is saying not possible unless...

I think the unless is nobody has done it yet. 
 
Last edited by a moderator:
I think Android is a good example to illustrate the difference between the Open Source and the Free Software movements. While Android itself is Free and Open Source Software (mostly under the Apache License, which is a Free license but not a copyleft one), it is not copylefted, allowing and encouraging proprietary extensions and adaptations. Their community, in general, appreciates Open Source as a development methodology, but tries to distance itself from the social movement that values Free Software. As a consequence, they are willing to compromise on freedom if that results in more convenience or bigger "success" (where "success" is defined in terms of market share).

See also: http://www.gnu.org/philosophy/open-source-misses-the-point.html
 
Back
Top