[RANT] do we know what we are doing and why?
Posted: Fri Sep 11, 2009 12:00 pm
Why do we do it?, Are we kernel developers or operating system developers? Or don't we know the answer to any of these?
I have been interested in operating system development for around three years. However progress in writing my own operating system has been slow due to exams, during the years 2007 to 2000 I did write what I consider to be a functional kernel, it can execute user programs in ring 3, can load modules, modules could very easily mount a new file system (there was an interface for this). Eventually the kernel reached a point of completion and I began writing drivers however I soon found this tedious -the fact of the matter is these days you need to implement USB and SATA - both pretty boring and complex specifications, so I began thinking that maybe I was only interested in operating system development because of the challenge, I must admit that the development of my kernel was challenging I had to program in a ways I never programmed before. When it got to the point where I had to begin developing drivers I soon found that I was not enjoying myself and that the logical thing for me to do would be to find a new hobby.
What I have realised since developing my kernel is that I can understand most of the LINUX kernel's source, so now I'm thinking of starting a new operating system project where I take a relatively recent LINUX kernel and build a new file system and GUI on top. I don't really know why i want to do this I guess it's because I have always wanted to develop a operating system however the stage that I've got to at the moment is very boring (in my opinion) so I am now going to work on a new aspect of operating system development: the user interface, I'm hoping that I will enjoy this.
What my experience so far has made me wonder is this: how many people who start operating system development actually know why they want to do it, I know that some believe they can out code Microsoft or GNU - I am not one of them, others code and OS or kernel for purely academic reasons (the L4 kernel is a prime example of this), others do it to the challenge. I am interested in your reasons for operating system or kernel development.
From looking around the project pages on this site I get the impression that not many make it to having a GUI, less make it to having a GUI with useful programs and I suspect that very few (if any) have a GUI, a network driver for a least one card along with user programs that make use of network access along with a functional USB driver (supporting at least flash memory sticks).
I do acknowledge that many developers here are only interested in text mode - however to be honest (and I mean no offence to anyone here) if I wanted an operating system with a GNU C compiler port, a NASM port and a bash port I could just use a LINUX distribution.
I wish that I had been around 18 years ago (no SATA, no USB) once one had a kernel you probably only had to write an IDE driver to support 99% of computers, probably only had to write one or two graphic card drivers etc.
All hobbyist activities evolve for example in 1976 Steve Wozniak built the Apple one personal computer - and by built I mean he created the address bus, the data bus, the memory controller, the teleprinter and the tape drive control circuitry. Nowadays there is no such thing as a computer hobby - you wouldn't dream of trying to create a motherboard for an Intel core two Duo in your shed. - the activity has moved on.
I am postulating that perhaps the same thing has happened to hobbyist operating system development i.e in 1991 Linus Torvalds was able (single handed) to write a kernel impressive enough (and with enough potential) to attract other developers to project - and we all know the rest of that story. At the moment (in 2009) no one person (or small groups of peoples) could possibly develop anything impressive enough to promote large scale interest in other developers.
If you were building a shed you would not consider ‘making’ the wooden planks yourself (by this I mean cutting down and processing trees) you would not consider building the lock or the hinges in fact you would probably buy the whole thing as a kit from someone else.
I am wondering if anyone else agrees with me that now the kernel should be considered a ‘block’ that is to say something you don't build yourself you take a existing kernel say the LINUX kernel or the BSD kernel and you alter it slightly and use it in your operating system – assuming you use the LINUX kernel your still free to write your own file system and drivers, your own kernel API, your own library and your own GUI, however you can use any LINUX kernel module that already exists meaning effectively your operating system can easily be adapted to use any hardware which LINUX supports.
I can see from other projects on this site that this philosophy already exists in the area of boot loaders most of the impressive operating systems developed by members of this site use GRUB as a boot loader (there are some exceptions) - I myself spent a month trying to write a boot loader however once I understood everything the boot loader had to do I was happy to use GRUB. - I think most of the people here see GRUB as a ‘block’ or black box.
Note I still believe that you should write a kernel if you're interested in how the low-level stuff works I just think it is ridiculous to use it underneath a serious attempt at an operating system.
To summarise:
Is the kernel aspect of hobbyist operating system development dead?
Should popular open source kernels be seen as starting points for hobbyist operating systems?
How many of you are interested in just kernel development?
Why do you do it - what is the attraction? - And yes I know this is answered in the wiki, however in my opinion it is not answer very well and I've never seen that page change significantly in three years.
I am very interested in your views - as I am trying to justify my decision to ditch two years worth of work on my kernel - thank you.
I have been interested in operating system development for around three years. However progress in writing my own operating system has been slow due to exams, during the years 2007 to 2000 I did write what I consider to be a functional kernel, it can execute user programs in ring 3, can load modules, modules could very easily mount a new file system (there was an interface for this). Eventually the kernel reached a point of completion and I began writing drivers however I soon found this tedious -the fact of the matter is these days you need to implement USB and SATA - both pretty boring and complex specifications, so I began thinking that maybe I was only interested in operating system development because of the challenge, I must admit that the development of my kernel was challenging I had to program in a ways I never programmed before. When it got to the point where I had to begin developing drivers I soon found that I was not enjoying myself and that the logical thing for me to do would be to find a new hobby.
What I have realised since developing my kernel is that I can understand most of the LINUX kernel's source, so now I'm thinking of starting a new operating system project where I take a relatively recent LINUX kernel and build a new file system and GUI on top. I don't really know why i want to do this I guess it's because I have always wanted to develop a operating system however the stage that I've got to at the moment is very boring (in my opinion) so I am now going to work on a new aspect of operating system development: the user interface, I'm hoping that I will enjoy this.
What my experience so far has made me wonder is this: how many people who start operating system development actually know why they want to do it, I know that some believe they can out code Microsoft or GNU - I am not one of them, others code and OS or kernel for purely academic reasons (the L4 kernel is a prime example of this), others do it to the challenge. I am interested in your reasons for operating system or kernel development.
From looking around the project pages on this site I get the impression that not many make it to having a GUI, less make it to having a GUI with useful programs and I suspect that very few (if any) have a GUI, a network driver for a least one card along with user programs that make use of network access along with a functional USB driver (supporting at least flash memory sticks).
I do acknowledge that many developers here are only interested in text mode - however to be honest (and I mean no offence to anyone here) if I wanted an operating system with a GNU C compiler port, a NASM port and a bash port I could just use a LINUX distribution.
I wish that I had been around 18 years ago (no SATA, no USB) once one had a kernel you probably only had to write an IDE driver to support 99% of computers, probably only had to write one or two graphic card drivers etc.
All hobbyist activities evolve for example in 1976 Steve Wozniak built the Apple one personal computer - and by built I mean he created the address bus, the data bus, the memory controller, the teleprinter and the tape drive control circuitry. Nowadays there is no such thing as a computer hobby - you wouldn't dream of trying to create a motherboard for an Intel core two Duo in your shed. - the activity has moved on.
I am postulating that perhaps the same thing has happened to hobbyist operating system development i.e in 1991 Linus Torvalds was able (single handed) to write a kernel impressive enough (and with enough potential) to attract other developers to project - and we all know the rest of that story. At the moment (in 2009) no one person (or small groups of peoples) could possibly develop anything impressive enough to promote large scale interest in other developers.
If you were building a shed you would not consider ‘making’ the wooden planks yourself (by this I mean cutting down and processing trees) you would not consider building the lock or the hinges in fact you would probably buy the whole thing as a kit from someone else.
I am wondering if anyone else agrees with me that now the kernel should be considered a ‘block’ that is to say something you don't build yourself you take a existing kernel say the LINUX kernel or the BSD kernel and you alter it slightly and use it in your operating system – assuming you use the LINUX kernel your still free to write your own file system and drivers, your own kernel API, your own library and your own GUI, however you can use any LINUX kernel module that already exists meaning effectively your operating system can easily be adapted to use any hardware which LINUX supports.
I can see from other projects on this site that this philosophy already exists in the area of boot loaders most of the impressive operating systems developed by members of this site use GRUB as a boot loader (there are some exceptions) - I myself spent a month trying to write a boot loader however once I understood everything the boot loader had to do I was happy to use GRUB. - I think most of the people here see GRUB as a ‘block’ or black box.
Note I still believe that you should write a kernel if you're interested in how the low-level stuff works I just think it is ridiculous to use it underneath a serious attempt at an operating system.
To summarise:
Is the kernel aspect of hobbyist operating system development dead?
Should popular open source kernels be seen as starting points for hobbyist operating systems?
How many of you are interested in just kernel development?
Why do you do it - what is the attraction? - And yes I know this is answered in the wiki, however in my opinion it is not answer very well and I've never seen that page change significantly in three years.
I am very interested in your views - as I am trying to justify my decision to ditch two years worth of work on my kernel - thank you.