changelog shortlog graph tags branches changeset files revisions annotate raw help

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

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