Use this one weird trick to reuse code from last year's robot

Your team worked really hard this summer/fall on that sick* autonomous, or a hydraulic motor cooler**, and want to use it in your 2025 robot. This post will let you in on the (not so) secret trick to letting your team reuse code (and mechanical designs) from previous years.

R303 of the 2024 Game and Season Manual says:

Create new designs and software, unless they’re public. ROBOT software and designs created before Kickoff are only permitted if the source files (complete information sufficient to produce the design) are available publicly prior to Kickoff.

That’s the 2024 manual, what about 2025? We do know that this area of the game manual will change a bit with the announced changes*** to mechanism reuse. As described in the post, it seems to only apply to mechanism reuse. Veteran FRC odds-makers****
are betting***** that you’ll see a similar R303 again this Saturday when you enter the magic password******.

So, if you worked out your AprilTag processing******* this summer/fall, and want to use it on this year’s robot, you need to publish the design before kickoff.

What does publish mean? The examples in the rules all say:

  • post it in a generally accessible public forum
  • make the code available to all Teams

Do you really want to get into an argument with the robot inspector over where the design was posted? If you post it right here on CD, no self respecting RI will challenge you.

A story. Several years ago at a competition I was asked to consult on a robot’s control system issue. We spent quite a bit of time going through the source code of the robot to see what the issue was. Reading the source code, it was clear to me that the code represented many years worth of work.********

After the competition, I took a look around for the team’s code, and wasn’t able to find it online anywhere. That’s not right.

The concept behind this rule is that the novel design work product represents the work of the current team. Sharing of designs and source code helps level the playing field and increases the quality of robots from all teams. It deliberately reduces the (big) advantage that veteran teams have over new ones. This sharing is a big reason why FRC robots do more amazing things each year. I like amazing. You’d like it too if you watched 400 matches a year.

Finally, a personal note. I love reading team’s robot code, and would love to see more published code to look at.

So, there you go. Publishing your code and designs = good. Go do it now.

* Is “sick” still hip slang, or does it make me sound old?
** Check out R203 (g) please
*** 2025 Rule Updates
**** Odds makers at work:


***** Not really
****** No, I don’t know the password
******* 22 tags?! 2025 AprilTag Information
******** My credentials as code archaeologist: recently reviewed (very carefully) a pull request modifying code from 1999. I’m sure there are others on the forum who can beat this date.

27 Likes

2025 Rule Updates Blog Post
Work Prior to Kickoff

The largest change we are making is re-imagining R302, regarding what work may be done before Kickoff. The rule in its current form has served us well for a long time, but in today’s program with the availability of COTS parts, the prevalence of 3D printing, and more, it was time to revisit it. The new R302 will only prohibit “MAJOR MECHANISMS” created prior to Kickoff. This should allow teams to reduce waste by re-using everything from bumper brackets to custom circuit boards to whole swerve modules, rather than needing to reproduce parts that they already have. We encourage teams to find ways to use this new flexibility to optimize their resources while maintaining the student experience of designing and constructing a new robot each season.

For mechanical stuff, it’s unclear how this rule interacts with R303. If you design something preseason you need to release it, unless you also manufacture it pre season in which case you can use it without releasing it? Kind of seems like we need to comply to rules that say to do things before a certain date that are released after the date…

1 Like

I have also been confused by this recently. Here’s how I understand it currently, if anyone wants examples:


TL;DR:
R302 is about re-use of parts; R303 is about open-sourcing new designs/softwares (not physical parts). In 2024, only COTS parts were re-usable, roughly speaking. With the 2025 Rule Updates, limited custom designs are re-usable. So a device could be made with private designs in off-season (assuming it’s an unregulated period, meaning no R303), and re-used (part, not design) in-season without open-sourcing.


2024 Rules
In 2024:

  • R302 prohibits fabricated items “created before Kickoff” unless they are item types R302-A – to – R302-E (denote those Allowed Exceptions).
  • R303 prohibits robot software and designs “created before Kickoff” if they are not publicly available prior to Kickoff.
  • I101 defines a MAJOR MECHANISM as something that addresses “at least 1 game challenge”.

2024 Example 1:

Team A makes a custom design that is not a MAJOR MECHANISM nor an Allowed Exception in off-season. They do not publish the software/designs before Kickoff. They use these designs to fabricate it in-season.

This is a design created before Kickoff that is not publicly accessible.
This would violate R303.

2024 Example 2:

Team A makes a custom design that is not a MAJOR MECHANISM nor an Allowed Exception in off-season. They do not publish the software/designs before Kickoff. They use these designs to fabricate it off-season and re-use the physical item in-season.

This is an item created before Kickoff and not an allowed exception.
This would violate R302.

