Changes between Initial Version and Version 1 of MutekhManifesto


Ignore:
Timestamp:
Feb 28, 2010, 6:34:05 PM (15 years ago)
Author:
becoulet
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MutekhManifesto

    v1 v1  
     1= Manifesto =
     2
     3Written by Alexandre Becoulet, Joël Porquet and Nicolas Pouillon.
     4
     5== What is MutekH? ==
     6
     7MutekH is the kernel part of an Operating System. Its major
     8characteristics are portability and modularity, which are both
     9necessary for handling multiprocessor platforms with processor
     10heterogeneity in a native manner.
     11
     12MutekH is first and foremost a research project: it must
     13remain a tool for experimentation. Nowadays, thinking
     14it is possible to replace kernels such as Linux would be crazy as its development
     15costs are estimated at
     16[http://www.dwheeler.com/essays/linux-kernel-cost.html several hundreds millions dollars].
     17Even though, this is not completely true for embedded systems yet.
     18
     19Whether MutekH should become something other than a research project is not
     20the point. For now, it is a research project
     21because people use it this way. But as we make efforts to
     22maintain a high quality code, documentation and website, the choice is
     23no longer ours. The situation can change tomorrow, or never.
     24This is actually a matter of users rather than design. Besides, it
     25is actually possible MutekH is used somewhere else without our
     26knowledge.
     27
     28Its exo-kernel architecture was first suggested by Frédéric Pétrot,
     29early in the development process. It was chosen because it was
     30well-adapted to the modularity requirement and because it remains an
     31interesting research field.
     32
     33Several PhD students soon started using MutekH for their own
     34research works. MutekH definitely doesn't belong to the sole original author,
     35thanks to the number of contributions others integrated.
     36Lot of additional work has also been achieved by the means of internships.
     37This has increased the number of services offered by the kernel, opening new usage
     38perspectives and facilitating various aspects of development.
     39
     40== Why yet a new kernel project? ==
     41
     42MutekH development was started as an attempt to write the first kernel
     43capable of handling processors heterogeneity in shared memory platforms.
     44This means MutekH should run on multiprocessor platforms composed of different
     45processors types, with possibly different instruction sets, and still share all
     46global variables and in memory data, allowing to run classical multi-threaded
     47applications without relying on a specific API.
     48
     49Heterogeneity constraints implied a lot of attention to the development of
     50the hardware abstraction layer (HAL). MutekH was first developed to end up
     51being a tiny project, that's why it appeared it was a better approach
     52to write a new HAL from scratch to handle heterogeneity with extreme portability constraints.
     53
     54Unexpectedly, MutekH has been adopted by others, as explained above, for
     55various research projects, not related to processor heterogeneity. That is why the project
     56really started to grow.
     57
     58== Why is MutekH well-suited for research? ==
     59
     60Large projects are sometimes too complex to be used as experimentation playgrounds.
     61As a researcher, you generally want to quickly setup new modules and features
     62on a preexisting base project and focus on your research goal. This base is typically
     63provided by modular projects such as MutekH because you can choose interesting
     64modules and extend them with new ones, to get the minimal suited set of features
     65to perform experiments. The integration effort in large and widespread projects
     66can then be considered later when the experiment cycle is over and results are conclusive.
     67
     68We believe this approach is well suited when applied to research and kernel concepts.
     69The older OSKit project followed the same idea and actually had a great success.
     70In opposition, many have tried to compete with existing kernels, and have only ended
     71up adding their attempt to the endless "Yet Another..." list.
     72
     73Furthermore, the Lip6-SoC laboratory where MutekH has originated is quite familiar
     74with development of research tools. The [http://www-asim.lip6.fr/recherche/alliance/ Alliance CAO suite]
     75and [http://www-asim.lip6.fr/recherche/disydent/ Disydent project] were good examples
     76of such free software tools.
     77More recently the development of [http://www.soclib.fr SoCLib], a hardware simulator
     78and components library, was initiated in an attempt to provide a modular framework for
     79building multiprocessor System-on-Chip virtual prototypes. The modular design is the
     80key point of the SoCLib project as it enables researchers to build their own platforms by
     81picking needed hardware component models. MutekH aims at genericity and modularity
     82with the exact same goals, but applied to kernels design.
     83
     84== Is MutekH a pedagogic tool? ==
     85
     86MutekH is not a kernel for teaching beginners.
     87
     88== Should MutekH specialize? ==
     89
     90No. MutekH should not specialize in a particular field, for several reasons:
     91
     92 * We are fortunate enough to have developed a kernel with a
     93   very modular and configurable design. This is partially a side-effect of the
     94   mandatory portability needed for heterogeneity but
     95   it is also due to the great diversity of other initial developers'
     96   research work.
     97
     98 * We need to keep this broad-spectrum experimentation platform
     99   aspect. This way it can be of interest to most people as it has
     100   been the case until now. When you need a kernel to perform research, you
     101   generally try avoid loosing time reinventing the wheel and want to reuse
     102   existing facilities, such as a buildsystem, drivers for peripheral
     103   devices, libc, services, etc. It is likely that these key elements
     104   have already been tested, debugged and validated by others, or even
     105   simply imported from other well-tried projects.
     106
     107 * In a research context, the versatility, genericity and collaborative aspect of MutekH
     108   guarantees that you are working in realistic conditions.
     109   Otherwise, you could end up solving problems in conditions unlikely to arise in the real world
     110   or with a demonstrator only usable for a specific purpose.
     111
     112 * A system intended for research should above all show interest in
     113   the generic programming issue. This opens numerous research
     114   perspectives in terms of kernel architecture or software design patterns,
     115   even though it is not the main topic in our lab. The
     116   exo-kernel architecture is a real goldmine in this prospect and yet
     117   remains not fully investigated.
     118
     119Other kernels such as Linux or NetBSD are able, by taking care of the
     120software modeling, to run on very various systems, from Set-top boxes
     121without any MMU to Cray, equipped with 224556 processors and 62TiB
     122memory. Though, this achievement is reached with the same source code, an
     123huge list of features and without any trade-off on
     124performance. De facto, it has never even been considered to rewrite
     125kernel projects from scratch just to solve new issues that arise with
     126hardware evolution.
     127
     128Therefore, it is definitely realistic to achieve the exact same
     129performance with our small kernel.
     130
     131== What is the development process? ==
     132
     133Lots of various problems come up. Basically,
     134algorithms to solve them are implemented accordingly to the complexity
     135and specificity of the underlying hardware.
     136
     137For a kernel such as
     138MutekH which aims at covering a broad-spectrum of platforms, we need to act this way:
     139
     140 * Use a source code configuration tool that manages conflicts and
     141   dependencies efficiently.
     142
     143 * Team up, and consider issues and constraints of all developers to
     144   converge on the most suitable API which thus will guarantee the best
     145   abstraction. MutekH would certainly not be as it is now, if it has
     146   been a one man project with an inevitable narrower vision.
     147
     148 * For the parts which deal with the hardware abstraction layer, make sure solutions are
     149   portable for every different architecture we have at our disposal. That is why we
     150   insisted right at the beginning of the project to target x86 CISC as well as RISC processors.
     151
     152 * Rely on advanced software engineering and modeling to implement all
     153   these abstractions without penalizing performance: inlining,
     154   conditional compilation, object oriented approach with function
     155   pointers, preprocessor meta-programming, etc.
     156
     157 * Iterate several times before finding the best solution, as needed.
     158   It is unreasonable to believe one can solve an issue definitively and
     159   freeze an abstraction API. Indeed, Linux kernel hackers
     160   [http://lxr.linux.no/linux/Documentation/stable_api_nonsense.txt explain it clearly].
     161
     162== How does MutekH compete with other embedded OSes? ==
     163
     164There are certainly many other comparisons that could be done, and many
     165valuable kernel projects out there, but here are a few interesting facts:
     166
     167 * MutekH is a free project, fundamental for public research, contrary
     168   to !VxWorks or QNX.
     169
     170 * MutekH provides native and classical support for shared memory multi-processor
     171   platforms, in opposition to embedded kernels like RTEMS or FreeRTOS.
     172
     173 * MutekH has a native support for processors heterogeneity. This is an
     174   '''exclusive''' feature.
     175
     176== How does MutekH compete with other monolithic UNIX-kernels? ==
     177
     178It probably doesn't compete and is quite different:
     179
     180 * MutekH can run applications in kernel mode, without any
     181   protection or syscall API: neither Linux, nor uCLinux, nor *BSD are designed
     182   this way.
     183
     184 * Exo-kernel approach enables implementation of syscall API via optional
     185   "libOS", for example for Unix/Posix. Others can be considered and implemented,
     186   such as L4 for instance.
     187
     188 * Exo-kernel approach even allows to co-host kernel applications with
     189   user applications.
     190
     191 * MutekH is still a rather small kernel and is not intended to be used
     192   on a workstation. This allows newcomers to get ready quickly,
     193   and researchers to quickly validate
     194   experimental concepts. This may not be the case for typical big kernels depending on research topic.
     195   Even the original author of Linux kernel considers now, that his
     196   project [http://news.cnet.com/8301-13505_3-10358024-16.html is getting bloated].
     197
     198== Who can get involved in MutekH? ==
     199
     200"Qui m'aime me suive !" (Let he who loves me follow me)
     201
     202Anyone with sufficient technical skills in System & C programming,
     203who likes collaborative work, is most welcome.
     204
     205== Where does original author choices come from? ==
     206
     207My choice are certainly influenced by my experience in multiple areas.
     208Of course, I won't try to write my resume here but I'll still try to explain where
     209my ideas come from:
     210
     211 * In the context of collaborative and open-source software
     212   development, MutekH is not my first shot. I've authored several other
     213   open source projects which sometimes still draw more external
     214   contributors and users than MutekH. I know which causes produce which
     215   effects in this kind of project management, because I experimented
     216   myself and I also follow other projects' hazards.
     217
     218 * In the specific frame of kernel development, this is not my first
     219   shot either. In the past, I already implemented a OS for x86 which was
     220   approximately the same size as MutekH's, wrote a few drivers and hacks for
     221   Linux, wrote several significant patches for OpenBSD (nothing
     222   published), and recently, I ported few other OSes such as RTEMS and eCos on the
     223   SoCLib hardware simulator. All those achievements allowed me to experience kernel designs
     224   more closely and thus to understand common criticisms and praises.
     225
     226 * On a technical point of view, I pay close attention to every
     227   advanced programming techniques which empower abstraction, extreme
     228   factorization, generic programming and code reuse. I did not invent
     229   anything in this area but I'm just trying to apply all these
     230   rules which are described by software engineering research topics, but are
     231   unfortunately way too much ignored by most developers. I have -- and will always
     232   prefer to -- spent the same time writing generic and compact code rather
     233   than writing several times the same code with small variations. In the
     234   same way, I would rather rewrite a code several times for it to be
     235   finally generic than modify it each time I need a variant. It's the
     236   insurance of settling problems on the long run, despite leaving
     237   beginners on the side. The source code must come out crystal-clear for
     238   any qualified developer.
     239
     240 * More generally and to insure the generic behavior of implemented
     241   solutions, core developers and I take time to query others' thoughts
     242   and advices. We always try to give the maximum latitude to change proposals,
     243   even significant ones.