-
Notifications
You must be signed in to change notification settings - Fork 10
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
Publishing the core extensions #166
Comments
So far my thinking was to not publish them to Extensions change the picture: for one, they (generally) are not useful without I understand (hope?) that all Linux distributions that we support build binary packages from source. And by that I mean the actual repository contents, not the archive uploaded to Of course, publishing extensions there also does not hurt much. And I am not fundamentally against publishing them. I just think that given that there is more involved to getting them to work than what |
Do you have concrete use cases for publishing to |
The Debian packages are built from the releases published to crates.io.
Well, the same is true for |
For me, publishing to crates.io would be the default as it is how we started off. And I see several benefits with it, for example full build reproducibility and an archive of all published versions, not dependent on this repository which might disappear, be force-pushed to or change its internal structure; also simple installation of the extensions in a manner consistent with |
And to repeat my point from the first post: If we on the hand think that the core extensions should be stable and well-tested, as established in #144, and on the other hand, we don’t intend to publish them on crates.io – why do we need separate crates in the first place? Why not have additional binary targets in |
Fair enough. If some distribution consume contents for So what should the versioning story be? I suspect you are then also insisting on versioning them independently of
I can agree with it being another mirror that could be fallen back to. But anything trust related is off the table in my opinion. Nothing is signed, there is little to no guarantee of tamper detection (yes, there is some checksumming here and there, but if you don't know what it should be [e.g., by having a lock file lying around], you can't tell whether anything changed).
Yes, we could choose to make them mere binaries. The downside to me is that things become very monolithic. That does not change anything about the fact that they are built on top of the extension mechanism, the entire premise of which (the way I understood it), was to provide a polyglot way for other parties to add functionality to |
I haven’t made up my mind yet. And I don’t think that this question only applies to publishing on crates.io. Even if we don’t use crates.io, we need a versioning model. One option would be to just release if necessary and to document the compatible versions in the readme. Another option would be to have one extension release per breaking
I agree that crates.io cannot be a source of trust, but it can act as a part of a trusted system, just like we use it to resolve our dependencies. But I don’t think we have to discuss this here. |
The more I think about it, the more I like the idea of having the core extensions as additional binary targets of the But we wouldn’t have to deal with separate crates, their distribution strategy, their versioning strategy etc. We would have a much smaller risk of compatibility issues. We could even have The distributions could decide how to package the extensions. For example, in Debian, we would probably have the |
Yeah, I tend to agree: it's the lesser evil.
Sounds good. I am not fundamentally against releasing it down the line if we at least have some more use cases/suspected consumers, I just don't want to rush it. It is true that nothing is set in stone API wise and we can always push a new version, but to me every published API is a commitment in one form or another, and the more of those we have the more constrained we become/the more things we need to consider. So short to midterm I would even go so far to say that the relevant code could just be duplicated on the user's end. One added advantage I see of not publishing it early on is that we set a bit of an incentive for users to at least consider bringing up the possibility of making what they are writing a core extension, which gives us a better overview of what is going on. |
This is intended as an example for discussion in d-e-s-o#166. Unforunately, it is not possible to directly include modules from the main binary, so we use #[path = "../ext.rs"] mod ext; as a workaround to share code between the extensions.
This is intended as an example for discussion in d-e-s-o#166.
I think we can close this issue now. Let's just open a new one once we get to the point of thinking about separate crates and all the complications they entail again. |
How should the core extensions be published? In my opinion, they should be published the same way as
nitrocli
, both for usability and maintainability reasons. So I see three options:nitrocli
and all core extensions as separate crates on crates.io. This is how I understand our current approach.nitrocli
crate (maybe behind feature flags) and release them together withnitrocli
. This might be easier to maintain than separate crates, but then we wouldn’t really need the extension mechanism any more.The text was updated successfully, but these errors were encountered: