-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
110 lines (110 loc) · 4.32 KB
/
index.html
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!DOCTYPE html><html lang="en"><head><title>Shoctode</title><link rel="stylesheet" href="style.css"><meta charset="utf-8"></head><body><div class="side"></div><div class="cnt"><h1 id="shoctode">Shoctode</h1>
<p><em>A graphical shell for the current millenium.</em>
Currently conceptual.</p>
<p>Shoctode is a flow based programming interface,
for live programming.
It provides a real time preview of all data and graphical
tools to build custom GUIs.
Shoctode is based on the functional programming language
<strong>to be decidet</strong>.
The objective of Shoctode is to provide a
<em>current-millenium</em> replacement for the CLI, while sticking
to the core concepts of UNIX: <em>Do one thing well</em>.
In spite of the UNIX shell it's based on the functional
programming language <strong>to be decidet</strong>, which is used for
all the libraries and the code generation.</p>
<h2 id="intro">Intro</h2>
<p>At the moment there are basically two ways to interact with
a computer: Text for the programmers and unix veterans and
GUI for the mere user. Both approaches have huge advantages:
With a GUI huge amounts of highly complex data can be
displayed while the text interface provides the power of a
programming language.</p>
<p>Shoctode aims at merging those concepts int a single,
programmable user interface.</p>
<h2 id="lang">Lang</h2>
<p>Shoctode requires a programming language (duh) and runtime,
which should provide the following features:</p>
<ul>
<li>Interpreted execution</li>
<li>Native compiling</li>
<li>AST export with reflection</li>
<li>AST back conversion</li>
<li>Strong type system</li>
<li>Functional programming</li>
</ul>
<p>The candidates are currently:</p>
<ul>
<li>Erlang</li>
<li>OCaml</li>
<li>Haskell</li>
</ul>
<h2 id="the-flow">The Flow</h2>
<p>Shoctode is written (and translates to) a functional
language. Most of the functional concepts will be
preserved (functions are just types, no side effects).
The main difference will be, that the flow based style
supports multiple return value, these can however be easily
implemented by using tuples/structures as return value.</p>
<h2 id="terminology">Terminology</h2>
<p>The following concepts of data flow programming shall map
directly to their functional pendants:</p>
<ul>
<li><em>Node -> Function</em></li>
<li><em>Pipe -> Data</em>, connections between nodes</li>
<li><em>Input -> Arguments</em></li>
<li><em>Output -> Return value</em>, expressed as a structure/tuple
if more than one</li>
</ul>
<h2 id="sec">Sec</h2>
<p>Each application shall be run by default in a no-access-jail.
This jail restricts access to (at least) the following resources:</p>
<ul>
<li>Syscalls in general</li>
<li>FS</li>
<li>Network</li>
<li>Processes</li>
<li>Sockets</li>
<li>Memory</li>
<li>CPU Time</li>
<li>Process creation</li>
<li>Windows/Graphics</li>
<li>Devices</li>
<li>Input</li>
</ul>
<p>The jail shall possess the ability to:</p>
<ul>
<li>Deny access</li>
<li>Modify access/output (e.g. <code>$ ls /</code> gives
'this_is_virtual.txt')</li>
<li>Allow access</li>
</ul>
<p>Default restriction for all IO, and process management is to deny access.
Default for Memory/CPU Time is to allow a certain load.
It is always possible to create a custom environment ("modify
access") without restriction.</p>
<p>Jailing is done through access tokens, which can be modified
to drop certain privileges.</p>
<p>Elevating access shall only be possible by using
cryptographic keys to sign access tokens.
These tokens shall also be the <em>root</em> of all permissions.</p>
<p>Where possible real cryptographic protection (e.g. Hard
Drive Encryption) shall be used instead of access control
(e.g. Full Disk Encryption instead of FS Permissions).</p>
<h2 id="think-about">Think about</h2>
<p>Put stuff here we need to integrate into the sections above.</p>
<ul>
<li>I don't have anything right now,</li>
<li>but this is a list and a topic could look like</li>
<li>Joy and Play</li>
</ul>
<h2 id="random-links">Random Links</h2>
<ul>
<li><a href="http://hackage.haskell.org/package/pipes">http://hackage.haskell.org/package/pipes</a></li>
</ul>
<h2 id="contribute">Contribute</h2>
<p>You are very welcome to join use creating Shoctode and in
writing the abstract.
You can find the abstract and the code on GitHub:
<a href="https://github.com/Shoctode/shoctode">https://github.com/Shoctode/shoctode</a></p>
</div></body></html>