Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Published flag for documents #291

Open
epatters opened this issue Dec 11, 2024 · 3 comments
Open

Published flag for documents #291

epatters opened this issue Dec 11, 2024 · 3 comments
Labels
backend Backend, including web server and database enhancement New feature or request frontend TypeScript frontend and Rust-wasm integrations tactical Typical engineering complexity

Comments

@epatters
Copy link
Member

In addition to its permissions/access control list, a document should have a published flag stating whether it is publicly listed. Once a document is published, it cannot be unpublished, and a published document can depend only on other published documents.

This requires:

For further discussion, see Sec 3.1.2 of the n-dim report.

@epatters epatters added enhancement New feature or request frontend TypeScript frontend and Rust-wasm integrations backend Backend, including web server and database labels Dec 11, 2024
@epatters epatters added the tactical Typical engineering complexity label Dec 11, 2024
@epatters epatters moved this to Backlog in CatColab v0.2 Dec 11, 2024
@epatters epatters moved this from Backlog to Ready in CatColab v0.2 Dec 17, 2024
@epatters epatters assigned epatters and unassigned epatters Jan 3, 2025
@epatters epatters removed this from CatColab v0.2 Jan 3, 2025
@KevinDCarlson
Copy link
Collaborator

I find the semantic distinction between published versus viewable-by-all to be rather subtle. Presumably any published document must be at least viewable-by-all, so these can't quite be independent columns. Should we just force permissions up to at least "all viewable" if the user checks published?

@epatters
Copy link
Member Author

epatters commented Jan 28, 2025

I agree that it's subtle. I think the distinction is that a published document broadcasts its existence (e.g., it shows up in public lists of a user's models or in searches of the public library of models), whereas as a non-published document, even if readable by anyone, can only be found if you have the link.

Here's what the n-dim report (Sec 3.1.2) says about publishing:

When an object is first created, it is malleable, but only in so far as its owner is concerned. Until it is published, no one but its owner can even know of its existence. The act of publishing an object is similar to the notion of publishing a paper; once the paper is published, its author cannot go to all of the libraries in the world and remove it from circulation. In the same way, publishing an object makes it visible to the rest of the world and, at the same time, immutable, even to its original author. If one wants to change a published object, it must be copied, and the copy revised, at which time the pedigree-maintenance mechanisms described above are activated. In this way, the path any published object has taken through its many copies can always be traced.

To publish an object, everything that it depends on must be published, namely, all targets of part links with the object as source. One is thus guaranteed that when a published object is manipulated, even some time (e.g. years) after it was published, it will behave exactly as it did at the time of publication. This is a critical property of published objects, and one reason for the way in which it has been formulated in n-dim.

...

Published objects can never be destroyed, although n-dim does have a notion of archival vs. active storage, in the same way that libraries move little-used books and material to less easily accessed but more efficient storage, such as microfiche.

We will have to confront the same sorts of issues one way or another once models can depend on other models, if we want to be a proper "GitHub for models." GitHub itself doesn't quite have this problem because repos cannot depend on other repos (except through Git submodules, which basically no one uses or thinks about).

@KevinDCarlson
Copy link
Collaborator

Having just been talking about snapshots over at #318 , I wonder whether it's really a snapshot that should be published, rather than a document? Of course we still aren't saving snapshots except at the head...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Backend, including web server and database enhancement New feature or request frontend TypeScript frontend and Rust-wasm integrations tactical Typical engineering complexity
Projects
None yet
Development

No branches or pull requests

2 participants