changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > org > docs / core/lib/packy.org

changeset 31: 0b69e63c9374
parent: d0a90a87b824
child: bc53e27c0163
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 16 Jun 2024 01:14:25 -0400
permissions: -rw-r--r--
description: clean
1 #+title: packy
2 #+author: Richard Westhaver
3 #+email: ellis@rwest.io
4 #+begin_center
5 The universal package manager
6 #+end_center
7 * Notes
8 - why
9  - we have standards for everything nowadays.. container images
10  (OCI), language servers (LSP), Emoji codes.. why not packages and
11  package managers?
12  - what happens if upstream package registries go down during release CI? (ur fukt)
13  - decent amount of external traffic comes from package registry streams (CITE)
14  - ezpz - cache it locally, and reduce cost at the same time
15  - data proximity matters
16  - public registries are ripe for supply-chain attacks
17  - there are too many package managers, and it's unreasonable to
18  demand our clients rely on them
19  - needless external footprint - keep this traffic away from bad
20  actors and inside the corporate VPN
21  - traffic control matters
22 - how
23  - sexps
24  + define spec in CLOS (lisp objects)
25  + define validation tools
26  + use tools to validate implementations
27  - compilers
28  + functionality composed of lambdas and closures
29  - insert hooks, custom settings, flags
30  + ability to define optimization passes
31  + dependency traversal, cycle detection
32  + macros
33 - goals
34  - simple design
35  - extensibility
36  - introspectable (from client and server)
37 - inspiration
38  - [[https://www.gnu.org/software/emacs/manual/html_mono/ede.html#EDE-Project-Concepts][EDE]]
39  - [[https://elpa.gnu.org/][ELPA]]
40  - [[https://www.gnu.org/software/emacs/manual/html_node/org/Configuration.html][org-publish.el]]
41  - [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html][package.el]]
42  - [[https://firefox-source-docs.mozilla.org/contributing/vcs/mercurial_bundles.html][Mercurial]]
43  - [[https://doc.rust-lang.org/book/ch07-01-packages-and-crates.html][Crates]]
44  - [[https://archlinux.org/pacman/][Pacman]]
45  - [[https://brew.sh/][Homebrew]]
46  - [[https://ultralisp.org/][Ultralisp]]
47 - resources
48  - [[https://github.com/cargo-generate/cargo-generate][cargo-generate]]
49  - [[https://doc.rust-lang.org/book/ch14-05-extending-cargo.html][extending cargo]]
50  - [[https://github.com/quicklisp/quicklisp-projects][quicklisp-projects]]
51  - [[https://github.com/quicklisp/quicklisp-client][quicklisp-client]]
52  - [[https://github.com/ultralisp/ultralisp][ultralisp]]
53  - [[https://github.com/ultralisp/quickdist][quickdist]]
54 ** Design
55 - core classes
56  - package
57  - source
58  - collection
59  - op
60  - env
61 - mixed
62  - registry
63  source + collection
64  - dependency
65  source + package
66  - client
67  - op+env
68  - server
69  - op+collection+env
70  - peer
71  - client+server
72 ** targets
73 The following package registries will be supported in v1.
74 *** el
75 Emacs Lisp packages (tarballs)
76 *** vc
77 Version Control Repo bundles (tar.zst)
78 **** hg
79 **** git
80 *** ql
81 Quicklisp compatible packages
82 *** pip
83 *** crater
84 This is a private crate registry for the Rust programming
85 language.
86 
87 The [[https://crates.io][crates.io]] package registry provides a number of excellent crates,
88 integrates well with the =cargo= development tool, and should be
89 preferred in all cases. I use =crater= when I need to:
90 - import my unpublished crates
91 - import the master branch of a published crate
92 - import a local or patched version of a published crate
93 - import a non-git crate (hg)
94 
95 =crater= also works well in intranet/local environments, and can be
96 deployed for use in the following ways:
97 - remote :: same as crates.io, registry index is publicly hosted on GitHub (default)
98 - local :: registry index is stored locally, crates are retrieved remotely
99 - static :: registry index and crate sources are stored locally, no
100  network requests are required