comp.lang.ada
 help / color / mirror / Atom feed
* Building a new OS using Ada
@ 2009-02-05  7:10 Cedric.Lannock
  2009-02-05  7:19 ` Ludovic Brenta
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Cedric.Lannock @ 2009-02-05  7:10 UTC (permalink / raw)


Hi all,

we had a discussion on building a new OS based on Minix3 quite a while
ago. I am still thinking about it.

When I made the suggestions to develop a new Ada OS based on Minix 3 I
had a couple of aims in mind. First of all I wanted to learn how Minix
3 works and how to build an operating system. Furthermore I wanted to
learn the Ada programming language in full detail. But when I am doing
this it should have an interesting outcome. My thought was, to build
an operating system that can work on any platform. This was the reason
why I suggested Minix 3 because the kernel is small enough for porting
it to many different devices. In the end it could be one for all.

The discussion about this project raised a lot of new aspects and I
was thinking about it quite a while. I try to get my thoughts clear
and describe a little bit more where I think such a project could lead
to.

The first thing I will do is to describe the latest developements in
computer science, give a description of a vision of a new OS, give a
short and of course incomplete overview of existing OS that could be
used a starting point.

So let me describe the latest developments in computer science from my
perspective. There are four main aspects I see currently:

1. More diverse equipment used to access the internet, especially
mobile devices.
2. Using a browser as the main platform for new applications.
3. Distributed computing.
4. Parellelism within a machine and between machines.

Currently there are a lot of new devices entering the market, e.g.
nettops, mobile phones, PDA's, etc. A lot of applications are build
around the browsers. These applications are build to highly
interoperate with each other. The applications on the machines work
strongly together and are highly work-sharing (division of labour). In
addition to this the work load is processed by two or more processors
in parallel and also on two or more machines in parallel.

My vision of a new OS would be to have a high reliable OS that can
work on any machine. Therefore a micro kernel architecture is
favourable. Because it is small, it can easily transferred to new
devices and because it is a micro kernel it is a good base for
reliablity.

Nowadays the internet is still regarded as computers which are
connected through the net to each other. But what about thinking it
vice versa? What about thinking of the internet as one big organism
where the cells of this organism are the devices comprising it. As in
a real organism there are different cells all with there own special
purpose but nethertheless belonging to one single organism.

We have a lot of examples for the macro organisms like Dorylus (driver
ant: http://en.wikipedia.org/wiki/Driver_ant,
http://www.amazon.com/Ants-Bert-H%C3%B6lldobler/dp/0674040759). Each
single individual has only a small brain with a very simple program
but hooking them together by exchanging pheromones when touching they
can make complex decision within their swarm. We could make it similar
when developing a new OS.

If we have a micro kernel OS for any machine the drivers for the
hardware would be important. If the drivers are no longer included in
the kernel then they can be loaded later. We could establish a service
where the kernel determines the hardware it is running on and then it
could query a server – like a domain name server – to get to know
where the appropriete driver could be found. Each machine with the
same hardware and driver available could be the server for another
machine which lacks this special driver. This way nobody would need to
worry about its device drivers for his/her hardware as long as a
driver is available somewhere on the net.

Having one OS for all machines it would be possible to distribute
tasks over all machines. As in the thinking of cells of an organism
each cell would contribute to the complete system and some organs and
in the end the complete organism would take the benefit for that work.

When it comes to the functions of the OS we could build small
components which could be connected in many different ways to each
other comprising solutions. These little components could be the genes
of the OS as they are to the cells of an organism. I think the Unix-
like OS have shown this concept at all when implementing a piping
mechanism. Maybe the new OS could enhance it by being able to take
more complex messages instead of simple streams. These little
functions could be like Cytosin, Guanin, Thymin and Adenin. Maybe we
need a little bit more than that but we could think about a functions
which operate the same way. The can only be interconnected in a
special way but then forming always something new. In this sense it is
a little bit like LEGO. There a certain amount of bricks which can be
connected only in special ways. But the things build by them could be
numerous.

Because a lot of applications are build into browsers the new OS could
offer a good browser technology making it easy to developers to build
applications for the new OS because they could take to already
available software directly to the new platform.

Consequently thinking these ideas further could lead to a new OS which
might be better than the one's we already have.

When I read all the articles to the discussion mentioned above I was
looking for other places to start. I searched the web and came across
a lot of other micro kernel OS, like GNU Hurd,QNX, VxWorks, FreerRTOS
or eCos. As mentioned by some listers we could take the best of all of
these and use it as a basis for our own new OS. It could be favourable
to examine these and decide which one to start with and what features
of the other OSes to integrate.

To start with an existing micro kernel OS and reworking it could be a
sort of an evolutionary process. In the end we could have a mutated
Minix 3 or whatever OS was the starting point.

Now I would like to switch my writing style to get back to the
discussion we had before concerning some issues and concerns.

--- Why do you want to reinvent the wheel by developing another POSIX
OS? I would probable include a POSIX API in the feature list. ---
I think POSIX is a widespread standard within OSes and might be
helpful to port other applications to the new OS.

--- GNAT was not designed to build stand-alone bootable code. How to
build it on different devices? ---
As far as I understood the gcc compiler it should be able to build Ada
programs also. As gcc runs on a lot of machines it might help to build
Ada programs for a lot of platforms.


--- What's wrong with other Oses like GNU, Microsoft or Apple? ---
Everything is alright with these. I am thinking of something new. A
tool where I can get to know modern technology and have a thing is
interesting enough to work on for a while.

--- Most people use GRUB boot loader which is written in C. That kind
defects the concept of 100% Ada OS. ---
If there are components which will support the overall goals of the
project it is IMHO not necessary to do it without it.

--- Do you want to target embedded systems? ---
Yes, of course. As new devices appear on the market all are hooked to
the internet. So the new OS should be able to run on them.

Next steps could be:

1. Discuss the vision of a new OS
2. Agree upon target and goals
3. Evaluate existing OS (technology and licnse models)
4. Decide on starting point
5. Develop a feature list and decide on it

What do you think?

Best regards

Cedric Lannock


PS. Maybe we could discuss it Sunday on FOSDEM. Will anybody be there?

PSS. Due to a lot of spam I had to shut down the mentioned account.



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2009-02-12  9:50 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-05  7:10 Building a new OS using Ada Cedric.Lannock
2009-02-05  7:19 ` Ludovic Brenta
2009-02-05 10:17   ` xavier grave
2009-02-05 14:53     ` Ludovic Brenta
2009-02-05 15:55   ` andrew
2009-02-05 16:17     ` FOSDEM (Was: Building a new OS using Ada) Jacob Sparre Andersen
2009-02-05 16:17     ` Building a new OS using Ada Georg Bauhaus
2009-02-08 12:39 ` Ivan Levashew
2009-02-12  5:50   ` Cedric Lannock
2009-02-12  9:50     ` Hibou57 (Yannick Duchêne)
2009-02-11 16:13 ` Hibou57 (Yannick Duchêne)
2009-02-12  0:16   ` anon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox