Web Based Software Development

With the era of Covid all around us, I am looking for ways to continue both the training and the development of our robot code.

I have to assume that as least some of the students working on the software do not have a PC capable of running the software development stack (VScode, etc). A number will probably only have a chromebook available to them.

With the notable exception of actually connecting and deploying code to the robot (which I assume will require a full PC). Is there any teams that have developed a web based software development model? We would have the students do their programming on the web and then (using git or similar) pull their code to a PC in the lab to deploy onto the robot.

Does anyone have any hints/tricks for doing this?

Thanks

1 Like

repl.it is what we are currently using for our FTC teams, with one PC to deploy and run individual code

2423 has this sample of using gitpod for setting up an all-online environment.

The last time I tried to get it running, I failed to get the single-step debugger to work, which was a non-starter for some of the things we were looking to teach this year. There was also some wonkiness with launching wpi commands from vs code… Not sure if they got solved by 2423 or not, but could be something to look into.

Sounds like you may want to give GitHub Codespaces a look. It’s basically VSCode but it runs on GitHub’s servers, and it’s surprisingly performant. And since it’s VSCode you have access to a terminal and your preferred version control tools.

1 Like

I think your link may require early access in order to visit it - Codespaces · GitHub has the public landing page.

Have you gotten a chance to try to install any of the build tools for FRC or FTC in the environment? Editing code is definitely a really good first step, but being able to run it is a critical next step.

Relevant. Everything this kid does is great, I like reading through the blog.

2 Likes

As @mdurrani834 shared, I do have CodeSpaces running for my team (doesn’t allow you to deploy code due to browser safety restrictions though)

During my first two years in FRC, I actually used only a Chromebook for software development. The setup process for this is quite a bit to wrap your head around though. Here is a basic rundown of the setup I personally used:

  • Chromebook in developer mode
  • The Caret code editor
  • Git via the developer mode console (installed using chromebrew)
  • Java JDK 11 (installed using chromebrew)
  • The Athena-ARM C+++ toolchain for compiling C++ code
    • I had to manually port this over to Gentoo (chromeos is secretly just Gentoo)
    • I’m pretty sure GradleRIO can handle Chromeos out of the box now

A way simpler setup (which a fellow teammate of mine opted to use) is putting a chromebook in developer mode, and side-loading Ubuntu via the crouton project. Inside the Ubuntu environment, you can simply follow the Linux setup instructions for WPILib.

And finally, There is a feature in ChromeOS now (that I never got to try), where you can enable a linux environment without being in developer mode (it used to be called “Linux beta” in the settings menu). This is Debian iirc, so you can install the WPILib toolsuite just like any other Linux system.

3 Likes

Is that because CodeSpaces doesn’t give you access to the VM network settings? I’ve had success deploying code from a DigitalOcean droplet to a robot via a WireGuard VPN to a machine in the same room; it just masquerades the VPN traffic. Granted, I needed root to set up WireGuard.

The students at my high school were issued Chromebooks this year, but IT disabled everything, including developer mode and the Linux (beta) feature. :frowning: We’re currently trying to choose between desktop-as-a-service vs loaning out old donated CAD machines with Ubuntu 20.04 on a second SSD. The former is easier to deploy, but :money_with_wings:.

Well, you could put a wireguard client inside the docker container, but that probably isn’t going to be the world’s most reliable system.

Ah, yes. My highschool is like this too. Some models have nice little tricks to evade these things (the old “mario” devices had a physical switch to unlock coreboot).

If you are invested enough, you can always try the following setup (I briefly tried this, but got side-tracked):

  • code-server in a digitalocean droplet
  • The mosh app for ChromeOS
  • Some kind of reverse proxy for the chromebook. You could probably throw together a ChromeOS app that exposes a connection to lvuser@10.TE.AM.2:22 over ngrok. The ChromeOS app api is pretty open in terms of networking (last time I used it)
  • You can even update node-driverstation to the latest DS protocol, add a little front-end, and be able to control robots from the chromebook via one of the web APIs for game controllers