<commit_before># Integrated Learn Environment Package

<img align="right" src="diagram.png" />

The goal of this package is to provide Atom with an integration to Learn that is as OS-independent as possible. To meet this goal, the Atom API should be relied upon wherever possible. The point of this is to provide a reasonable level of confidence that wherever Atom can run, the Learn Integrated Environment can also run.

To accomplish this, some design principles are presented:

* Terminal interaction should be "dumb".
  * Assume the host doesn't have a native SSH client, as is the case with Windows.
  * Assume the host doesn't have support for a scripting language, as is the case with Windows (PowerShell may or may not exist, depending on the version of Windows).
  * Forward input to the student's server.<commit_msg>add project structure and links to related repos<commit_after># Learn IDE

[Learn IDE](https://learn.co/ide) is a fully featured text editor for [Learn](https://learn.co). It provides a remote development environment to allow users to get started coding using real tools without the pain of setting up a local development environment. It is built on top of Github's open source [Atom editor](https://atom.io/).

## Project Structure

The project is composed of multiple repositories, which can be divided into two areas of responsibility the **front end** and the **back end**:

### Front End

- **[Atom ILE](https://github.com/flatiron-labs/atom-ile)**
- **[Tree View](https://github.com/learn-co/tree-view/)**
- **[Learn IDE Windows Packager](https://github.com/flatiron-labs/learn-ide-windows-packager)**
- **[Learn IDE Mac Packager](https://github.com/flatiron-labs/learn-ide-mac-packager)**

### Back End

- **[FS Server](https://github.com/flatiron-labs/fs_server)**
- **[Go Terminal Server](https://github.com/flatiron-labs/go_terminal_server)**
- **[Students Chef Repo](https://github.com/flatiron-labs/students-chef-repo)**

## Design Principles

<img align="right" src="diagram.png" />

The goal of this package is to provide Atom with an integration to Learn that is as OS-independent as possible. To meet this goal, the Atom API should be relied upon wherever possible. The point of this is to provide a reasonable level of confidence that wherever Atom can run, the Learn Integrated Environment can also run.

To accomplish this, some design principles are presented:

* Terminal interaction should be "dumb".
  * Assume the host doesn't have a native SSH client, as is the case with Windows.
  * Assume the host doesn't have support for a scripting language, as is the case with Windows (PowerShell may or may not exist, depending on the version of Windows).
  * Forward input to the student's server.
{'fraction_non_alphanumeric': 0.09230207953301715, 'fraction_numerical': 0.0, 'mean_word_length': 4.49498997995992, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4056395', 'n_tokens_mistral': 747, 'n_tokens_neox': 698, 'n_words': 356}