Closed rossberg closed 4 years ago
Ah, that reminds me of an ongoing discussion that we had while you were on vacation, and should delegate to you:
Should this repo become the “official” Candid repo, being the authorative repo to contain the spec, and implementions in different langauges that have some kind of official status? I.e. the Candid-Monorepo? Including the place for design discussions around Candid?
Or should the spec be it’s “own” thing, with its own candid-spec
repo, and this repo is but one among many repos that contain candid implementations.
Making this the central Candid repo makes sense to me. The name already suggests it is. If it's not, then we should rename it to candid-rust or something.
Were there arguments against?
I disliked blessing one particular implementation, because it dilutes the language-agnostic promise of Candid, it might make one particular implementation (possibly with bugs or idiocracies) canonical, it's easier to tell what discussions (bugs, PRs) are about the spec or the implementation, and it allows us to evolve both independently (having both in the same repo kinda requires changes to the spec to not be merged without changes to the code).
Yan had arguments for having them together; I forgot the details, and we agreed to let you decide.
@nomeata, you don't like monorepos, eh? 👍
Honestly, I don't feel strongly either way. I hear what you're saying, but maybe Candid is too small to be worth splitting up into per-lang repos. If we structure the implementations into a suitable subdir and have respective README disclaimers, then I think it would be fine if impls lag behind from time to time.
The current repo structure does not meet those requirements, though. All the Rust stuff should move into some implementation/rust subdirectory.
OTOH, if we do not go that route, then we should definitely rename this repo to something more specific.
So some change is needed either way. I have a minor preference for just having one repo, but with clear structure.
Sounds good to me.
More bike shedding :-): I dislike deep directory nesting. How about /spec
, /rust
, /js
(later /haskell
, maybe /test
for common test data)?
I don't mind deeper nesting, but fine by me as well. I'd spell it javascript, though.
Sounds good to me. I will have a PR for restructuring.
A related question: should we remove the spec doc from Motoko repo and move all spec related discussions here, or make the spec here to be a readonly mirror that is only used for rendering on the SDK website?
@rossberg ↑
@chenyan-dfinity, yes, that would be appropriate then. Both IDL.md and IDL-Soundness.md should move here.
Currently specifically says only Rust implementation, is that still accurate?