2 #+author: Richard Westhaver
3 #+email: ellis@rwest.io
4 #+setupfile: ../../../clean.theme
6 The universal package manager
10 :ID: 4af5efc5-da30-4e1d-b7e4-6c8ff1953e05 13 - we have standards for everything nowadays.. container images
14 (OCI), language servers (LSP), Emoji codes.. why not packages and
16 - what happens if upstream package registries go down during release CI? (ur fukt)
17 - decent amount of external traffic comes from package registry streams (CITE)
18 - ezpz - cache it locally, and reduce cost at the same time
19 - data proximity matters
20 - public registries are ripe for supply-chain attacks
21 - there are too many package managers, and it's unreasonable to
22 demand our clients rely on them
23 - needless external footprint - keep this traffic away from bad
24 actors and inside the corporate VPN
25 - traffic control matters
28 + define spec in CLOS (lisp objects)
29 + define validation tools
30 + use tools to validate implementations
32 + functionality composed of lambdas and closures
33 - insert hooks, custom settings, flags
34 + ability to define optimization passes
35 + dependency traversal, cycle detection
40 - introspectable (from client and server)
42 - [[https://www.gnu.org/software/emacs/manual/html_mono/ede.html#EDE-Project-Concepts][EDE]] 43 - [[https://elpa.gnu.org/][ELPA]] 44 - [[https://www.gnu.org/software/emacs/manual/html_node/org/Configuration.html][org-publish.el]] 45 - [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html][package.el]] 46 - [[https://firefox-source-docs.mozilla.org/contributing/vcs/mercurial_bundles.html][Mercurial]] 47 - [[https://doc.rust-lang.org/book/ch07-01-packages-and-crates.html][Crates]] 48 - [[https://archlinux.org/pacman/][Pacman]] 49 - [[https://brew.sh/][Homebrew]] 50 - [[https://ultralisp.org/][Ultralisp]] 52 - [[https://github.com/cargo-generate/cargo-generate][cargo-generate]] 53 - [[https://doc.rust-lang.org/book/ch14-05-extending-cargo.html][extending cargo]] 54 - [[https://github.com/quicklisp/quicklisp-projects][quicklisp-projects]] 55 - [[https://github.com/quicklisp/quicklisp-client][quicklisp-client]] 56 - [[https://github.com/ultralisp/ultralisp][ultralisp]] 57 - [[https://github.com/ultralisp/quickdist][quickdist]] 60 :ID: 2200c939-3ff0-4318-a609-832cabf7cc98 81 :ID: 0cbf014a-6fef-4d64-9b53-046cd2b0cce8 83 The following package registries will be supported in v1.
86 :ID: 559d141a-8e48-4cd9-ba48-1c0d8f590724 88 Emacs Lisp packages (tarballs)
91 :ID: 8b327ea1-e4ee-443a-9b80-09d478c1c02d 93 Version Control Repo bundles (tar.zst)
96 :ID: a6e1de58-be2a-4fc7-823d-6ece72bd1d22 100 :ID: 554db06b-1015-40f9-a85d-ce46e739be44 104 :ID: 860c0f58-a569-4416-93d0-ea1487eda421 106 Quicklisp compatible packages
109 :ID: 1f3ae49a-52da-455e-a677-2b0170aa03ec 113 :ID: e6a8dc5b-7e93-42cf-b7d3-fa59408e5911 115 This is a private crate registry for the Rust programming
118 The
[[https://crates.io][crates.io]] package registry provides a number of excellent crates,
119 integrates well with the
=cargo= development tool, and should be
120 preferred in all cases. I use
=crater= when I need to:
121 - import my unpublished crates
122 - import the master branch of a published crate
123 - import a local or patched version of a published crate
124 - import a non-git crate (hg)
126 =crater= also works well in intranet/local environments, and can be
127 deployed for use in the following ways:
128 - remote :: same as crates.io, registry index is publicly hosted on GitHub (default)
129 - local :: registry index is stored locally, crates are retrieved remotely
130 - static :: registry index and crate sources are stored locally, no
131 network requests are required