I got excited for a moment because I thought this might solve one of my minor problems as a K-12 CS teacher. Every school I've taught at is 1-1 with chromebooks and to be able to code on them so far I've set up a Raspberry pi and had students use the Secure Shell App from the Chrome Store to connect to the Pi. This comes with the overhead of needing to teach them to use ssh, basic linux commands and text-based interfaces in general and using nano (simpler than vim). But I'd love to skip all that and just let them code on their machines. Alternatively, I've used websites like codepen or repl.it to have them code online but this has the downside of requiring an internet connection (fails occasionally so need to have back-up lesson plans) and privacy concerns of having students sign up (my first district required companies to sign a data sharing agreement before this was allowed).
Unfortunately, I'm not able to install Ubuntu on the student chromebooks and they don't support linux apps so this solution will work for me.
I have an idea for you. Why don't you setup your own mini-local area network and host an open source solution similar to codepen (search for "open source web-based IDEs")? Then every student can connect to your LAN and access the IDE as well as store the data in your local server (You can back it up to S3 on a daily basis as well). It shouldn't cost much and will solve your connectivity and data privacy concerns.
There are some issues, 1) SSL/HTTPS certificates, which is needed for some browser functionality. 2) Access to the IDE when doing homework, etc. Hopefully the LAN and municipal network is reliable enough. I'm currently working on a web IDE, message me if you are interested and I will help set one up on your LAN.
I think Eclipse Che is something you should consider. Heavy, but considering that as a teacher you have to reset environments very often (after the kids screwed up), I think a container based runtime platform is sweet.
The builds should work on all Chromebooks, but you need to have one of:
1) An Intel or ARM64 Chromebook with Google's official Linux Apps support. This is the easiest path, and most likely to be available to you in education. You can install the relevant build from the GitHub releases page.
2) The ability to enable developer mode on the device. The scripts linked in the post will automate setting up an Ubuntu jail and installing the builds of Code into it.
Theoretically this gives 100% coverage of devices, but only if you're not restricted by the school/IT department.
Let me experiment with setting up an enterprise account and getting a look at this. This is the biggest reason for the project to exist so I'd like to find a way around this if I can.
An alternative to forcing them to the command-line, you could use http://guacamole.apache.org/ so they could run VSCode on the target machine via VNC or RDP. That way nothing needs to be installed on the chromebook: it is just visiting a web application over HTTP(S). I've used it to gain access to my remote machines from an environment where the only possible outgoing connections were HTTP(S).
Of course the target machines need to be beefy enough for all the students to be running VSCode and any compilation & output on at the same time, which almost certainly rules out a single rPi! You'd need a much larger machine or a little farm of Pi-class units.
Out of the box, Chromebooks are really not intended to do much other than consume web-based content, including sites like CodePen or other web-coding interfaces. It seems like you've explored those options fairly well.
If you can't modify the machines to run full Linux environments (ala crouton), you're mostly stuck with web-based experiences, or the apps provided to you by the Chrome Web Store.
Teaching your students to SSH into a Linux box and teaching them basic BASH skills is pretty worthwhile in itself. You seem to have made the best of a quirky situation.
Technically, he probably can install crouton but that isn't such a good idea in a school environment as you need to enable developer mode on the device and you lose some of the security features of Chrome OS.
Sounds like you don't really have the tools to do your job. I'm not sure I ever would have started programming if I wasn't able to program my own computer. It's a shame because they'll learn that sshing is some intrinsic part of programming and it's such a barrier to entry.
What I would definitely do is set up something better than nano for them. Emacs works like a charm over ssh with full syntax highlighting, intuitive UI, and powerful features. Find (or make) a nice little config for them.
There is also Jupyter and Jupyter Hub which might be good for you. Essentially an on-prem Web-based environment. While I think teaching at a lower level is better for serious computer science, this could still be good for young people.
At least with emacs, you could load a key map which gives them modern keybindings and give them a print out[1]. There's a built-in CUA mode too. That way they get better syntax highlighting, indentation and backup files for free. They don't have to /learn/ emacs.
I strongly agree with you though that the last thing you want to is throw up all these barriers to students getting started with programming and am appalled that the kids and teacher have to put up with the pi and shell solution.
The problem with emacs are not the keybindings. One example is that if you move the cursor and then shift-delete it deletes the whole you have moved; that is a not so nice surprise.
You shouldn't have to install Ubuntu or a native Linux app just to be able to write some code on a Chromebook.
If you're interested, I've been working on a Monaco-based editor for Chrome OS (just like VS Code) that doesn't require installing Crouton nor a native Linux app. Works fully offline and performs pretty well on low-end hardware.
I think you'd get far more traffic if you linked to a page that actually has information (https://code.headmelted.com/) instead of to the list of builds!
In any case, this is awesome and I'll definitely give it a try
Windows will complain if you download and try to run an unsigned exe. While APT packages can be signed, wget|sh can't be, so it's comparatively easier for someone to trojan the website and distribute malware.
Basically it's the ARM and ARM64 support that's new. For anyone who has a device that supports the official Linux apps containers I steer them down that route, the Crouton method is kept around for older kernel devices (as their out of luck wrt official Linux support, sadly)
Thanks for your efforts, as a long time Chromebook user I am truly impressed particularly with the Crouton build for those of us with the original Pixel and no Android apps.
Currently I am not in Developer Mode and I have a linux box for running a different IDE. I am okay with my Pixel being for testing and non-dev things.
So, before I powerwash the thing and get Crouton working again (which I am slightly loathed to do since the five year support period is over), could I please have a few screen shots? I hope I am speaking here not just for myself but for others with a loved but dated Chromebook and questions about how this would work in the file-less world of ChromeOS where I am not so likely to be able to sync my files to a remote server. If I am to swap over to a different IDE then I need a few pictures to persuade me that the efforts are worthwhile. The Pixel (original vintage) has the best screen/keyboard/trackpad/speakers/design of any laptop ever made even if the CPU is a bit lame by today's standards and the battery doesn't last all day. So it would be nice to code on.
The main seller here is ARM support for a modern IDE.
A few years back, my "main" machine was a Samsung Chromebook 2 (13") running Xubuntu (Ubuntu with XFCE) via crouton. Surprisingly snappy and quite useful as a thin client/web coding machine.
My biggest gripe back then was the lack of Sublime builds for ARM machines. This then, would be pretty welcome to anyone in that niche.
This is cool, but I'd love to hear what others have setup as far as developer setup with their Chromebooks? Do you use VS Code locally and actually run your servers/terminals on a VPS? Something more clever locally with Docker or a VM?
Apart from the project itself, it seems contact section link does not work. I guess it should be anchored to page header.
Interesting project anyway, +1 star on Github :)
Unfortunately, I'm not able to install Ubuntu on the student chromebooks and they don't support linux apps so this solution will work for me.