Modules #
Ever wondered why there are so many modules and repositories in the Road Runner ecosystem? It’s all to do with dependencies. The fewer dependencies a module has, the more places and situations it can be used. For Road Runner, the main dependency to avoid is the FTC SDK. The SDK integrates heavily with the Android libraries, making it difficult to run on a non-Android machine. But even beyond those practical concerns, it’s good to keep conceptually separate bits of code in different modules. Road Runner and FTC Dashboard may have great synergy when used together, but the core functionality of Road Runner is totally independent of FTC Dashboard so neither of those modules depend on each other.
The major modules and their dependencies are shown in this diagram:
flowchart TD dash[FTC Dashboard] --> dashCore actions[Road Runner Actions] --> rrCore[Road Runner Core] actions --> dashCore[Dashboard Core] quickstart{{Road Runner Quickstart}} --> rrFtc[Road Runner FTC] rrFtc --> actions rrFtc --> rrCore rrFtc --> ftcSdk[FTC SDK] rrFtc --> dash quickstart --> ftcSdk quickstart --> dash dash --> ftcSdk meepmeep[MeepMeep] --> actions meepmeep --> rrCore
The quickstart node has a different shape because it isn’t a fixed module in the same way that the others are. It’s a template that teams take and customize to fit their needs.