[RFC] [µTVM] Project API

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 :frowning: (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.