Fix qsort
[monolithium.git] / README.md
1 <pre>
2 ********************************************************************************
3               __  ___                  ___ __  __    _
4              /  |/  /___  ____  ____  / (_) /_/ /_  (_)_  ______ ___
5             / /|_/ / __ \/ __ \/ __ \/ / / __/ __ \/ / / / / __ `__ \
6            / /  / / /_/ / / / / /_/ / / / /_/ / / / / /_/ / / / / / /
7           /_/  /_/\____/_/ /_/\____/_/_/\__/_/ /_/_/\__,_/_/ /_/ /_/
8
9 ********************************************************************************
10 </pre>
11
12 ### What is Monolithium? ###
13
14 Monolithium is a 32-bit operating system for x86 PCs. It is not a Unix-like
15 system, and shares almost nothing with the Unix architecture. Written
16 completely from scratch, it is completely incompatible with other operating
17 systems. Currently, only the Monolithium kernel is implemented. The other major
18 components, the "system library" and "system manager", are still missing.
19
20 Monolithium wasn't implemented according to any existing design, it was more or
21 less designed as it was implemented, so the current interface may not be
22 consistent. During this phase of its development, its kernel module interface
23 and application programming interface are not stable and subject to major
24 changes.
25
26 ### FREQUENTLY ASKED QUESTIONS ###
27
28 **1) Why write another OS from scratch?**
29
30 Most software development today is focused on assembling software from existing
31 "building blocks", using libraries and high-level programming languages, which
32 are designed to be complex and generic because they need to cover a lot of use
33 cases. Simplicity is a very useful trait that is often overlooked. Monolithium
34 is one of the few operating system projects with simplicity as its primary goal.
35
36 **2) Why is there no development history?**
37
38 I started this project in 2011, before I understood how VCS systems work and why
39 they're important. I made backups at regular intervals, but since I didn't use
40 git, there are no commits before the first release.
41
42 **3) Will the interface ever become stable?**
43
44 Having a stable interface, which will not change to the extent that later
45 versions break software running in userspace, is one of the end goals of
46 the project.
47
48 ### COMPILING ###
49
50 Run the "setup" script to download, configure, and locally install required
51 packages, then run "make". To speed things up, use the -j flag to compile with
52 more threads in parallel.
53
54 Prerequisites:
55
56 * A POSIX-compatible environment.
57 * An internet connection (to download required packages).