oxidecomputer / oxidecomputer/humility

Rust library support for humility - starting with `humility tasks`

Open
#586 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
584
Forks
63
Avg merge
3h
Merged PRs (30d)
2

Description

Currently, humility is accessible only as a CLI. For some usecases, it would be useful to interact with humility directly in Rust.

Our manufacturing systems currently shell out to the humility CLI wherever required, relying string parsing and manual error handling. A Rust library interface would provide: 1) structured error types, 2) typed return values eliminating parsing, and 3) compile-time interface guarantees. These mirror the general case for "why Rust?". Manufacturing systems need to handle errors properly and run reliably over long periods - Rust would help here & avoid risk of reliance on uncommitted string interfaces in shell. Some usage would remain in shell, some would move to Rust.

Manufacturing tooling would effectively build an application layer on top of humility. Initial implementation of a Humility library would expose humility tasks (effectively a ping check, also useful for https://github.com/oxidecomputer/facade/issues/297) along with necessary initialization support (archive, probe) and any scaffolding. Additional commands can be added as needed.


Example issues in facade that may benefit from humility Rust library:

Humility usage in facade:

Example "humility application library" in DMAR Python:

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing CLI entry point for humility tasks and its archive and probe initialization paths. Use the linked facade issues and humility usage search as context for the library boundary. Done means a Rust library exposes humility tasks with the necessary initialization support and typed interfaces for callers.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.