dfinity / candid

Candid Library for the Internet Computer
Apache License 2.0
282 stars 79 forks source link

Adjust repo structure or description #59

Closed rossberg closed 4 years ago

rossberg commented 4 years ago

Currently specifically says only Rust implementation, is that still accurate?

nomeata commented 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.

rossberg commented 4 years ago

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?

nomeata commented 4 years ago

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.

rossberg commented 4 years ago

@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.

nomeata commented 4 years ago

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)?

rossberg commented 4 years ago

I don't mind deeper nesting, but fine by me as well. I'd spell it javascript, though.

chenyan-dfinity commented 4 years ago

Sounds good to me. I will have a PR for restructuring.

chenyan-dfinity commented 4 years ago

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?

nomeata commented 4 years ago

@rossberg ↑

rossberg commented 4 years ago

@chenyan-dfinity, yes, that would be appropriate then. Both IDL.md and IDL-Soundness.md should move here.