lance-format / lance-format/lance

What things should be in the lance public API?

Open
#3,864 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Rust
Stars
7.1k
Forks
852
Avg merge
3d 18h
Merged PRs (30d)
272

Description

Clearly defining a public API for the lance crate can make it easier for us to have stable releases because we can know what to count as a breaking change. It will also make lance easier to use as I think it is awkward at the moment that users need to add imports to lance_io, lance_encoding, etc.

In my head, I think the way that the lance library should work, is that everything that can be done with a Dataset can be done with lance imports alone.

Currently, this means we would need to re-export a few things:

  • There are a lot of types we'd need to re-export to support training and creating indices. Should we re-export these or should lance_index be considered a "top-level" package that adds capabilities onto lance?
  • I think we should probably re-export arrow_array and arrow_schema as we use those types throughout our public API
  • Should we re-export datafusion? There are a few public APIs that create plans or consume datafusion expressions that could benefit from this..
  • Should we re-export object_store?
  • I think we should examine dataset's API and see if there is anywhere we are depending on minor crates like lance_table, lance_io, lance_core, lance_encoding, lance_linalg, etc. We should re-export rather than consider these top-level crates

Contributor guide

Open the contributing guide

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 reviewing the lance crate's Dataset API and tracing the public types it exposes from lance_index, arrow_array, arrow_schema, datafusion, object_store, and the other listed crates. Done means an agreed public-API boundary, including which types are re-exported or remain top-level packages, with the breaking-change implications recorded.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.