Oasis in Robotics

by Mason


Yes, this is kind of an ad. However, Oasis is a FOSS project. I don't want any money, I just want to see my project succeed :)

Java frankly sucks.

Kotlin solves some of Java's problems. It's nicer to look at, easier to digest, and your algorithm flows smoother from your brain to your keyboard.

But what if you're a non-programmer?

Here's an annoying scenario:

Build teams needs to tweak the driver controls after making adjustments. However, the programmers aren't available to do so. What happens then? The build team could try messing with the code, but they risk doing damage, and might not even understand what to change.

Enter: Oasis.

Oasis is optimized for brevity. It reads a lot closer to something like a formula, making it easier for others (like build team) to understand. Every form in Oasis is made to use as little tokens as possible without sacrificing readibility. This also means that the programmer benefits; they can get their ideas from their head to their screen faster - perfect for quickly-paced competition environments where hot-patches are necessary.

Take a look at this small program:

DISCLAIMER: this is subject to change.

teleOp("Tank Drive") => {
    // Define the robot motors. ':=' is a variable definition.
    motorL := robot:get("Left") 
    motorR := robot:get("Right")

    robotLoop => {
        // Define the variables for the joystick.
        x := pad:leftStick:x 
        y := pad:leftStick:y 
        // Set the power of the motors. This uses '=' because the variable already exists.
        motorL:power = y * x 
        motorR:power = y * -x

This is a complete (albeit rudimentary) Oasis program that does tank drive. There is no more to it - this is the complete program. No boilerplate. Compared to a Java or Kotlin drive program with a lot of "noise" happening that may confuse newbie programmers or non-programmers, this gets the job done in a lot less code.

Obviously, someone who's never touched code before or isn't familiar with the concept of variables and branching won't be able to fix any code. However, Oasis will be much easier to teach to those with minimal coding experience, compared to Java or Kotlin with more complex or verbose syntax.


Oasis hopes to fill a gap where Java and Kotlin don't. The aim is to allow all members of a team to understand and make edits to robot code, and to improve the productivity of dedicated programmers. For advanced programmers, you might want to look at the advanced tutorial on the Oasis website, which goes over the type system, the standard library, and more features of the language.