Every path now has a page in this repository, so the whole navigation resolves locally; the private repository supplies fuller versions rather than the only copies. Drops the reference to the Geneva section, which no longer exists.
4.6 KiB
Contributing to LanceDB
LanceDB is an open-source project and we welcome contributions from the community. This document outlines the process for contributing to LanceDB.
Reporting Issues
If you encounter a bug or have a feature request, please open an issue on the GitHub issue tracker.
Picking an issue
We track issues on the GitHub issue tracker. If you are looking for something to work on, check the good first issue label. These issues are typically the best described and have the smallest scope.
If there's an issue you are interested in working on, please leave a comment on the issue. This will help us avoid duplicate work. Additionally, if you have questions about the issue, please ask them in the issue comments. We are happy to provide guidance on how to approach the issue.
Configuring Git
First, fork the repository on GitHub, then clone your fork:
git clone https://github.com/<username>/lancedb.git
cd lancedb
Then add the main repository as a remote:
git remote add upstream https://github.com/lancedb/lancedb.git
git fetch upstream
Setting up your development environment
We have development environments for Python, Typescript, and Java. Each environment has its own setup instructions.
Best practices for pull requests
For the best chance of having your pull request accepted, please follow these guidelines:
- Unit test all bug fixes and new features. Your code will not be merged if it doesn't have tests.
- If you change the public API, update the documentation in the
docsdirectory. - Aim to minimize the number of changes in each pull request. Keep to solving one problem at a time, when possible.
- Before marking a pull request ready-for-review, do a self review of your code. Is it clear why you are making the changes? Are the changes easy to understand?
- Use conventional commit messages as pull request titles. Examples:
- New feature:
feat: adding foo API - Bug fix:
fix: issue with foo API - Documentation change:
docs: adding foo API documentation
- New feature:
- If your pull request is a work in progress, leave the pull request as a draft. We will assume the pull request is ready for review when it is opened.
- When writing tests, test the error cases. Make sure they have understandable error messages.
Project structure
The core library is written in Rust. The Python, Typescript, and Java libraries are wrappers around the Rust library.
src/lancedb: Rust library source codepython: Python package source codenodejs: Typescript package source codenode: Deprecated Typescript package source codejava: Java package source codedocs/src: SDK reference, built with mkdocsdocs/web: the open-source pages of docs.lancedb.comdocs/web-tests: the tests the documentation's code examples are extracted from
Documentation
The open-source pages of docs.lancedb.com live in
docs/web, so a change to behaviour and the change to the page describing it
belong in the same pull request.
Preview them locally — this serves docs/web on its own, with no other checkout:
npm i -g mint # https://mintlify.com/docs/installation
cd docs/web && mint dev
This repository holds a page at every path the site publishes, so the whole navigation resolves locally. Enterprise pages exist here as open-source pages -- what the capability is, and what the embedded form does instead. A separate private repository supplies the fuller version of each, which replaces the page at the same path when the published site is assembled.
Two things to know before editing:
Code examples are not written into the pages. They live in real tests under
docs/web-tests/{py,ts,rs}, are extracted into docs/web/snippets/, and are
imported by the pages. Edit the test, then regenerate:
uv run docs/web-tests/mdx_snippets_gen.py -s docs/web-tests/py
An example that stops compiling fails the pull request that broke it.
Every heading carries an explicit {#anchor}. Those anchors are how the
Enterprise pages attach their additions to the right section, so they are
assigned once and never regenerated. Leave an existing anchor alone even when
you reword the heading above it; only new headings need a new one.
Release process
For information on the release process, see: release_process.md