Skip to content

Varlink API #5

@pzmarzly

Description

@pzmarzly

ht's API is an RPC-style newline-delimited JSON sent over stdin/stdout. This reminds me strongly of varlink, an IPC standard used by systemd and podman (the docker alternative). The biggest difference is that varlink uses null-byte-delimited JSON rather than newline-delimited JSON, and usually uses Unix sockets instead of stdin/stdout (so that many clients can connect at once).

What could be gained?

  • Instead of maintaining a list of supported methods in project README, with "this method returns XYZ" / "this method doesn't return", you could maintain a varlink IDL file
  • Streaming support, so that clients don't have to poll getView
  • Error messages by setting the error field in reply JSON
  • varlink CLI and systemd-varlinkctl CLI may make scripting and debugging easier
  • Autogenerated correct clients in many languages
  • Introspection - every varlink server has to reply to GetInfo and GetInterfaceDescription messages. This makes it easy for clients to see if a server version is new enough to support some new methods.

Note

This is an opinionated suggestion, feel free to disregard.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions