diff --git a/deps.sh b/deps.sh new file mode 100755 index 0000000..b66fbac --- /dev/null +++ b/deps.sh @@ -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)