What is WPILib?¶
WPILib is the standard software library for programming FIRST® robots. It provides the classes and tools needed to control motors, read sensors, communicate with the Driver Station, and run autonomous routines across FRC® and FTC® via Systemcore.

WPILib is developed and maintained by a partnership between Worcester Polytechnic Institute (WPI), FIRST®, and volunteer developers from the community.
Which path are you on?
FTC with Systemcore
Use WPILib with Systemcore and Motioncore. Write your code in Java, Blocks, C++, or Python.
FTC SDK
Program a REV Control Hub or Expansion Hub with the FTC SDK. FTC Docs covers the hardware, wiring, setup, and programming.
FRC
Write your robot code in Java, Blocks, C++, or Python and run it on Systemcore. You’ll need a Windows computer for the Driver Station at competition.
FRC + FTC
Practice reading sensors, controlling motors, and writing drive code on an XRP desktop robot. You don’t need a competition robot to get started.
What WPILib Includes
Component |
Description |
FRC |
FTC |
|---|---|---|---|
Robot library |
Motor control, sensors, drive classes, kinematics |
✓ |
✓ (Systemcore) |
VS Code extension |
Project templates, deploy, build, vendor manager |
✓ |
✓ |
Simulation framework |
Run robot code on laptop without hardware |
✓ |
✓ (XRP) |
Glass dashboard |
Real-time telemetry and field visualization |
✓ |
✓ |
Elastic dashboard |
Configurable driver dashboard (replaces Shuffleboard) |
✓ |
Planned |
PathPlanner / Choreo |
GUI path planning for autonomous |
✓ |
Planned |
OutlineViewer |
NetworkTables browser |
✓ |
✓ |
Language Comparison
Language |
Useful for |
Programming style |
Notes |
|---|---|---|---|
Java |
Teams choosing a text-based language |
Statically typed |
Uses classes and explicit type declarations |
Blocks (Blockly) |
Teams that prefer visual programming |
Graphical blocks |
Generates Python code |
C++ |
Teams with C++ experience |
Statically typed |
Available in the desktop environment only |
Python |
Teams that know Python or want to learn it |
Dynamically typed |
Uses indentation to group code |
Tip
Java, C++, and Python use similar APIs. Class names and method names are kept identical or very close across Java, C++, and Python.
Development Environments
Write code on your computer with a desktop editor, or use an OnBot editor in your browser. OnBot runs on Systemcore and does not require a local editor installation.
Desktop Environment: Java, C++, Python
Desktop
All three languages use VS Code as the IDE, with the WPILib extension providing project templates, build tools, simulation, and vendor library management. Works on Windows, macOS, and Linux.
Feature |
Java |
C++ |
Python |
|---|---|---|---|
IDE |
VS Code |
VS Code |
VS Code |
Build system |
GradleRIO |
GradleRIO (open to change) |
More integrated experience |
Desktop simulation |
✓ |
✓ |
✓ |
Offline install |
✓ |
✓ |
✓ |
Deploy |
USB or Wi-Fi to Systemcore |
USB or Wi-Fi to Systemcore |
USB or Wi-Fi to Systemcore |
Tip
Python install experience: WPILib is actively working to provide a more integrated Python setup, reducing the number of separate steps compared to Java/C++. C++ build system: GradleRIO is the baseline; transitioning to an alternative build system is possible depending on community contributions.
OnBot Environments: Blockly, Java, Python, LabVIEW
OnBot (Browser-based)
OnBot environments run entirely in the browser, no local installation required. Code is written, saved, and deployed directly on the Systemcore. Supports multiple saved Workspaces with a Deploy button to choose which one runs.
Feature |
Blockly |
Java |
Python |
LabVIEW |
|---|---|---|---|---|
Editor |
Block visual editor |
VS Code-derived |
VS Code-derived |
Graphical (browser) |
Backed by |
Python |
Java |
Python |
LabVIEW |
Desktop install |
None required |
None required |
None required |
None required |
Multi-user |
Single-user (under investigation) |
Single-user (under investigation) |
Single-user (under investigation) |
Single-user (under investigation) |
Warning
C++ is not supported in OnBot environments. The browser-based toolchain does not provide a good enough C++ experience to ship. Use the desktop VS Code environment for C++ development.
OnBot notes: Currently planned as single-user access (multi-user being investigated). Supports multiple saved Workspaces with a Deploy button to select which one runs on the Systemcore. Simulation is not planned for OnBot environments.
FTC Legacy (REV)
FTC Legacy (REV)
Teams using the REV FTC SDK with OnBot Java (browser-based) or Android Studio. Documented at ftc-docs.firstinspires.org.
FTC Legacy (REV)
Visual block-based programming via the FTC SDK OnBot interface. Documented at ftc-docs.firstinspires.org.
Build and Deploy Comparison
Feature |
Desktop (VS Code) |
OnBot (Java / Python / Blockly / LabVIEW) |
FTC Legacy (REV) |
|---|---|---|---|
Languages |
Java, C++, Python |
Java, Python, Blockly, LabVIEW |
Java, Blocks |
C++ support |
✓ |
✗ Not supported |
✗ |
Build system |
GradleRIO |
On-device (browser) |
FTC SDK / Gradle |
Deploy |
USB or Wi-Fi to Systemcore |
Deploy button in browser (Workspace-based) |
ADB over USB or Wi-Fi |
Simulation |
✓ Full desktop sim |
✗ Not planned |
✗ None |
Offline install |
✓ |
N/A, runs on Systemcore |
✓ |
Multi-user |
N/A |
Single-user (under investigation) |
N/A |
Driver Station |
_FIRST_ DS (Windows, Mac, Linux) |
_FIRST_ DS (Windows, Mac, Linux) |
Driver Hub / phone |
Note
Only the Windows Version of the _FIRST_ DS is competition legal
Dashboards
Dashboard |
Status |
Best for |
|---|---|---|
Elastic |
✓ Current, recommended |
Competition driver dashboard. Highly configurable. |
AdvantageScope |
✓ Current, recommended |
Log review, 3D field visualization, mechanism replay. |
Glass |
✓ Current |
Built-in simulation UI and lightweight telemetry. |
Vendor Libraries
Hardware vendors (REV, CTRE, etc.) ship WPILib extension libraries that add support for their specific motor controllers, sensors, and accessories. In addition, software vendors (PhotonLib, PathPlannerLib, etc.) ship libraries to support autonomous routines, trajectory and vision. They are installed per project via the VS Code Dependency Manager and do not carry over on project import.
REVLib: SPARK MAX, SPARK Flex
Phoenix 6: Talon FX, CANcoder
PathplannerLib: auto trajectories
PhotonLib: PhotonVision cameras
Limelight: Limelight cameras
Path Planning
FRC and FTC + Systemcore
GUI tools for drawing autonomous paths. Both generate trajectory commands that slot into command-based robot programs. PathPlanner is more beginner-friendly; Choreo optimizes for time.
FTC Legacy (REV)
Libraries for generating autonomous paths and trajectories. RoadRunner focuses on time consistency, while Pedro Pathing focuses on maximizing speed.
Shared Concepts Across Programs
These programming concepts are identical whether you are writing FRC, FTC Systemcore, or XRP code.
Proportional-Integral-Derivative feedback loop for precise motor velocity and position control.
Track robot position on the field using encoder and gyro data. Used for autonomous navigation.
Command-based programming uses a state machine model: subsystems, commands, and triggers.
WPILib includes built-in AprilTag detection for field localization and target tracking.
DifferentialDrive, MecanumDrive, and swerve kinematics classes work identically across all platforms.
WPILib Java code uses standard Java: classes, interfaces, lambdas. No framework-specific syntax to learn separately.
Source Code and API Docs
Full Javadoc for WPILibJ classes and methods.
Doxygen documentation for WPILibC.
RobotPy documentation for Python-based robot programs.