Contributing to MARSLib
Thank you for your interest in contributing to MARSLib! This framework is used by FIRST® teams worldwide to build championship-tier robots. Your contributions are a vital part of our collective journey of Discovery and Innovation.
Why Contribute?
Section titled “Why Contribute?”- 🤖 Impact FIRST® Teams - Your technical Innovation helps teams worldwide compete at the highest level.
- 🧠 Discovery - Master advanced control theory and simulation through active experimentation and Impact.
- 👥 Teamwork - Join an Inclusive community where we work together to solve complex problems.
- 🏆 Build Portfolio - Gain experience with championship-tier software and hardware systems.
- 🎉 Fun - Celebrate technical breakthroughs with a passionate group of robotics enthusiasts!
Quick Start
Section titled “Quick Start”- Set up your development environment (5 minutes)
- Find a good first issue to work on.
- Make your changes following our coding standards.
- Test thoroughly using our simulation framework.
- Submit a pull request with description.
Ways to Contribute
Section titled “Ways to Contribute”🐛 Bug Fixes
Section titled “🐛 Bug Fixes”Find and fix bugs in the framework. Check out our open issues for reported bugs.
✨ New Features
Section titled “✨ New Features”Add new capabilities to the framework. Start with a discussion to align on approach.
📚 Documentation
Section titled “📚 Documentation”Improve documentation, add examples, or create tutorials. Great for first-time contributors!
🧪 Testing
Section titled “🧪 Testing”Add test coverage or improve existing tests. We maintain 80% coverage for quality.
🎨 Examples
Section titled “🎨 Examples”Create example projects or code snippets showing how to use MARSLib features.
Development Workflow
Section titled “Development Workflow”📋 Pre-Submission Quality Checklist
Section titled “📋 Pre-Submission Quality Checklist”Before submitting a Pull Request, please verify your contribution matches our elite standards:
- Reading Level: Ensure all Markdown documentation tests at an 8th-grade reading level or lower. Use simple analogies.
- Zero-Allocation: No new
newkeywords in periodic loops or telemetry paths. - Validation: Code has been run through the
MARSBenchmarksuite or Dyn4j simulation tests. - Formatting: Run
./gradlew spotlessApplybefore committing.
Documentation Hub
Explore the framework conceptually or dig right into tutorials.
🚀 Zero to MARS
Start here! Configure Vendordeps, construct your first RobotContainer, and scaffold subsystems automatically with our VS Code extension.
🏗️ Core Architecture
Learn the IO Layer AdvantageKit abstraction pattern, thread-safe fault management, and strict zero-allocation loop rules.
🦾 Mechanism Abstraction
Implement RotaryMechanismIO and LinearMechanismIO to dramatically speed up standard mechanism development.
🎮 Control Theory
Dive into Shoot-on-the-Move (SOTM) math, EliteShooterMath, Feedforwards, and WPILib SysId tuning integration.
🖥️ Simulation & Telemetry
Configure Dyn4j 2D physics integration, AdvantageScope 3D field layouts, and automated GitHub log offloading.
🤖 AI Agents & Tooling
Install the MARSLib VS Code extension to access .agent skills, automate subsystem scaffolding, and run championship-grade logic audits.
📻 SysId Characterization
Automated system identification for calculating perfect feedforward constants passively during real matches.
🛡️ Fault Resilience
Discover the military-grade two-layer fault system, real-time driver alerts, and structural hardware fallbacks.
🔧 Troubleshooting
Is the CAN bus dropping out? Robot not driving? Compilation errors? Follow our mechanical issue triage wizards.
♿ Accessible by Design
Read our commitment to inclusive engineering. Learn how we use AI agents and Pa11y to enforce WCAG 2.1 AA DOM parity.
Getting Started Guides
Section titled “Getting Started Guides”- Development Setup - Set up your development environment.
- Coding Standards - Follow our code style and patterns.
- Testing Guide - Write tests using our Digital Twin philosophy.
- Documentation - Contribute to documentation.
- Code Review - Understand our review process.
Community Guidelines
Section titled “Community Guidelines”🤝 Inclusion & Respect
Section titled “🤝 Inclusion & Respect”Treat all contributors with respect and kindness. We embrace our differences and work to ensure MARSLib is a welcoming environment for everyone.
💬 Open Teamwork
Section titled “💬 Open Teamwork”Don’t hesitate to ask for help or share ideas. We are stronger when we work together and learn from each other’s experiences.
📖 Follow Patterns
Section titled “📖 Follow Patterns”Study existing code before making changes. Consistency is key to maintaining a high-impact, reliable framework.
🧪 Validation Through Discovery
Section titled “🧪 Validation Through Discovery”Our Digital Twin testing approach ensures quality. Always use the simulation environment to discover potential issues before they reach the real robot.
📝 Document Changes
Section titled “📝 Document Changes”Update documentation alongside code changes. Keep docs in sync with code.
Recognition
Section titled “Recognition”Contributors are recognized in:
- GitHub Contributors list.
- Release notes for significant contributions.
- Team meetings for major features.
License
Section titled “License”By contributing to MARSLib, you agree that your contributions will be licensed under the MIT License.
Need Help?
Section titled “Need Help?”- 📖 Documentation
- 💬 GitHub Discussions
- 🐛 Bug Reports
- 📧 Email the maintainers.
Ready to start? Begin with our Development Setup Guide and join us in building amazing FRC software!