2025 “Rules”
2025 rules aren’t available, but via Rule Updates and evergreen rules, the following is best-known:

  • R302 “will only prohibit ‘MAJOR MECHANISMS’ created prior to Kickoff” ( → Allowed Exceptions = non-MAJOR MECHANISMS)
    • 2024: R302 prohibited fabricated items “created before Kickoff” unless they are item types R302-A – to – R302-E (denote those Allowed Exceptions).
    • 2025?: R302 prohibits fabricated items “created before Kickoff” unless they are non-MAJOR MECHANISMS (denote those Allowed Exceptions)
  • R303 prohibits robot software and designs “created before Kickoff” if they are not publicly available prior to Kickoff.
  • I101 defines a MAJOR MECHANISM as something that addresses “at least 1 game challenge”.

Now, Team A’s custom physical design that is not a MAJOR MECHANISM is now an Allowed Exception.

2025 Example 1:

Team A makes a custom design that is not a MAJOR MECHANISM and is thus an Allowed Exception in off-season. They do not publish the software/designs before Kickoff. They use these designs to fabricate it in-season.

This is a design created before Kickoff that is not publicly accessible.
This would violate R303.

2025 Example 2:

Team A makes a custom design that is not a MAJOR MECHANISM and is thus an Allowed Exception in off-season. They do not publish the software/designs before Kickoff. They use these designs to fabricate it off-season and re-use the physical item in-season.

This is an item created before Kickoff but is an allowed exception.
This would NOT? violate R302? (and R303 doesn’t apply?)


Blue Boxes
As I read them, the blue boxes don’t offer solutions either. R302 currently has examples of both in-season and off-season time periods, the two halves of “before Kickoff.”


Hopefully I’m interpreting the rules correctly and in their entirety; the logic confuses me a bit.

Obviously, the ‘spirit of FRC’ says release it anyways, but agree that is confusing and needs clarification.


Links:

The rules are additive. If you design something before the season and want to use it, publish it. If that design is not a major mechanism, you’re also welcome to use the physical parts on your robot, but technically you still need to open-source it. R302 and R303 must both be followed, just like any other rule in the manual.

Now, you’re welcome to walk up to 2nd-year teams at competitions and ask them if they designed their chassis in 2024 and open-sourced it before use in 2025, but I think everyone is going to agree that that would be unproductive. Just follow the rules are written and help inform others when you can.

2 Likes

I don’t think it’s exactly clear. One could argue that R303 doesn’t apply because the design is made and kept in-offseason (never used in-season). Only the part, not the design, is used in-season → R302. R302 also doesn’t state re-use from a prior-season (meaning enacting R303), just creation prior to Kickoff.

At the end of the day though, I completely agree that R303 and R302 should be followed as best as possible and that it helps everyone involved. I’m only bringing this up because I think addressing this would make sure people don’t try and ‘get around it.’

R303 doesn’t say “in-season” or “off-season”. It says “before KICKOFF”, which isn’t ambiguous.

2 Likes

Okay, so then a team makes a design “before Kickoff”, fabricates it “before Kickoff”, but never uses the design (only the part, which is different*) after Kickoff.

Why then would would the game manual apply to this “before Kickoff” design? It is not being used (via first note/asterisk), thus it’s ‘permissibility’ is irrelevant.** It is also not subjected to a previous year’s R303 restriction because – by viewing it as binary before/after Kickoff – it would have happened after Kickoff of that year, meaning no restrictions apply as I understand it.

Again, the only reason I’m making these convoluted arguments/loopholes is because I think they’re arguable and should be ‘patched’ to prevent future issues, not because I stand to gain from them nor because I think it’s the best step forwards.

*Unless the game manual specifies otherwise?

** If it is deemed relevant and the first note/asterisk is held, that would mean that any not-used-‘in-season’ software/designs are still restricted by R303. That could mean any and all ‘off-season’ work, be it relevant or not must be made publicly accessible. There is no ‘intended for current/next season’ clause. There would then be a conflict with post-Kickoff of the prior year and pre-Kickoff of the current year.

If I design and manufacture a fancy new bumper mount before kickoff, then use those parts in season, I am inherently making use of the design work I did before kickoff, even if they are already manufactured. To try and separate the design of a part from its physical existence makes no sense at all, its design an integral part of its existence.
I think it’s fairly unambiguous that you need to release the design of any custom part you designed before kickoff that you plan to use, regardless of if it was already manufactured.

2 Likes

I’m still unsure if this is true or not. I understand it could be annoying to still be ‘wrong’ and ‘resistive’, but frankly, I am genuinely not sure. Hopefully the 2025 rules will make it clearer to me; it’s more a matter of personally pondering than being convinced now. (And I’m not involved in 2025, so it wouldn’t have effects on my end anyways.)

So I’ll concede to not drag on the discussion.

I do appreciate the responses though! Writing it out and hearing counterpoints has helped me understand the situation and both arguments more, so thanks! :slight_smile: