290 lines
15 KiB
Bash
Executable File
290 lines
15 KiB
Bash
Executable File
#!/bin/sh
|
|
# align on "->" and "[" keyboard macro:
|
|
# (fset 'indent->\[ [C-home ?\C-s ?. ?d ?i ?g ?r ?a ?p ?h ?\C-m home ?\C- ?\C-s ?. ?\} ?\C-m ?\M-x ?a ?l ?i ?g ?n ?- ?r ?e ?g ?e ?x ?p ?\C-m ?- ?> ?\C-m C-home ?\C-m ?\C-? ?\C-s ?. ?d ?i ?g ?r ?a ?p ?h ?\C-m home ?\C- ?\C-s ?. ?\} ?\C-m ?\M-x ?a ?l ?i ?g ?n ?- ?r ?e ?g ?e ?x ?p ?\C-m ?\[ ?\[ ?\] ?\C-m ?\C-m ?\C-?])
|
|
|
|
(sed -e '/^\./!s/^\( *\)\([^ "][^ ]*\)/\1"\2"/' \
|
|
|sed -e '/^\./!s/^\( *\([^-]\|-[^>]\)\+ *-> *\)\([^ "][^ ]*\)/\1"\3"/' \
|
|
|sed -e '/^\./!s/3rdpartybin/shape=box/' \
|
|
|sed -e '/^\./!s/3rdpartyplatform/shape=box/' \
|
|
|sed -e '/^\./!s/bdep/style=dashed/' \
|
|
|sed -e '/^\./!s/rdep/style=solid/' \
|
|
|sed -e '/^\./!s/\([[].*\)mostly-solved/\1fillcolor=yellow,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)unsolved+problem/\1fillcolor=red,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)many-to-do-ok/\1fillcolor=azure,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)many-to-do/\1fillcolor=deepskyblue,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)unsolved/\1fillcolor=orange,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)solved/\1fillcolor=darkolivegreen1,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)implemented/\1fillcolor=green,style=filled/' \
|
|
|sed -e '/^\./!s/\([[].*\)currentwip/\1color=green,penwidth=5/' \
|
|
|sed -e '/^\./!s/\([[].*\)wip/\1color=green,penwidth=5,style="filled,dashed"/' \
|
|
|sed -e 's/^\./ /') <<'EOF'
|
|
.digraph g {
|
|
. compound=true
|
|
. subgraph cluster_legend {
|
|
. label=legend
|
|
. subgraph cluster_legend_deps {
|
|
. label="dependencies"
|
|
"third-party tool" [3rdpartybin]
|
|
component -> build-dep [bdep]
|
|
component -> run-time-dep [rdep]
|
|
. }
|
|
. subgraph cluster_legend_solved {
|
|
. label="solved (theoretically)"
|
|
.// subgraph cluster_legend_solved_ok {
|
|
.// style=invis label="";
|
|
implemented [implemented]
|
|
solved [solved]
|
|
many-to-do-ok [many-to-do-ok,label="many to implement\nsimpler workaround"]
|
|
.// }
|
|
.// subgraph cluster_legend_solved_problem {
|
|
.// style=invis label="";
|
|
"mostly solved" [mostly-solved]
|
|
unsolved [unsolved]
|
|
many-to-do [many-to-do, label="many to implement\n500-page standards\npoorly explained\npoorly indexed"]
|
|
"open problem?" [unsolved+problem]
|
|
.// }
|
|
. }
|
|
. subgraph cluster_legend_implem {
|
|
. label="implementation"
|
|
wip [wip,fillcolor=none]
|
|
"current wip" [currentwip]
|
|
. }
|
|
. }
|
|
|
|
. subgraph cluster_host_platform {
|
|
. label="host platform"
|
|
host-platform [3rdpartyplatform,label="host = one of …"]
|
|
sh [3rdpartyplatform]
|
|
x86-bootsector [3rdpartyplatform]
|
|
raspberry-pi [3rdpartyplatform]
|
|
windows-.exe [3rdpartyplatform]
|
|
html+js [3rdpartyplatform]
|
|
host-platform-more [3rdpartyplatform,label="…"]
|
|
. }
|
|
host-platform -> sh [rdep]
|
|
host-platform -> x86-bootsector [rdep]
|
|
host-platform -> raspberry-pi [rdep]
|
|
host-platform -> windows-.exe [rdep]
|
|
host-platform -> html+js [rdep]
|
|
host-platform -> host-platform-more [rdep]
|
|
|
|
. subgraph cluster_build_os {
|
|
. label="bootstrap build of the OS"
|
|
nano-scheme [solved,currentwip]
|
|
micro-scheme [solved]
|
|
reproducible-environment [solved]
|
|
chameleon [solved,wip]
|
|
build-system [mostly-solved]
|
|
bootstrappable [solved]
|
|
gcc [3rdpartybin]
|
|
sgdisk [3rdpartybin]
|
|
zip [3rdpartybin]
|
|
other-chameleon-tools [3rdpartybin,label="other tools"]
|
|
|
|
micro-scheme -> nano-scheme [rdep]
|
|
build-system -> micro-scheme [rdep]
|
|
Guix -> "Guix bootstrap" [bdep]
|
|
Nix -> Guix [bdep]
|
|
build-system -> bootstrappable [rdep]
|
|
build-system -> reproducible-environment [rdep]
|
|
chameleon -> build-system [rdep]
|
|
chameleon -> gcc [rdep]
|
|
chameleon -> sgdisk [rdep]
|
|
chameleon -> zip [rdep]
|
|
chameleon -> other-chameleon-tools [rdep]
|
|
proot [3rdpartybin]
|
|
run-in-emulator [solved,wip]
|
|
. subgraph cluster_tests {
|
|
. label="tests"
|
|
tests/portability [label=portability]
|
|
tests/gui [label=gui]
|
|
tests/bootstrappable-builds [label="build is\nbootstrappable"]
|
|
subimage-search [implemented]
|
|
tests/reproducible-builds [label="build is\nreproducible"]
|
|
. }
|
|
qemu [3rdpartybin]
|
|
. subgraph cluster_repro_env {
|
|
. label="reproducible build environment (software, hardware)"
|
|
reproducible-environment
|
|
Nix
|
|
proot
|
|
"POSIX system" [3rdpartyplatform]
|
|
. }
|
|
. }
|
|
. subgraph cluster_programming_language {
|
|
. label="programming language"
|
|
programming-language
|
|
typesystem [mostly-solved]
|
|
syntax [solved]
|
|
semantics [mostly-solved]
|
|
vm [unsolved]
|
|
IDE [solved]
|
|
refactoring [mostly-solved]
|
|
hyper-literate [solved]
|
|
"package management\n(deps & versions)" [unsolved+problem]
|
|
. }
|
|
. subgraph cluster_portble_platform {
|
|
. label="portable platform"
|
|
"portable execution stubs"
|
|
basic-drivers [solved]
|
|
"more drivers\n(udi,hypervised linux)" [many-to-do-ok]
|
|
. }
|
|
vm -> "portable execution stubs" [rdep]
|
|
"portable execution stubs" -> chameleon [bdep]
|
|
"portable execution stubs" [solved]
|
|
run-in-emulator
|
|
. subgraph cluster_gui {
|
|
. label="gui"
|
|
gui [mostly-solved]
|
|
constraint-solver [mostly-solved]
|
|
graph-layout [unsolved]
|
|
constraint-solver-contract [unsolved+problem]
|
|
relative-arbitrary-precision [mostly-solved]
|
|
zoomable [mostly-solved]
|
|
. }
|
|
. subgraph cluster_document_model {
|
|
. label="document model"
|
|
"general\nprinciples" [solved]
|
|
. subgraph cluster_viewers {
|
|
. label="viewers"
|
|
"rich text lens" [solved]
|
|
"list lens" [solved, label="column-list lens"]
|
|
"set lens" [solved]
|
|
"compound document lens" [solved]
|
|
. }
|
|
. subgraph cluster_tools {
|
|
. label="tools"
|
|
sort [solved]
|
|
filter [solved]
|
|
project [solved]
|
|
other-tools [mostly-solved,label="…"]
|
|
. }
|
|
. subgraph cluster_algorithms {
|
|
. label="algorithms"
|
|
other-algorithms [label="…",many-to-do]
|
|
"abstract datatypes" [solved]
|
|
union-find [solved]
|
|
"sat solver" [solved]
|
|
raytracing [solved]
|
|
sort-algo [label="sort",solved]
|
|
. }
|
|
. subgraph cluster_documents {
|
|
. label="data / document types"
|
|
transformation-of [solved]
|
|
styled-layout-of [solved]
|
|
printable-layout [unsolved]
|
|
compound-document [solved]
|
|
. subgraph cluster_simple_data {
|
|
. label="simple data"
|
|
"vectorial image" [unsolved]
|
|
"bitmap image" [solved]
|
|
set [solved]
|
|
list [solved,label="list / database"]
|
|
"rich text" [solved]
|
|
. }
|
|
. }
|
|
. subgraph cluster_data_sources {
|
|
. label="data sources"
|
|
. subgraph cluster_importers {
|
|
. label="importers"
|
|
"word" [many-to-do]
|
|
"excel" [many-to-do]
|
|
"PDF" [many-to-do]
|
|
"RTF" [many-to-do]
|
|
"PSD" [many-to-do]
|
|
"SVG" [many-to-do]
|
|
. }
|
|
. subgraph cluster_network {
|
|
. label="network and protocols"
|
|
"websites\n(webkit in sandbox)" [many-to-do-ok]
|
|
more-network-protocols [many-to-do, label="…"]
|
|
"NTP" [solved]
|
|
"REST APIs" [many-to-do]
|
|
. }
|
|
. }
|
|
. }
|
|
"REST APIs" -> compound-document [ltail=cluster_data_sources,lhead=cluster_documents]
|
|
compound-document -> styled-layout-of
|
|
compound-document -> transformation-of
|
|
compound-document -> list [lhead=cluster_simple_data]
|
|
styled-layout-of -> printable-layout
|
|
"list lens" -> compound-document [ltail=cluster_viewers,lhead=cluster_documents]
|
|
. /*
|
|
"list lens" -> list
|
|
"set lens" -> set
|
|
"compound document lens" -> "compound document"
|
|
"rich text lens" -> "rich text"
|
|
. */
|
|
"set lens" -> gui [rdep,ltail=cluster_viewers]
|
|
. /*
|
|
"set lens" -> gui
|
|
"compound document lens" -> gui
|
|
"rich text lens" -> gui
|
|
. */
|
|
"compound document lens" -> constraint-solver
|
|
"compound document lens" -> graph-layout
|
|
sort -> sort-algo [rdep,ltail=cluster_tools,lhead=cluster_algorithms]
|
|
other-algorithms -> "abstract datatypes" [rdep]
|
|
union-find -> "abstract datatypes" [rdep]
|
|
"sat solver" -> "abstract datatypes" [rdep]
|
|
raytracing -> "abstract datatypes" [rdep]
|
|
sort-algo -> "abstract datatypes" [rdep]
|
|
sort -> compound-document [rdep,ltail=cluster_tools,lhead=cluster_documents]
|
|
list -> typesystem [bdep,ltail=cluster_documents]
|
|
. /*
|
|
sort -> list
|
|
filter -> list
|
|
project -> list
|
|
. */
|
|
reproducible-environment -> Nix
|
|
reproducible-environment -> proot
|
|
reproducible-environment -> run-in-emulator
|
|
reproducible-environment -> "POSIX system"
|
|
tests/portability -> subimage-search [rdep]
|
|
tests/gui -> subimage-search [rdep]
|
|
tests/portability -> run-in-emulator [rdep]
|
|
|
|
nano-scheme -> sh [rdep]
|
|
gui -> basic-drivers [rdep]
|
|
Guix [3rdpartybin]
|
|
"Guix bootstrap" [3rdpartybin]
|
|
Nix [3rdpartybin]
|
|
basic-drivers -> host-platform [rdep]
|
|
gui -> programming-language [bdep]
|
|
programming-language -> typesystem [rdep]
|
|
programming-language -> vm [rdep]
|
|
run-in-emulator -> qemu [rdep]
|
|
subimage-search
|
|
tests/reproducible-builds
|
|
"portable execution stubs" -> "host-platform" [rdep]
|
|
|
|
|
|
SVG -> "REST APIs" [style=invis]
|
|
many-to-do-ok -> "current wip" [style=invis]
|
|
printable-layout -> "zoomable" [style=invis]
|
|
_sh [style=invis]
|
|
_sh -> "sh" [style=invis]
|
|
"current wip" -> "general\nprinciples" [style=invis]
|
|
"Guix bootstrap" -> _sh [style=invis]
|
|
styled-layout-of -> set [style=invis]
|
|
"general\nprinciples" -> "list lens" [style=invis]
|
|
.}
|
|
|
|
EOF
|
|
|
|
|
|
#dynalist → c'est une mind map (moche) avec des checkbox, dates et hashtags?
|
|
# mode lecture 1 focus, édition 1 focus, édition+référence: 2 focus, édition+référence+outils: 3 focus, édition+référence+calculs+style+outils: 5 focus
|
|
|
|
|
|
# DK encyclo vs. Android encyclopedias
|
|
# DK book on multimedia
|
|
# keyboard
|
|
# hw difficulties:
|
|
# * PCB layout: lots of interferences (see rowhammer…)
|
|
# * GPU is one of the most opaque components. In the Raspberry Pi it means that the boot process is partially opaque.
|
|
# * Stateless : a lot of components have flashable firmware nowadays
|
|
# * Opaque / undocumented HW
|
|
# * casing (high precision otherwise buttons get stuck or jiggle)
|
|
# * If you want to make your own hardware, probably best is to hire someone who did it for a small-scale project (e.g. EvilDragon who did the Pandora and Pyra)
|