D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

Re: [LUG] What IS an operating system ?

 

On Thursday 20 January 2005 10:35 pm, Simon Waters wrote:
Tom Brough wrote:
| Then you need utilities (Ahh GNU)

No, Tom. This is a crucial difference:

GNU is bigger than Linux.

Not just in the obvious measure of lines of code, but in terms of PLATFORM 
support. You can't expect a kernel to work easily on other architectures, you 
CAN expect GNU software to:
1. compile a usable kernel on a different platform
2. compile a kernel for platform B whilst running on platform A
3. run on platform A and platform B
4. configure other software to run on either A or B.

*And all of this even if platform A or B isn't running a Linux kernel.*

That's key - GNU provides the tools to run free software beyond Linux.

Why do you think GnuPG runs on Windows? It doesn't require a Windows compiler; 
no byte-code interpreter or Virtual Machine is required. It uses standard 
Windows .dll files and compiles to a .exe as usual for that platform - all 
because of the GNU automake and autoconf tools that provide the environment.

On MacOSX, the GNU automake tools and gcc produce a native Mac binary. 

In the eternal struggle of which came first, chicken or egg (and Linux or 
GNU), I can exclusively reveal:
1. The egg came first. (It was laid by a reptile/dinosaur ancestor and the 
embryo in the egg was sufficiently different to it's parent to be classed as 
the first chicken).
2. The kernel came second. GNU came first - you have to have a compiler (and 
an editor) to write a kernel. Without a free software GNU environment, Linus 
wouldn't have had exclusive rights to give away the first kernel.
:-))

GNU will run without Linux - it does on MacOSX - Linux would probably not 
exist as we know it without GNU. No other project has such a claim.

You seem to have omitted things like libc, shells and binutils, which I
regard as somewhat closer to what I perceive as an operating system than
file utilities. Last I looked the libc project itself was huge, but no
one talks about it much.

Except those who are programming with it! libc is both my saviour and my 
nemesis, depending on whether I'm dealing with strings or dates respectively!

(Why can't we have ONE time type? WHY do we need time_t struct tm AND then 
complicate things further by using routines that take a pointer but return a 
reference when they need to be used in another function that needs that 
reference turned back into another pointer!!!) Aaaaaaaaaaaaaaaaagghh!

If Neil comes across as enthusiastic for GNU, consider his perspective,
he is working on a GNU project (gnucash), for a GNU environment (GNOME),
written in C, preprocessed and compiled by GNU C compiler suite,
configured for each platform it runs on (Macos X, BSD, Solaris, HP-UX,
AIX, any others?, oh and GNU/Linux) by GNU autoconf tools, and an OS
called "Debian GNU/Linux".

Absolutely.

He includes largely

(I do try to make that exclusively - off-hand I can't think of a single 
non-GNU header file in my own code.)

GNU include files, in his source, and links against 
an extensive range of libraries many (most?)

again, I would say it's 100% GNU. The probable exception is the Perl bindings.

of which are part of the 
GNU project. The restraints of writing portable code preclude him from
being directly involved in much "Linux" specific code (for this project)
unless it is part of the macro suite (usually written in m4 handled by
the GNU m4 processor).

I have had to use some new m4 macros, but these aren't kernel stuff, they are 
package discovery / configuration tools that handle libraries installed in 
non-privileged folders. i.e. simple shell stuff handled via bash type logic.

I haven't got a single bit of code that relies on Linux - not a single line, 
anywhere. All my code would compile (and does) under any GNU compatible 
kernel. After all, the project WILL run on MacOSX and other non-Linux 
platforms. I don't take any credit for that, I joined three running projects 
that independently configured automake etc. to allow their software to 
compile on other GNU platforms.

As Simon describes, I don't write Linux software, I write GNU software.

It is fairly challenging these days to separate out GNU and Linux from
an end user, perspective, as a lot of system software has been written,
or re-written, primarily for the GNU/Linux combination.

As Debian shows, the power of GNU is that nearly ALL that stuff can be 
recompiled for non-Linux kernels WITHOUT changes to the source code itself. 
All it needs is a few tweaks to the Makefile.am files.

Outside the world of device drivers, /dev/, /proc/ and /boot there is precious 
little on your Linux systems that even *requires* a Linux kernel.

This is why it is so frustrating to find people getting the wrong side of the 
story and thinking that I'm being petty or generating confusion. The vast 
majority of your system is GNU, NOT Linux.

On the majority of systems, if I came along and took Linux out of your machine 
and slapped in some future version of Hurd or some other GNU-compatible 
kernel, you would not even know. A single reboot and Linux would be replaced.

Don't get me wrong, I like the Linux kernel and there is no direct equivalent 
as yet - but the kernel, in many ways, is just another application that uses 
GNU, the *system* is GNU.

from GNU su, and such like, and as a result are under the GNU GPL (which
is the really clever invention).

Absolutely. We would not be here today without licences like the GPL.

Those who make a fuss about the use of the 'G', consider if you would be still 
using Windows if there was no GPL.

-- 

Neil Williams
=============
http://www.dcglug.org.uk/
http://www.nosoftwarepatents.com/
http://sourceforge.net/projects/isbnsearch/
http://www.williamsleesmill.me.uk/
http://www.biglumber.com/x/web?qs=0x8801094A28BCB3E3

Attachment: pgp00055.pgp
Description: PGP signature