summaryrefslogtreecommitdiff
path: root/hurd/ng.mdwn
blob: d9287c3daf7d92c1332e0462c26a335c3afe8bef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Hurd-ng is an effort to build a new operating system that preserves
the main design goals of the Hurd while fixing some of the Hurd's
shortcomings.  There is not yet an official roadmap or a concrete
specification; indeed, much of the work is research oriented.

These pages try to summarize the major discussions and ideas.


# Why ngHurd

This section explains the motivations behind the new design:

  * [[Issues_with_L4_Pistachio]]
  * [[Limitations_of_the_original_Hurd_design]]

  * History of the [[history/port_to_another_microkernel]]


# Work already done

A [[critique]] of the original Hurd is available.

A [[position_paper]] by Marcus Brinkmann and Neal H. Walfield can be found.

A draft specification of the Hurd-NG interfaces has been, but is no longer,
available.


# Subjects

## Design processus

* [[Design Goals|DesignGoals]]
* [[Requirements For User|RequirementsForUser]]
* [[Design Principles|DesignPrinciples]]
* [[Philosophy]]


## Concepts

* [[Security]]
* [[Capability Based Microkernel|CapabilityBasedMicrokernel]]
* [[First-class Receive Buffer|FirstClassReceiveBuffer]]
* [[PowerBox]]
* [[What is a Capability|WhatIsACapability]]
* [[What is a Constructor|WhatIsAConstructor]]
* [[What is a Spacebank|WhatIsASpacebank]]
* [[Trivial Confinement vs. Constructor vs. Fork|TrivialConfinementVsConstructorVsFork]]
* [[Copy vs. Revocable Copy vs. Map|CopyVsRevocableCopyVsMap]]
* [[Setuid vs. Constructor|SetuidVsConstructor]]
* [[Hurdish Applications for Persistence|HurdishApplicationsForPersistence]]
* [[What's in a Group|WhatsInAGroup]]
* [[The Polycast Interface|ThePolycastInterface]]
* [[Permission Bits|PermissionBits]]
* [[Cancellation Forwarding|CancellationForwarding]]


## Problems to solve

* [[How Much Confinement Do We Want|HowMuchConfinementDoWeWant]]
* [[Shared Libraries|SharedLibraries]]
* [[Path Max|PathMax]]


## Implementation

* [[Hurd Interafaces|HurdInterafaces]]
* [[Posix Layer|PosixLayer]]
* [[System Structure|SystemStructure]]


## Use Cases

_please move me somewhere better! [[SamMason]]_

* [[Use Case User Filesystem|UseCaseUserFileSystem]]
* [[Use Case Private Keys|UseCasePrivateKeys]]


## Organization

Summaries should obey the following structure:

* if there is a consensus, it is clearly described
* if controversial points remain, there are also described after the consensus
* if no choice has been clearly made, all valid positions are described
* withdrawn and invalid positions (proved wrong, unrealistic, contradictory
  to some design principle, etc.) should be described only very briefly, and
  developed in a separate article

Each time a point seems to be overly long with respect to the rest of the
article, it should be summarized in place and developed in a separate article.