tvkitchen / countertop

The entry point for developers who want to set up a TV Kitchen.
https://tv.kitchen
GNU Lesser General Public License v3.0
6 stars 2 forks source link

What should the TV Kitchen entry point be? #66

Closed slifty closed 3 years ago

slifty commented 4 years ago

Discussion

What do you want to talk about?

First: @chriszs has started working on a Docker entry point (πŸŽ‰) over at #54, and we should continue that line of exploration to think a bit about how people are going to run a copy of TV Kitchen.

We should think about what we want to do for the short term, what we want to support for the long term, and what we want to document as the "recommended" way. Note that we can support more than one deployment technique.

Some options as I see them right now:

  1. git clone of the tv-kitchen repository and following configuration steps.
  2. Docker container (e.g. #54) along with configuration steps.
  3. A tvk command line tool (e.g. tvk start -c config.json or whatever).
  4. An npm package that people can import into their own code base.

Some of this came up in dialogue around #65, since some of the appliance installation approaches might have relied on a modification of a package.json (we are likely NOT going to be following those approaches).

Relevant Resources / Research

None for now, though I know there must be a ton out there about this issue.

chriszs commented 4 years ago

A couple projects I've done have followed a pattern of script -> API -> CLI -> Docker, where the script is an intermediate stage, later refactored to a CLI sitting on top of an API, installable via npm or npx and then Dockerized.

chriszs commented 4 years ago

An additional consideration: Okay, so you have your daemon. Let's say it has a basic CLI focused on providing file-based configuration. Do you also want a separate configuration CLI that acts as a client once you have a configuration store? Or is that the same CLI?

reefdog commented 4 years ago
  1. A tvk command line tool (e.g. tvk start -c config.json or whatever).

So presumably what this might do is create and fill a local instance from a template. (Also presumably another way to get that template would be to just clone it directly from GitHub rather than use the CLI tool.) That template would have the main tv-kitchen repo (this one, call it TVK core) as a dependency.

That's kind of the model I was imagining, personally.

chriszs commented 4 years ago

Oh, interesting! So like Yeoman?

reefdog commented 4 years ago

Yeoman. Now there's a name I've not heard for a long time. A long time.

But, yes, kind of? Basically the architecture I'm assuming is that the unique footprint of an individual TV Kitchen installation should be as small as possible, mostly config files, with TV Kitchen core, appliances, etc being imported as dependencies.

(Sidebar: Custom appliances would either be installed directly from GitHub or via npm, or even defined directly in the installation β€” src/appliances? β€” if the user didn't want to bother with breaking it out. We should/would encourage and document, but not require, users posting appliances to GitHub and possibly publishing to npm so the rest of the community could benefit.)

So the user could create an "installation" by manually creating all the necessary config files and composing the package.json, but we could also provide a starter template that users could get by cloning the template from GH or, if we decide it's worth it, a CLI tool.

slifty commented 4 years ago

There's some discussion in #65 that is related to this question (see this comment)

slifty commented 3 years ago

I think this issue is a wrapped up now. We have recipes that show how to create TVK instances (those recipes could be considered entrypoints, but at the very least they show how the code level entrypoint is the Coutnertop)