Wednesday, November 18, 2009

The meaning of Hacking...

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'.

Monday, November 2, 2009

Android, is it a new OS or just a linux distro?

  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.