Graph of the components and their dependencies. Implementation will start at the bottom and move upwards.
This commit is contained in:
parent
0850ab769f
commit
0c346043ff
289
deps.sh
Executable file
289
deps.sh
Executable file
|
@ -0,0 +1,289 @@
|
|||
#!/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)
|
Loading…
Reference in New Issue
Block a user