Dairy is an ecosystem of open source FTC libraries.Dairy’s libraries are designed to be fairly pick and choose, allowing users to
use what they want from the system, but at the same time, where Dairy offers
something, it should be tightly integrated with the rest of the system, and
should be the best solution available.Dairy is written in a way that balances nicely written and easy to use apis with
the ability for a more advanced user to make use of the extesibility, or write a
library of their own.These docs are meant to be read alongside examples and overviews provided in the
TeamCode module of the Dairy
monorepo.Dairy is written entirely in Kotlin, but provides examples and documentation in
both Kotlin and Java. Dairy is nicer to use in Kotlin, and if you feel somewhat
confident in your Java skills, then I think its worth giving Kotlin a
try!Check out the reading guide for our advice on how to get
started.
Core is the base library for most other Dairy libraries.
It enables a bunch of new patterns for writing cleaner FTC code, and
establishes the way that Dairy works.
It can be used as a good place to start improving your own team’s code, or to
use as a toolkit to write a library yourself.
Core is designed to ensure that libraries using it play nice together.
If you’re planning on writing a library using Core, please reach out to get
help, ensure that it will work with other libraries, and for advice on
publication, documentation, and management. If you would like your library
added to the Dairy Foundation, please reach out as well.
Lots of teams will find Mercurial a great place to start in Dairy.
Command Based is a paradigm (system / approach) to structuring robot code in a
reusable and concurrent manner, this makes it easy to run and manage lots of
tasks on the robot at the same time, and is a popular approach to writing
robot code in both FTC and FRC.
Its similar enough to FTCLib to make it easy to pick up for those familiar
with command based.
Its focused on developer ergonomics, and makes it easy to compose and work
with large command structures.