WPILib
Aug 01, 2018 Written by Kevin O'Connor, Robotics Engineer, FIRST Robotics Competition.
Perhaps it would be nice to have a Frank blog post about the WPILib team, the history, who they are, how they work, how to report bugs or feature requests, etc.
-Brian Rozmierski
Great questions, Brian! As the FIRST Staff member responsible for managing the FRC Control System team, Frank asked me to share a little bit about the WPILib team. Before anyone TL;DRs or falls asleep, there may be a special opportunity tucked away at the end of this blog post (no, it’s not a game hint!).
History
WPILib was originated in 2005 by WPI professor Brad Miller as a way to simplify program development for the IFI robot control system being used in FRC at the time. The intent was to abstract away some of the lower level details of the hardware (interrupt routines, voltage measurements and conversions, communications details, etc.) and allow students to focus on solving higher level problems. When National Instruments (NI) was working on the cRIO control system for the 2009 FRC season, WPILib was identified as a good supplement to provide support for teams programming in C++ and became an official part of the system. A year later, Java support was added as a result of work done by WPI students working on a senior project (MQP). Since then WPILib has continued to grow and evolve as the primary library used by C++ and Java teams in FRC.
Who Are They?
“Modern” (cRIO and later) WPILib development was originally done by Brad and a small number of WPI students with additional support on the initial release from DEKA, BAE Systems, NI (especially Joe Hershberger), and a few other volunteers. As WPILib has migrated closer to an Open Source model, we have assembled a larger group of “Core Developers” who handle most of the development of the library and tools. These folks are a combination of current and former WPI students and FRC community members who were asked to become Core Developers based on consistent or significant contributions to the libraries. The current list of Core Developers (alphabetical):
FIRST: Kevin O’Connor
WPI (current): Ryan Benasutti, Sam Carlberg, Arjun Gandhi, Evan Gilgenbach, Ryan Lapoint, Brad Miller, Austin Shalit, Griffin Tabor
WPI (alumni): Jonathan Leitschuh, Patrick Plenefisch, Fred Silberberg
Volunteer: Jaci Brunning, Thad House, Peter Johnson, Joe Ross, Dustin Spicuzza, Tyler Veness
You can see a video depicting a graphical history of WPILib development from 2012 to 2018 here. A full list of contributors can be found on the Contributors tab of the Github repos for each project: https://github.com/wpilibsuite/allwpilib/graphs/contributors
Additional development support is also provided by Cross The Road Electronics (CTRE) and NI as members of the Control System team.
How Do They Work?
The WPILib development team uses a few different tools/methods for communication and coordination:
- Control System Team calls: Throughout the year members of the FRC Control System team (FIRST, NI, CTRE, WPI) have weekly calls to track status on Control System development
- WPILib Developer Slack: A Slack Workspace set up to allow WPILib Core Developers to communicate with each other and with other members of the CS Team. Note: This Slack is also connected to a WPILib Gitter that community members can use to talk with the WPILib team.
- GitHub: GitHub Issues and PRs are used to communicate regarding specific issues or changes
Each year we brainstorm and collect ideas for improvements in the period shortly after Championship, implement over the summer, test in the fall, and prep to ship by Kickoff. During the FRC build and competition seasons, changes are limited to bug fixes we believe are impacting teams and unlikely to break existing functional code.
Where is the Code?
How Do I Report Bugs?
How Do I Contribute?
Yes, the three headings in a row is on purpose! The answer to all of these questions is GitHub! The WPILib developers have code for all of the WPILib libraries and tools contained in a single GitHub Organization. The code for all of the robot libraries (including CameraServer/cscore, NetworkTables/ntcore, and WPIUtil) is contained in the “allwpilib” repository. Code for other tools such as SmartDashboard, Shuffleboard, RobotBuilder, OutlineViewer, and more are contained in their own repositories inside the organization.
To report bugs, or request features, open an Issue in the appropriate repository on GitHub. Want to learn more about GitHub Issues? See GitHub’s Issues documentation
Contributions to the library are definitely welcome! To see what types of contributions we may be looking for, and to learn more about contributing, see the Contributing.md file in the allwpilib repository.
As mentioned above, WPILib developers also monitor the WPILib Gitter if you’re looking to ask questions, get pointers on Issues that you may be able to help with, etc.
Special WPILib Alpha Test
Way back up at the top of this blog, I promised a special opportunity for those that stuck around to the end. For the 2019 season, C++ and Java development are moving from Eclipse (with deploy based on Ant scripts) to Microsoft’s VS Code (with deploy based on Gradle via GradleRIO). Given this significant change, we wanted to provide an opportunity for all teams to be able test the new IDE and tooling. The alpha is open to everyone to try, and will use existing 2018 core libraries (wpilib, ntcore, cscore, etc), meaning it is compatible with your robots, existing code and vendor libraries (like NavX, Phoenix, etc). More info about the alpha test, and instructions on how to get started with the new VS Code system can be found on ScreenSteps.
Comments
Alpha Test
Thank you very much for this opportunity. When will applications be available for beta testing? How does one apply?
Alpha and Beta Tests for 2019 Control System
More info about the alpha test, and instructions on how to get started with the new VS Code system can be found on ScreenSteps. Beta Test applications are expected to be posted in early September and will be announced on this Blog and in the Team Email Blast. Thanks! Jamee
About Contributing
What I'm looking to contribute to, is WPILib's documentations & example code. I want to write a Java style guide for command-based programs. What I think could use improvement is not the WPILib structure and implementation but instead, the examples of the usage, which I think can make teams learning the command-subsystem model better understand it, and follow the rules of OOP more carefully. I could make a PR to Github with the example code, but I wonder about if and how I can contribute to the ScreenSteps documentations. Are the source for this publicly available, and if so, do you accept contributions?
(P.S.: of course, since Java and C++ are similar, anything I'd write would be easy to apply & convert to C++, I believe).
Thanks in advance,
Yuval
About Contributing
Hi Yuval.
The source for Screensteps is not public but we will happily convert from a Word or Google doc. We recommend you start with a GitHub issue to explain in more detail and then we can point some of the developers at it for comments before you start working.
Thanks!
Jamee
Using WPI lib for non-FIRST applications
Hello - I am a summer intern (going into my Senior year at my University) and am working on an automation project for my Internship. I am wondering if there are rules guiding the use of WPIlib outside of FIRST Robotics? I would like to use WPIlib and other FIRST software tools that I've been working with for a few years on our FRC team for an application I am developing and writing for my summer intern project.
Hi Erica,
Add new comment