We all hear about hackers everyday. They are attacking banks or they are getting some secret information from pentagon etc. And they intrude into our system to get passwords for bank accounts.
At the same time, we hear about Hackers' symposiums such as 'Linux Hackers Meet'. So what is this about? Hackers can meet somewhere and discuss future plans? (such as which bank to attack?). Or does the word 'Hacking' has any other meaning?
If we read any Computer Science books, we can understand that they use the word 'hacking' as 'clever fix for a problem'. It is not about 'hacking' into any banks or computers. An example is the book 'Hacking Linux Kernel'. This book is about going into details of linux kernel.
Richard Stallman defines 'hacking' like this
"Playfully doing something difficult, whether useful or not, that is hacking."
So initially this word is used to denote doing something clever. But later media used the word 'hacking' instead of 'evil hacking'.
So whenever we this word in the media, we can understand it as 'evil hacking'. But if we are seeing it in computer books, we can infer 'clever fix'.
Android is fastly gaining popularity in the mobile market. New Android phones like Motorola's DROID are coming up.
There is a general perception that Android is new Operating System. But some others argue that it is just another linux distribution(distro). So what is android actually?
What is linux distro?
A linux distribution is a full package consisting of OS, libraries and utilities. Fedora, SUSE, Debian are examples of linux distro. A distro will have a linux kernel as the base. Then GNU libraries and applications constitute the application space. The applications (mainly C applications) communicate to the linux kernel via GNU libc.
What is Android?
Android also have Linux kernel as the base. But Google do not use GNU libraries or utilities. Here they use bionic libc and some utilities which are different from that of normal linux distribution.
There are mainly two reasons for this. The first one is that they want to have minimum footprint for the libraries, because it is going to be used in mobile phones which have limited resources. GNU libraries and utilities are known to have bigger footprint.
Another reason is that they want to avoid GPL licensing. Google want to allow the use of proprietary software and libraries, which is not possible if they use GPL licensing. So they adopted BSD licensing.
The applications constitute browser, contacts etc.
Application Framework provides components common to the applications. This includes Resource Manager, Activity Manager, Window Manager etc.
Android libraries constitute Bionic libc, SQ Lite for data storage, Open GL for graphics handling, Media Framework for handling audio, video etc.
Run time libraries include libraries to give run time support for java applications. This include Dalvik Virtual Machine.
A detailed explanation is given in the Android developer’s site.
In Android the linux kernel constitutes the OS part. From a layman's perspective, it can be a new OS. Because he sees only the application components, which are quite different from normal linux distributions. But if you are a programmer, especially driver developer, you will not agree that it is not new OS. You will say that it just a different kind of distribution.
So my argument is , Android is a platform (or software stack) optimized for mobile phones. It is not a distribution like Fedora or debian. It is not a new OS also. If we check android developer site, nowhere it is claimed that it is a new OS.
Most of the open source softwares are licensed under GPL or LGPL now.
So what is GPL or LGPL?
They are 'free software licenses' used for the open source programs. Here the word 'free' means freedom to do anything, not free of cost. These are good examples of CopyLeft practice.
GPL(General Public License) is license published by Free Software Foundation to protect open source softwares. Suppose if we are publishing a software or code under GPL, then anybody can copy, modify and redistribute this software or code. But they are obliged to publish the new version in GPL license only. That is, they also need to provide the same freedom to whoever they are giving it. And if somebody is using the GPL licensed code in their software, they are obliged to release the source code also.
LGPL(Lesser General Public License) is a weak version of GPL. If we have released our code under LGPL, then independent open source or proprietary software can link this code to their software. For Example, a non (L)GPL program can link to a LGPL library. So LGPL is normally used for libraries. So if a proprietary software is using an LGPLed shared library, then that software is not required to give the source code. But if we are using LGPLed code as static library, then that software is required to give either source code or object files.
So usually libraries are published under LGPL and other codes are published under GPL. But now people like Richard Stallman are suggesting to license some libraries under GPL. This will cause proprietary softawares to abandon these libraries. So he believes, this may give edge to free software programs over proprietary programs.
GPL v2 and GPL v3
GPL v2 was launched in 1991. But there were allegations that some vendors are misusing loopholes in GPL v2. One example is the distribution of the free software in a device which cannot execute modified versions.
One popular Digital Video recorder company used GPLed code to build their software and they made it availble through their website. But if somebody wants to modify it and run on their device, it required one cryptographic key which company is not providing. So this make it virtually impossible for anybody to modify their software.
GPL v3 was launched in 2007 in a view to close these kind of loopholes.