Skip to content

Instantly share code, notes, and snippets.

@briandant
Created August 6, 2019 17:34
Show Gist options
  • Save briandant/c9e13de0c2b31234a8c706d2704402f8 to your computer and use it in GitHub Desktop.
Save briandant/c9e13de0c2b31234a8c706d2704402f8 to your computer and use it in GitHub Desktop.

Overview

This document explains how to best manage Theia at ISC, in conjunction with Appsembler.

Repo structure

  • One repo for Theia: appsembler/theia
  • One repo for all the ISC Docker Images
  • Several repos for Theia extensions

One repo for appsembler/theia

This will contain a Dockerfile and any context needed to build Theia (but nothing more: all ISC stuff will be in other repos). Git tags will be added to each build of theia (e.g., v0.8.0). A HISTORY file will show the versions of Theia we've successfully built and tested against ISC extensions (e.g., gcr.io/isc-dashboard/appsembler/theia:0.8.0).

isc/theia-apps

Will contain several repostories with different Dockerfiles and context needed to build ISC software with Theia. For example, the tryiris-theia directory will contain a Dockerfile that starts

FROM gcr.io/isc-dashboard/appsembler/theia:0.8.0

and goes on to install and build Iris with the configuration needed for the "try" course.

We'll mimic theiaide/theia-apps: https://github.com/theia-ide/theia-apps/.

Several repos for Theia extensions

We want to decouple the extensions as much as possible; this way we can include only what is needed to build an image for a course. So, we'll have many repos for ISC extensions. One for the default state of the editor (i.e., the basic view for all ISC courses: the file browser is open, the terminal is open, etc.). Then, we'll have other repos for adding more to the image: particular syntax highlighting, etc. Each of these repos will be a qualified npm package so we can build and push it to a private npm repository, then pull it in from various images.

FAQ

How do I use Theia for a new product?

  • Create a new directory in isc/theia-apps
  • Name it: e.g., theia-tryiris (Use cookiecutter?)
  • Add any Theia extensions to the package.json
@theia/preferences
@theia/python
@isc/theia-enhanced  # Our default ISC setup.
@isc/objectscript

How will we handle new courses?

Checkout a new branch in isc/theia-apps and modify the Dockerfile and context as needed. We'll build the Theia extensions locally, within this repository, so you can make changes as needed with ease, before pushing these changes to the npm repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment