path: root/hurd/ng.mdwn
diff options
authorThomas Schwinge <>2007-09-04 15:01:35 +0200
committerThomas Schwinge <>2007-09-04 15:01:35 +0200
commitebf5adb8e9ef993d74fe61fd33c2062e7bcad1c2 (patch)
treea5063fe9d0f4c5087acb3e7bb6a007dbe86081ed /hurd/ng.mdwn
parentc37a846d135125df9d9be256e62c1e8763d42fc8 (diff)
Move `NextHurd' (and everything below) into `hurd/ng'.
Diffstat (limited to 'hurd/ng.mdwn')
1 files changed, 82 insertions, 0 deletions
diff --git a/hurd/ng.mdwn b/hurd/ng.mdwn
new file mode 100644
index 0000000..448214d
--- /dev/null
+++ b/hurd/ng.mdwn
@@ -0,0 +1,82 @@
+# <a name="Next_Hurd"> Next Hurd </a>
+There is an effort to create a completely new system design (for now called ngHurd, or Hurd-ng or HurdNG), which originated from the Hurd/L4 port.
+The original Hurd/L4, which was meant to be mostly a direct port of the existing Hurd design to a new microkernel, has been abandoned by it's main developers, because some technical issues with the L4 Pistachio kernel turned out to be very fundamental. While reeveluating the design (and upcoming new L4 variants), the developers picked up some new ideas, and decided that now they rather want to work on a completely different design, which combines some of the original Hurd ideas with concepts from Jonathan Shapiro's high security EROS and Coyotos systems.
+There has been numerous endless discussions on the l4-hurd mailing list about these new ideas. This page tries to sum up the major discussions.
+## <a name="Why_ngHurd"> Why ngHurd </a>
+This section explains the motivations behind the new design:
+* [[IssuesWithMach]]
+* [[IssuesWithL4Pistachio]]
+* [[LimitationsOfOriginalHurdDesign]]
+## <a name="Work_already_done"> Work already done </a>
+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.
+A [critique]( of the original Hurd is available.
+## <a name="Subjects"> Subjects </a>
+### <a name="Design_processus"> Design processus </a>
+* [[DesignGoals]]
+* [[RequirementsForUser]]
+* [[DesignPrinciples]]
+* [[Philosophy]]
+### <a name="Concepts"> Concepts </a>
+* [[CapabilityBasedMicrokernel]]
+* [[FirstClassReceiveBuffer]]
+* [[PowerBox]]
+* [[WhatIsACapability]]
+* [[WhatIsAConstructor]]
+* [[WhatIsASpacebank]]
+* [[TrivialConfinementVsConstructorVsFork]]
+* [[CopyVsRevocableCopyVsMap]]
+* [[SetuidVsConstructor]]
+* [[HurdishApplicationsForPersistence]]
+* [[WhatsInAGroup]]
+* [[ThePolycastInterface]]
+* [[PermissionBits]]
+* [[CancellationForwarding]]
+### <a name="Problems_to_solve"> Problems to solve </a>
+* [[HowMuchConfinementDoWeWant]]
+* [[SharedLibraries]]
+* [[PathMax]]
+### <a name="Implementation"> Implementation </a>
+* [[ChoiceOfMicrokernel]]
+* [[HurdInterafaces]]
+* [[PosixLayer]]
+* [[SystemStructure]]
+### <a name="Use_Cases"> Use Cases </a>
+_please move me somewhere better! [[SamMason]]_
+* [[UseCaseUserFileSystem]]
+* [[UseCasePrivateKeys]]
+### <a name="Organization"> Organization </a>
+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 consenus
+* if no choice has been clearly made, all valid positions are descrbied
+* withdrawed and invalid positions (prooved 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.
+-- [[Main/NowhereMan]] - 21 Apr 2006