From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, TO_NO_BRKTS_PCNT autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,5f77b73c5df291a2,start X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,CP1252 Path: g2news2.google.com!postnews.google.com!r15g2000prh.googlegroups.com!not-for-mail From: "Cedric.Lannock" Newsgroups: comp.lang.ada Subject: Building a new OS using Ada Date: Wed, 4 Feb 2009 23:10:28 -0800 (PST) Organization: http://groups.google.com Message-ID: NNTP-Posting-Host: 93.129.97.160 Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1233817829 22656 127.0.0.1 (5 Feb 2009 07:10:29 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 5 Feb 2009 07:10:29 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: r15g2000prh.googlegroups.com; posting-host=93.129.97.160; posting-account=R80nsQoAAADNWKZhSnWyt-Rp7ZyxrQGD User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5,gzip(gfe),gzip(gfe) Xref: g2news2.google.com comp.lang.ada:4529 Date: 2009-02-04T23:10:28-08:00 List-Id: 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 =96 like a domain name server =96 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.