Thicket data repository for the EEG
at main 23 kB view raw
1{ 2 "id": "https://ryan.freumh.org/2024-09-02.html", 3 "title": "2 Sep 2024", 4 "link": "https://ryan.freumh.org/2024-09-02.html", 5 "updated": "2024-09-02T00:00:00", 6 "published": "2024-09-02T00:00:00", 7 "summary": "<div>\n <span> Previous: <a href=\"2024-08-26.html\">26 Aug 2024</a> </span>\n <span> Next: <a href=\"2024-09-09.html\"> 9 Sep 2024</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span>Tue</span></p>\n<ol>\n<li><p><span>Try dumping the SAT graph to see how big we\nmake it</span></p></li>\n<li><p><span>hmm, magic trace traces are\nempty</span></p></li>\n<li><p><span>Spent some trying to understand the SAT\nsolving</span></p></li>\n</ol></li>\n<li><p><span>Wed</span></p>\n<pre><code>sat: TRYING: not(cargo-quote.1.0.32)\nsat: enqueue: not(cargo-quote.1.0.32) (considering)\nsat: TRYING: not(cargo-quote.1.0.33)\nsat: enqueue: not(cargo-quote.1.0.33) (considering)\nsat: TRYING: not(cargo-quote.1.0.34)\nsat: enqueue: not(cargo-quote.1.0.34) (considering)\nsat: TRYING: not(cargo-quote.1.0.35)\nsat: enqueue: not(cargo-quote.1.0.35) (considering)\nsat: TRYING: not(cargo-quote.1.0.36)\nsat: enqueue: not(cargo-quote.1.0.36) (considering)\nsat: TRYING: not(cargo-quote.1.0.37)\nsat: enqueue: not(cargo-quote.1.0.37) (considering)\nsat: TRYING: not()\nsat: enqueue: not() (considering)\nsat: enqueue: not(cargo-wasm-bindgen.0.2.66) (&lt;some: not(cargo-wasm-bindgen.0.2.66), , cargo-wasm-bindgen-macro.0.2.66&gt;)\nsat: enqueue: not(cargo-wasm-bindgen.0.2.66) (&lt;some: not(cargo-wasm-bindgen.0.2.66), cargo-wasm-bindgen.0.2.66&gt;)\nsat: TRYING: not()\nsat: enqueue: not() (considering)\nsat: TRYING: not(cargo-cfg-if.0.1.9)\nsat: enqueue: not(cargo-cfg-if.0.1.9) (considering)\n</code></pre>\n<p><span>we’re trying a whole bunch of nots… I think our\nproblems might stem from the structure of the SAT problem rather than\nit’s size</span></p>\n<pre><code>time dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages cargo-sauron-core.0.57.0\nhooooo\nha\n5116\nflush\n</code></pre>\n<pre><code>time dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages cargo-sauron-core.0.57.0\nhooooo\nha\n114649\nflush\n^C\n</code></pre>\n<p><span>that is a lot bigger a SAT problem… how do we build\nthe sat problem from roles and implementations? maybe we could do an\noptimisation if a role only has one implementation?</span></p>\n<p><span>ah! <code>Sat.at_most_one</code>\nadds a clause</span></p>\n<p><span><code>process_dep</code> adds a\nclause for dependencies for every implementation</span></p>\n<div><pre><code><span><a href=\"#cb4-1\"></a><span>let</span> implies problem ?reason first rest = at_least_one problem ?reason ((neg first) :: rest)</span></code></pre></div>\n<p><span>so basically we’re creating separate dependency\ninfo for every implementation now</span></p>\n<p><span>okay, we’re down to 110816 with removing the\nimplementation clause when there’s only one implementation</span></p>\n<ul>\n<li>question: does this break anything?</li>\n</ul>\n<p><span>okay, we get to `cargo-thiserror.1.0.0` on line\n219 with the o.g. solver compared to &gt;20k with the modified\nsolver</span></p>\n<p><span>(there are many software deployment methodologies\nout there but we can solve across them)</span></p>\n<div><pre><code><span><a href=\"#cb5-1\"></a><span>(* A clause with only a single literal is represented</span></span>\n<span><a href=\"#cb5-2\"></a><span> as an assignment rather than as a clause. *)</span></span></code></pre></div>\n<p><span>okay, so clauses stored in literal watch lists? I\ndon’t think it’ll be as easy to print this as I thought</span></p>\n<p><span>change <code>at_most_one</code>\nto <code>at_least_one?</code> no, we might return\nmultiple versions</span></p>\n<p><span>what if we just return the upper bound of every\ndependency???</span></p>\n<p><span>that did it!</span></p>\n<p><span>tomorrow: Next up is supporting both of these in\none dependency tree, which might require adding a new flag to the cargo\nopam files I mean if we’re solving dependencies that cross package\necosystem lines, e.g. an opam package depending on a cargo package, or a\ncargo package depending on a debian package. We would want to allow\nmultiple versions for the cargo package, but not the opam or debiain\npackages. So if I have some flag associated with each package I can\nchoose whether to represent them in a way that allows multiple versions\n(or not)</span></p></li>\n<li><p><span>Thu</span></p>\n<pre><code>Can't find all required versions.\nSelected: opam-angstrom.0.16.0 opam-base.v0.17.1 opam-base-bigarray.base\n opam-base-domains.base opam-base-nnp.base opam-base-threads.base\n opam-base-unix.base opam-base64.3.5.1 opam-bigstringaf.0.10.0\n opam-csexp.1.5.2 opam-dune.3.16.0 opam-dune-configurator.3.16.0\n opam-host-arch-x86_64.1 opam-jsonm.1.0.2 opam-ocaml.4.14.3\n opam-ocaml.5.2.0 opam-ocaml.5.2.1 opam-ocaml.5.4.0\n opam-ocaml-base-compiler.5.2.0 opam-ocaml-compiler-libs.v0.17.0\n opam-ocaml-config.3 opam-ocaml-option-bytecode-only.1\n opam-ocaml-options-vanilla.1 opam-ocaml-syntax-shims.1.0.0\n opam-ocaml_intrinsics_kernel.v0.17.1 opam-ocamlbuild.0.15.0\n opam-ocamlfind.1.9.6 opam-ppx_derivers.1.2.1\n opam-ppx_sexp_conv.v0.17.0 opam-ppxlib.0.33.0\n opam-ppxlib_jane.v0.17.0 opam-re.1.11.0 opam-seq.base\n opam-sexplib0.v0.17.0 opam-stdlib-shims.0.3.0 opam-stringext.1.6.0\n opam-topkg.1.0.7 opam-uri.4.4.0 opam-uri-sexp.4.4.0 opam-uutf.1.0.3\n opam-cohttp.5.3.1 opam-cohttp.5.3.1 opam-ocaml.4.14.3\n opam-ocaml-base-compiler.5.2.0 opam-ocaml-option-bytecode-only.1\n opam-ocaml-base-compiler.5.2.0 opam-ocaml.5.4.0\n opam-base-domains.base opam-ocaml-base-compiler.5.2.0\n opam-ocaml.5.4.0\n- opam-cohttp.5.3.1 -&gt; opam-cohttp.5.3.1\n User requested = 5.3.1\n- opam-ocaml-variants.4.14.3+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.4.14.3+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\n- opam-ocaml-variants.5.2.1+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.5.2.1+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\n- opam-ocaml-variants.5.4.0+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.5.4.0+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\ndune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages 18.89s user 1.72s system 99% cpu 20.629 tot\n</code></pre>\n<p><span>this is new</span></p>\n<p><span><a href=\"https://github.com/RyanGibb/opam-0install-solver/commit/e396b5982ec954391670eea91173f896493a42d8\">https://github.com/RyanGibb/opam-0install-solver/commit/e396b5982ec954391670eea91173f896493a42d8</a></span></p></li>\n<li><p><span>Fri</span></p>\n<ol>\n<li><p><span><a href=\"https://docs.google.com/document/d/19HNnqMsETTdwwQd0I0zq2rg1IrJtaoFEA1B1OpJGNUg/edit\">https://docs.google.com/document/d/19HNnqMsETTdwwQd0I0zq2rg1IrJtaoFEA1B1OpJGNUg/edit</a></span></p>\n<ol>\n<li><p><span><a href=\"https://news.ycombinator.com/item?id=12187888\">https://news.ycombinator.com/item?id=12187888</a></span></p>\n<ol>\n<li><p><span>&gt; I’d suggest making some sort of\nmeta-system packaging system that works for all the languages, but xkcd\n927 (and I wouldn’t use it myself, anyway, because it would probably not\ninstall Ruby packages correctly and would solve things worse than NPM\nalready does).</span></p></li>\n<li><p><span>&gt; Global installs are the root of a lot of\nheadaches when building software in the same way that global mutable\nstate is the root of a lot of headaches when developing\nit.</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://github.com/rust-lang/cargo/issues/2064\">https://github.com/rust-lang/cargo/issues/2064</a></span></p></li>\n</ol></li>\n<li><p><span>vs Nix? version resolution (using old versions\nof packages) and using other ecosystems</span></p>\n<ol>\n<li><p><span>decentralized package managers?</span></p>\n<ol>\n<li><p><span>using domain names?</span></p></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/purl/\">https://archive.fosdem.org/2018/schedule/event/purl/</a></span></p>\n<ol>\n<li><p><span><a href=\"https://github.com/package-url/purl-spec\">https://github.com/package-url/purl-spec</a>\nin OCaml?</span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span>immutable packages</span></p>\n<ol>\n<li><p><span>distrubuted append-only ledger? actually,\nno…</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/bazaarsandcathedrals/\">https://archive.fosdem.org/2018/schedule/event/bazaarsandcathedrals/</a></span></p>\n<ol>\n<li><p><span>cathedral vs bazar</span></p></li>\n<li><p><span>build or runtime</span></p></li>\n<li><p><span>build, depends, pre-depends, recommends,\nsuggests, enhances, breaks, conflicts, obsolete</span></p></li>\n<li><p><span>Sat solving</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/packagemangementunites/\">https://archive.fosdem.org/2018/schedule/event/packagemangementunites/</a></span></p>\n<ol>\n<li><p><span>different registries</span></p></li>\n<li><p><span>a taxonomy of package\nmanagement</span></p></li>\n<li><p><span><a href=\"https://dl.acm.org/doi/pdf/10.1145/3347446\">https://dl.acm.org/doi/pdf/10.1145/3347446</a></span></p></li>\n<li><p><span><a href=\"https://research.swtch.com/vgo-mvs\">https://research.swtch.com/vgo-mvs</a></span></p></li>\n</ol></li>\n</ol></li>\n</ol></li>\n<li><p><span>Sat</span></p>\n<p><span><a href=\"https://www-users.cselabs.umn.edu/classes/Fall-2019/csci5271/papers/SRL2003-02.pdf\">https://www-users.cselabs.umn.edu/classes/Fall-2019/csci5271/papers/SRL2003-02.pdf</a>\n<a href=\"https://dl.acm.org/doi/pdf/10.1145/3365199\">https://dl.acm.org/doi/pdf/10.1145/3365199</a>\n<a href=\"https://anil.recoil.org/papers/2018-hotpost-osmose.pdf\">https://anil.recoil.org/papers/2018-hotpost-osmose.pdf</a>\n<a href=\"https://dl.acm.org/doi/10.1145/356678.356682\">https://dl.acm.org/doi/10.1145/356678.356682</a></span></p>\n<p><span>idea: shark could parametise build software\nconfigurations by domain name like nix could</span></p>\n<p><span>get anil to deploy eon</span></p>\n<p><span>what every happened to that shell over\ncapnp?</span></p></li>\n<li><p><span>Sun</span></p>\n<p><span>Swapnil says to sell the package management as the\nLSP of package management. n*n -&gt; n</span></p></li>\n</ol>", 8 "content": "<div>\n <span> Previous: <a href=\"2024-08-26.html\">26 Aug 2024</a> </span>\n <span> Next: <a href=\"2024-09-09.html\"> 9 Sep 2024</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span>Tue</span></p>\n<ol>\n<li><p><span>Try dumping the SAT graph to see how big we\nmake it</span></p></li>\n<li><p><span>hmm, magic trace traces are\nempty</span></p></li>\n<li><p><span>Spent some trying to understand the SAT\nsolving</span></p></li>\n</ol></li>\n<li><p><span>Wed</span></p>\n<pre><code>sat: TRYING: not(cargo-quote.1.0.32)\nsat: enqueue: not(cargo-quote.1.0.32) (considering)\nsat: TRYING: not(cargo-quote.1.0.33)\nsat: enqueue: not(cargo-quote.1.0.33) (considering)\nsat: TRYING: not(cargo-quote.1.0.34)\nsat: enqueue: not(cargo-quote.1.0.34) (considering)\nsat: TRYING: not(cargo-quote.1.0.35)\nsat: enqueue: not(cargo-quote.1.0.35) (considering)\nsat: TRYING: not(cargo-quote.1.0.36)\nsat: enqueue: not(cargo-quote.1.0.36) (considering)\nsat: TRYING: not(cargo-quote.1.0.37)\nsat: enqueue: not(cargo-quote.1.0.37) (considering)\nsat: TRYING: not()\nsat: enqueue: not() (considering)\nsat: enqueue: not(cargo-wasm-bindgen.0.2.66) (&lt;some: not(cargo-wasm-bindgen.0.2.66), , cargo-wasm-bindgen-macro.0.2.66&gt;)\nsat: enqueue: not(cargo-wasm-bindgen.0.2.66) (&lt;some: not(cargo-wasm-bindgen.0.2.66), cargo-wasm-bindgen.0.2.66&gt;)\nsat: TRYING: not()\nsat: enqueue: not() (considering)\nsat: TRYING: not(cargo-cfg-if.0.1.9)\nsat: enqueue: not(cargo-cfg-if.0.1.9) (considering)\n</code></pre>\n<p><span>we’re trying a whole bunch of nots… I think our\nproblems might stem from the structure of the SAT problem rather than\nit’s size</span></p>\n<pre><code>time dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages cargo-sauron-core.0.57.0\nhooooo\nha\n5116\nflush\n</code></pre>\n<pre><code>time dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages cargo-sauron-core.0.57.0\nhooooo\nha\n114649\nflush\n^C\n</code></pre>\n<p><span>that is a lot bigger a SAT problem… how do we build\nthe sat problem from roles and implementations? maybe we could do an\noptimisation if a role only has one implementation?</span></p>\n<p><span>ah! <code>Sat.at_most_one</code>\nadds a clause</span></p>\n<p><span><code>process_dep</code> adds a\nclause for dependencies for every implementation</span></p>\n<div><pre><code><span><a href=\"#cb4-1\"></a><span>let</span> implies problem ?reason first rest = at_least_one problem ?reason ((neg first) :: rest)</span></code></pre></div>\n<p><span>so basically we’re creating separate dependency\ninfo for every implementation now</span></p>\n<p><span>okay, we’re down to 110816 with removing the\nimplementation clause when there’s only one implementation</span></p>\n<ul>\n<li>question: does this break anything?</li>\n</ul>\n<p><span>okay, we get to `cargo-thiserror.1.0.0` on line\n219 with the o.g. solver compared to &gt;20k with the modified\nsolver</span></p>\n<p><span>(there are many software deployment methodologies\nout there but we can solve across them)</span></p>\n<div><pre><code><span><a href=\"#cb5-1\"></a><span>(* A clause with only a single literal is represented</span></span>\n<span><a href=\"#cb5-2\"></a><span> as an assignment rather than as a clause. *)</span></span></code></pre></div>\n<p><span>okay, so clauses stored in literal watch lists? I\ndon’t think it’ll be as easy to print this as I thought</span></p>\n<p><span>change <code>at_most_one</code>\nto <code>at_least_one?</code> no, we might return\nmultiple versions</span></p>\n<p><span>what if we just return the upper bound of every\ndependency???</span></p>\n<p><span>that did it!</span></p>\n<p><span>tomorrow: Next up is supporting both of these in\none dependency tree, which might require adding a new flag to the cargo\nopam files I mean if we’re solving dependencies that cross package\necosystem lines, e.g. an opam package depending on a cargo package, or a\ncargo package depending on a debian package. We would want to allow\nmultiple versions for the cargo package, but not the opam or debiain\npackages. So if I have some flag associated with each package I can\nchoose whether to represent them in a way that allows multiple versions\n(or not)</span></p></li>\n<li><p><span>Thu</span></p>\n<pre><code>Can't find all required versions.\nSelected: opam-angstrom.0.16.0 opam-base.v0.17.1 opam-base-bigarray.base\n opam-base-domains.base opam-base-nnp.base opam-base-threads.base\n opam-base-unix.base opam-base64.3.5.1 opam-bigstringaf.0.10.0\n opam-csexp.1.5.2 opam-dune.3.16.0 opam-dune-configurator.3.16.0\n opam-host-arch-x86_64.1 opam-jsonm.1.0.2 opam-ocaml.4.14.3\n opam-ocaml.5.2.0 opam-ocaml.5.2.1 opam-ocaml.5.4.0\n opam-ocaml-base-compiler.5.2.0 opam-ocaml-compiler-libs.v0.17.0\n opam-ocaml-config.3 opam-ocaml-option-bytecode-only.1\n opam-ocaml-options-vanilla.1 opam-ocaml-syntax-shims.1.0.0\n opam-ocaml_intrinsics_kernel.v0.17.1 opam-ocamlbuild.0.15.0\n opam-ocamlfind.1.9.6 opam-ppx_derivers.1.2.1\n opam-ppx_sexp_conv.v0.17.0 opam-ppxlib.0.33.0\n opam-ppxlib_jane.v0.17.0 opam-re.1.11.0 opam-seq.base\n opam-sexplib0.v0.17.0 opam-stdlib-shims.0.3.0 opam-stringext.1.6.0\n opam-topkg.1.0.7 opam-uri.4.4.0 opam-uri-sexp.4.4.0 opam-uutf.1.0.3\n opam-cohttp.5.3.1 opam-cohttp.5.3.1 opam-ocaml.4.14.3\n opam-ocaml-base-compiler.5.2.0 opam-ocaml-option-bytecode-only.1\n opam-ocaml-base-compiler.5.2.0 opam-ocaml.5.4.0\n opam-base-domains.base opam-ocaml-base-compiler.5.2.0\n opam-ocaml.5.4.0\n- opam-cohttp.5.3.1 -&gt; opam-cohttp.5.3.1\n User requested = 5.3.1\n- opam-ocaml-variants.4.14.3+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.4.14.3+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\n- opam-ocaml-variants.5.2.1+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.5.2.1+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\n- opam-ocaml-variants.5.4.0+trunk -&gt; (problem)\n Rejected candidates:\n opam-ocaml-variants.5.4.0+trunk: In same conflict class (ocaml-core-compiler) as opam-ocaml-base-compiler.5.2.0\n opam-ocaml-variants.5.2.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.1+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.1.0+trunk: Availability condition not satisfied\n opam-ocaml-variants.5.0.0+trunk: Availability condition not satisfied\n ...\ndune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages 18.89s user 1.72s system 99% cpu 20.629 tot\n</code></pre>\n<p><span>this is new</span></p>\n<p><span><a href=\"https://github.com/RyanGibb/opam-0install-solver/commit/e396b5982ec954391670eea91173f896493a42d8\">https://github.com/RyanGibb/opam-0install-solver/commit/e396b5982ec954391670eea91173f896493a42d8</a></span></p></li>\n<li><p><span>Fri</span></p>\n<ol>\n<li><p><span><a href=\"https://docs.google.com/document/d/19HNnqMsETTdwwQd0I0zq2rg1IrJtaoFEA1B1OpJGNUg/edit\">https://docs.google.com/document/d/19HNnqMsETTdwwQd0I0zq2rg1IrJtaoFEA1B1OpJGNUg/edit</a></span></p>\n<ol>\n<li><p><span><a href=\"https://news.ycombinator.com/item?id=12187888\">https://news.ycombinator.com/item?id=12187888</a></span></p>\n<ol>\n<li><p><span>&gt; I’d suggest making some sort of\nmeta-system packaging system that works for all the languages, but xkcd\n927 (and I wouldn’t use it myself, anyway, because it would probably not\ninstall Ruby packages correctly and would solve things worse than NPM\nalready does).</span></p></li>\n<li><p><span>&gt; Global installs are the root of a lot of\nheadaches when building software in the same way that global mutable\nstate is the root of a lot of headaches when developing\nit.</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://github.com/rust-lang/cargo/issues/2064\">https://github.com/rust-lang/cargo/issues/2064</a></span></p></li>\n</ol></li>\n<li><p><span>vs Nix? version resolution (using old versions\nof packages) and using other ecosystems</span></p>\n<ol>\n<li><p><span>decentralized package managers?</span></p>\n<ol>\n<li><p><span>using domain names?</span></p></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/purl/\">https://archive.fosdem.org/2018/schedule/event/purl/</a></span></p>\n<ol>\n<li><p><span><a href=\"https://github.com/package-url/purl-spec\">https://github.com/package-url/purl-spec</a>\nin OCaml?</span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span>immutable packages</span></p>\n<ol>\n<li><p><span>distrubuted append-only ledger? actually,\nno…</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/bazaarsandcathedrals/\">https://archive.fosdem.org/2018/schedule/event/bazaarsandcathedrals/</a></span></p>\n<ol>\n<li><p><span>cathedral vs bazar</span></p></li>\n<li><p><span>build or runtime</span></p></li>\n<li><p><span>build, depends, pre-depends, recommends,\nsuggests, enhances, breaks, conflicts, obsolete</span></p></li>\n<li><p><span>Sat solving</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://archive.fosdem.org/2018/schedule/event/packagemangementunites/\">https://archive.fosdem.org/2018/schedule/event/packagemangementunites/</a></span></p>\n<ol>\n<li><p><span>different registries</span></p></li>\n<li><p><span>a taxonomy of package\nmanagement</span></p></li>\n<li><p><span><a href=\"https://dl.acm.org/doi/pdf/10.1145/3347446\">https://dl.acm.org/doi/pdf/10.1145/3347446</a></span></p></li>\n<li><p><span><a href=\"https://research.swtch.com/vgo-mvs\">https://research.swtch.com/vgo-mvs</a></span></p></li>\n</ol></li>\n</ol></li>\n</ol></li>\n<li><p><span>Sat</span></p>\n<p><span><a href=\"https://www-users.cselabs.umn.edu/classes/Fall-2019/csci5271/papers/SRL2003-02.pdf\">https://www-users.cselabs.umn.edu/classes/Fall-2019/csci5271/papers/SRL2003-02.pdf</a>\n<a href=\"https://dl.acm.org/doi/pdf/10.1145/3365199\">https://dl.acm.org/doi/pdf/10.1145/3365199</a>\n<a href=\"https://anil.recoil.org/papers/2018-hotpost-osmose.pdf\">https://anil.recoil.org/papers/2018-hotpost-osmose.pdf</a>\n<a href=\"https://dl.acm.org/doi/10.1145/356678.356682\">https://dl.acm.org/doi/10.1145/356678.356682</a></span></p>\n<p><span>idea: shark could parametise build software\nconfigurations by domain name like nix could</span></p>\n<p><span>get anil to deploy eon</span></p>\n<p><span>what every happened to that shell over\ncapnp?</span></p></li>\n<li><p><span>Sun</span></p>\n<p><span>Swapnil says to sell the package management as the\nLSP of package management. n*n -&gt; n</span></p></li>\n</ol>", 9 "content_type": "html", 10 "categories": [], 11 "source": "https://ryan.freumh.org/atom.xml" 12}