Replies: 8 comments 13 replies
-
What is the historical context that no longer applies? While I understand the presented advantages of a registry, I still feel that the Go-style approach would be better for users:
Given the usage of CUE for configuration, I think private modules are actually a lot more important than they are with Go, and should be given more weight in any proposal. |
Beta Was this translation helpful? Give feedback.
-
I am not opposed to eschewing version control (VCS) support. I can understand the pain points integrating multiple VCS and overhead in cloning operations to effectively get some files. That said, we should support lightweight methods to pull CUE code without going through a registry. Why would this be advantageous?
Even if registries are self-hosted that friction can preclude some unique opportunities that CUE can do. I think the main blockers of the current proposal is that the With the scheme above, the registry would be the fast automatic cache with fallback to the actual defined domain to fetch CUE code from anywhere if needed. This preserves the registry for caching and fallback while granting that same benefits to other domains at the module, not registry unit. |
Beta Was this translation helpful? Give feedback.
-
This is likely to incur a non negligible cost in bandwidth. Taking away resources focus and attention from where it might (hopefully) be better allocated to cue itself. Maybe something to consider around the potential monetary impact of the decisions here. |
Beta Was this translation helpful? Give feedback.
-
I too am wary of another custom registry implementation. Hosting such a private internal registry in an organization is often more hassle than it is worth. Package management is the number 1 feature that I am waiting for in Cue, however, I think having to host a package manager that is accessible to the rest of our organization securely would be a major blocker in being able to drive Cue adoption within our org. Having either VCS or OCI support would, in my opinion, provide a frictionless approach to distributing modules within an organization. |
Beta Was this translation helpful? Give feedback.
-
I built 2 PoCs based on the new module proposal with a centralized repo and have been using it for the past couple of months: The first PoC I tried used inline imports to compile packages into a single file that can be published and shared, but this did not work well for schemas, and some constraints as references were removed so effectively the schema changes (created an issue here) The second PoC creates an overlay of all the files and their paths as is, then copy them over to an abstract storage (This can be an OCI overlay, no-SQL document, a bucket whatever) with semantic versioning, but here are the issues I encountered while implementing this:
All the code is publicly accessible in this project, it's still not very well documented but I would be happy to walk anyone interested through it. |
Beta Was this translation helpful? Give feedback.
-
From: https://github.com/cue-lang/proposal/blob/main/designs/modules/2449-modules-storage-model.md#detailed-design | https://github.com/cue-lang/proposal/blob/main/designs/modules/2449-modules-storage-model.md#working-with-private-registries
This seems to imply, if I am fetching dependencies, they all must come from the same registry. By proxy, this means if I want to have one private module, I must then mirror all other dependencies. Is this the case and intention of the design? Why is fetching from multiple locations in one command, such as public modules from the public registry, and private modules from a private registry, not part of this design? Every major package manager supports this, why is CUE deviating from the standard? No rationale is provided for this decision
Most seem to also support multiple registries side-by-side with going directly to source as will, usually limited to git. There is a lot of value in being able to just tag a git commit and have a module available, with no publishing step required. Given CUE cites these two ecosystems as models, why is the deviation to force a single registry part of the proposal? |
Beta Was this translation helpful? Give feedback.
-
I think the concern here should be that an adversary might use insignificant white-space in order to produce a collision with a module they're trying to subvert. If the threat model is "modules might be trashed in transit" and you want a digest for error correction, by all means use SHA-1 on whatever comes over the wire. If you want to prevent a MITM from e.g. changing |
Beta Was this translation helpful? Give feedback.
-
This proposal was superseded by #2939. As we updated in #2939 (comment), that proposal (and its sub-proposals) have now been accepted, hence we are closing this discussion to represent the decision on the v3 proposal. |
Beta Was this translation helpful? Give feedback.
-
Proposal #851 presented an initial proposal on how CUE can fully support package and dependency management. Thank you to everyone who provided feedback on that proposal in the issue and subsequent discussions.
In this discussion, we present a revised package management and modules proposal that entirely replaces #851.
Please ask questions and provide feedback in this discussion. If there is sufficient demand/interest, we might look to arrange office hours to discuss the proposal and feedback in more detail, live.
Please subscribe to #2032 for future updates on package management and modules.
Abstract
There is a big demand from the CUE community to allow sharing CUE code within a broader ecosystem, much like the package managers that are available for programming languages or schema stores.
To address this demand, we propose the creation of a CUE registry that will serve as a central repository for CUE modules. A module is a collection of packages that are released, versioned, and distributed together. The registry will allow users to share and discover CUE modules and will provide versioning and dependency management features.
https://github.com/cue-lang/proposal/blob/main/designs/2330-modules-v2.md
Sub proposals
Beta Was this translation helpful? Give feedback.
All reactions