<div dir="ltr"><div>In a <a href="https://twitter.com/GenodeLabs/status/671941252162678784">2 Dec twitter conversation</a>, I was invited to elaborate here; so...</div><div><br></div><div>I wholeheartedly agree when the <a href="http://genode.org/documentation/genode-foundations-15-05.pdf">Genode book</a> says:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><b>Capability-based security</b> supposedly makes security easy to use by providing an<br>intuitive way to manage authority without the need for an all-encompassing and<br>complex global system policy.</blockquote><div><br></div><div>I don't understand why ignore this principle with the hello world code example:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace">#include <base/printf.h><br></font><font face="monospace, monospace">int main()<br></font><font face="monospace, monospace">{<br></font><font face="monospace, monospace">  Genode::printf("Hello world\n");<br></font><font face="monospace, monospace">  return 0;<br></font><font face="monospace, monospace">}</font></blockquote></div><div><br></div><div>Why appeal to ambient authority to print to the console? Why not pass a capability to main, as pony does with <a href="https://github.com/CausalityLtd/ponyc/blob/master/packages/builtin/env.pony">env</a>, <a href="http://lwn.net/Articles/482858/">capsicum at cap_enter()</a>, etc?</div><div><br></div><div>At lower levels of the architecture, genode has this structure; e.g. 3.5 component creation:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The environment is constructed by successively requesting the component’s RM, RAM, CPU, and PD sessions from its parent.</blockquote></div><div><br></div><div>Why not continue this structure in the base API?</div><div><br></div><div><br></div><div><br></div><div><br></div>-- <br><div class="gmail_signature">Dan Connolly<div><a href="http://www.madmode.com/" target="_blank">http://www.madmode.com/</a></div><div><br></div></div>
</div>