Contributing to FiftyOne#
FiftyOne is open source and built by contributors like you. Whether you’re fixing a typo, adding a feature, or building a plugin, every contribution makes FiftyOne better for everyone.
Note
Check out the FiftyOne GitHub repository to get started, or join our Discord community to connect with other contributors.
Ways to contribute#
There are many ways to contribute to FiftyOne, from writing code to improving documentation. Choose the path that best matches your skills and interests:
Report bugs & request features
Found a bug or have an idea for a new feature? Open a GitHub issue to let us know. Quality bug reports and well-thought-out feature requests are incredibly valuable.
Contribute code
Fix bugs, implement new features, or improve existing functionality. Our codebase is Python-based with a TypeScript frontend, and we welcome contributions of all sizes.
Improve documentation
Help make FiftyOne easier to use by improving our docs. Fix typos, add examples, write tutorials, or translate content. Great docs make great software.
Build plugins
Extend FiftyOne's capabilities by creating plugins. Share your integrations, custom panels, and workflows with the community.
Contribute to the App
Help improve the FiftyOne App, our TypeScript frontend. Enhance the user interface, add new visualizations, or improve performance.
Help the community
Answer questions on Discord, help triage issues, review pull requests, or share your FiftyOne workflows and tutorials with others.
Getting started#
Ready to make your first contribution? Follow these steps to set up your development environment:
Follow these steps to contribute to the FiftyOne SDK (Python):
Step 1: Fork and clone
# Fork https://github.com/voxel51/fiftyone on GitHub...
# Then clone it locally
git clone https://github.com/YOUR_USERNAME/fiftyone.git
cd fiftyone
Step 2: Install in development mode
# Install FiftyOne as an editable package with pre-commit hooks
bash install.sh -d
Step 3: Add FiftyOne to your PYTHONPATH
export PYTHONPATH=$PYTHONPATH:$(pwd)
Tip
Add this to your shell profile to make it permanent.
Step 4: Create a branch and make changes
# Create a branch from develop
git checkout develop
git checkout -b feature/my-feature-branch
# Make changes...
Step 5: Run unit tests locally
# Run tests locally to verify your changes
pytest tests/unittests
Step 6: Submit a pull request
git push -u origin feature/my-feature-branch
# Open a PR targeting the develop branch on github.com...
Refer to the contributing guide and style guide for complete guidelines.
Follow these steps to contribute to the FiftyOne App (TypeScript):
Step 1: Fork and clone
# Fork https://github.com/voxel51/fiftyone on GitHub...
# Then clone it locally
git clone https://github.com/YOUR_USERNAME/fiftyone.git
cd fiftyone
Step 2: Install in development mode
# Install FiftyOne as an editable package with pre-commit hooks
bash install.sh -d
Step 3: Add FiftyOne to your PYTHONPATH
export PYTHONPATH=$PYTHONPATH:$(pwd)
Tip
Add this to your shell profile to make it permanent.
Step 4: Create a branch and make changes
# Create a branch from develop
git checkout develop
git checkout -b feature/my-feature-branch
# Make changes...
Step 5: Test changes locally
Start the App server in development mode:
# Start client server with hot reloading
cd app
yarn dev
# Start backend server manually (so you have access to stack traces)
python fiftyone/server/main.py
Then launch the App via Python SDK:
import fiftyone as fo
import fiftyone.zoo as foz
dataset = foz.load_zoo_dataset("quickstart")
session = fo.launch_app(dataset)
Run App tests locally:
yarn test
Step 6: Submit a pull request
git push -u origin feature/my-feature-branch
# Open a PR targeting the develop branch on github.com...
Refer to the App contributing guide for more information.
Follow these steps to contribute to the FiftyOne documentation:
Step 1: Fork and clone
# Fork https://github.com/voxel51/fiftyone on GitHub...
# Then clone it locally
git clone https://github.com/YOUR_USERNAME/fiftyone.git
cd fiftyone
Step 2: Install with docs dependencies
# Install FiftyOne as an editable package with pre-commit hooks
bash install.sh -d
# Install docs dependencies
pip install -r requirements/docs.txt
Step 3: Add FiftyOne to your PYTHONPATH
export PYTHONPATH=$PYTHONPATH:$(pwd)
Tip
Add this to your shell profile to make it permanent.
Step 4: Create a branch and make changes
# Create a branch from develop
git checkout develop
git checkout -b docs/my-docs-branch
# Make changes in docs/source folder...
Step 5: Build the docs locally
bash docs/generate_docs.bash
Notable flags: -c (clean build), -f (fast build), -s (static only).
Step 6: Submit a pull request
git push -u origin docs/my-docs-branch
# Open a PR targeting the develop branch on github.com...
Refer to the Docs README for more information.
Follow these instructions to build and share FiftyOne Plugins:
Step 1: Initialize a new plugin
fiftyone plugins create my-plugin
This creates a new directory for your plugin within your plugins directory
(default ~/fiftyone/__plugins__).
Step 2: Develop your plugin
Edit fiftyone.yml (manifest) and __init__.py (code) in your
plugin’s directory.
Step 3: Test your plugin
Launch the FiftyOne App and test your plugin’s operators and panels.
Step 4: Share with the community
Publish your plugin to your own GitHub repository and then publish it to the Plugins Ecosystem.
Refer to the developing plugins and contributing plugins guides for more information.
Good first issues#
Looking for something to work on? These issues are great for newcomers:
Good first issues - perfect for first-time contributors
Help wanted - we’d love your help on these
Documentation - help make FiftyOne easier to use
Our amazing contributors#
FiftyOne would not be possible without the contributions of our amazing community. Thank you to every developer who has submitted a pull request, reported a bug, or helped improve the project. Your contributions make FiftyOne better for everyone—and now you can be part of this growing community of developers!
Need help?#
Don’t hesitate to ask for help! The FiftyOne community is friendly and welcoming:
Discord: join our Discord community for real-time chat with maintainers and other contributors
GitHub Discussions: ask questions on GitHub Discussions
Email: reach out to us at support@voxel51.com