changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 45: 517e7b6fb42d
parent: bc53e27c0163
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 25 Aug 2024 00:15:40 -0400
permissions: -rw-r--r--
description: meta and task work
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 :PROPERTIES:
10 :ID: 4af5efc5-da30-4e1d-b7e4-6c8ff1953e05
11 :END:
12 - why
13  - we have standards for everything nowadays.. container images
14  (OCI), language servers (LSP), Emoji codes.. why not packages and
15  package managers?
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
26 - how
27  - sexps
28  + define spec in CLOS (lisp objects)
29  + define validation tools
30  + use tools to validate implementations
31  - compilers
32  + functionality composed of lambdas and closures
33  - insert hooks, custom settings, flags
34  + ability to define optimization passes
35  + dependency traversal, cycle detection
36  + macros
37 - goals
38  - simple design
39  - extensibility
40  - introspectable (from client and server)
41 - inspiration
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]]
51 - resources
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]]
58 ** Design
59 :PROPERTIES:
60 :ID: 2200c939-3ff0-4318-a609-832cabf7cc98
61 :END:
62 - core classes
63  - package
64  - source
65  - collection
66  - op
67  - env
68 - mixed
69  - registry
70  source + collection
71  - dependency
72  source + package
73  - client
74  - op+env
75  - server
76  - op+collection+env
77  - peer
78  - client+server
79 ** targets
80 :PROPERTIES:
81 :ID: 0cbf014a-6fef-4d64-9b53-046cd2b0cce8
82 :END:
83 The following package registries will be supported in v1.
84 *** el
85 :PROPERTIES:
86 :ID: 559d141a-8e48-4cd9-ba48-1c0d8f590724
87 :END:
88 Emacs Lisp packages (tarballs)
89 *** vc
90 :PROPERTIES:
91 :ID: 8b327ea1-e4ee-443a-9b80-09d478c1c02d
92 :END:
93 Version Control Repo bundles (tar.zst)
94 **** hg
95 :PROPERTIES:
96 :ID: a6e1de58-be2a-4fc7-823d-6ece72bd1d22
97 :END:
98 **** git
99 :PROPERTIES:
100 :ID: 554db06b-1015-40f9-a85d-ce46e739be44
101 :END:
102 *** ql
103 :PROPERTIES:
104 :ID: 860c0f58-a569-4416-93d0-ea1487eda421
105 :END:
106 Quicklisp compatible packages
107 *** pip
108 :PROPERTIES:
109 :ID: 1f3ae49a-52da-455e-a677-2b0170aa03ec
110 :END:
111 *** crater
112 :PROPERTIES:
113 :ID: e6a8dc5b-7e93-42cf-b7d3-fa59408e5911
114 :END:
115 This is a private crate registry for the Rust programming
116 language.
117 
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)
125 
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