One open question is where well-known implementations of Project API servers should live. I see a couple of options:
O1. Place them in the tvm repo, probably under apps/microtvm
as is roughly done in PR 7653 (Project API not implemented there, but the code is moved where it would go).
O2. Create separate repositories for implementations.
I see a couple of benefits to putting implementations in the TVM repo:
- It’s easier to discover them
- It’s easier to keep them updated in case we make purposeful or accidental breaking changes
- Documentation can be consolidated with the TVM docs
But I see these drawbacks:
- We need to include unit/integration tests in the TVM CI. It may not always be possible to do this e.g. if a hardware-in-the-loop solution is required.
- The TVM docs are really hard to update
(we are working on this…but that’s the state of the world today).
It seems like essentially each implementation could choose.
- If they are able to provide sufficient test coverage in pure software (e.g. with QEMU or another emulator), I think we could definitely allow implementations to be checked-in to
apps/microtvm
. - We could consider a second tier for e.g. those that can’t provide CI coverage:
apps/microtvm/no-ci
- Finally, if the TVM development process is too burdensome, implementations could go in other e.g. GH repos, provide a README.md, and be linked from microTVM docs page.
- I don’t think we can offer CI coverage for these–it’s too hard to report results without e.g. a pinned submodule in TVM
- I don’t see why someone would maintain a TVM submodule rather than check in code directly (I could see a use case where these implementations have a stable and dev branch, but this seems a bit forward-looking right now).
Thoughts? I’m inclined to proceed with this framework if no one objects.