Development documentation

Ember development community standards

Ember has adopted the Contributor Covenant Code of Conduct.

Issue tracker

An issue tracker (static backup copy) is available.

List of repositories

Note (2019 Jan. 26a27): The ember-web-site, wreathe-conf, and ember-web-site-snapshots repositories have not been publicly available for a while (leaked some possibly sensitive information in them). I've finally gotten around to doing something about it, though, by cleaning and then dropping the history from the repositories, and force pushing over the current ones. I'll set them back to public once the Git hosts do garbage collection. The versions of the repositories from before the force pushes are included in ember-library-2 to preserve the history. (I was too lazy to be selective in cleaning them up such that a sanitized copy of the repos' old commit history could stay public; this was much easier, sorry.) Anyway, that's why they've disappeared — sorry for the silence, procrastination strikes again... :P Update 2019 Apr. 9: It's necessary to re-do this, since it turns out GitHub at least doesn't do GC, or at least it hasn't yet (procedure: back up current repo, rename current remote repo, create new blank remote repo, remove old history from local copy (, push to remote, unbreak GitLab mirror by moving and then creating a new blank project and setting up mirroring for it). This is done for ember-web-site, which is now public again, yay! The other two still need it.

Top-level projects

Core project repository (pulls in all other core repositories as submodules)
Information technology environment
Library: Section 2 (not publicly available at this time)
This Web site

Satellite projects

Wreathe: bullet hell MMO computer game (not publicly available at this time)
Wreathe: Repositories related to BeHeMMOth, as submodules, for reference (not publicly available at this time)
Wreathe: textures for use with the Compiz-Reloaded window manager
Wreathe: Additional plugins for the Compiz-Reloaded window manager
Wreathe: Code used to build the Compiz-Reloaded window manager
Wreathe: Tool to export MySQL data from PHPMyAdmin using curl
Ember meta-repository (pulls in all other repositories as submodules)
Ember History: meta-repository containing repositories and data that are no longer used by Ember
Satellite projects meta-repository (pulls in all other satellite repositories as submodules)
Code shared between various Ember software
Snapshots of the contents of the Ember Web site, as retrieved from the server
Futuramerlin Web Toolkit
Wreathe: Copy of the Gentoo Portage tree as synced by Wreathe
Wreathe: Platformer computer game
Wreathe: JDownloader (mirror of code to facilitate packaging)
Wreathe: JOrgan (forked from discontinued code)
Wreathe: Moonlight (forked from discontinued code)
Wreathe: node-spotify-downloader (forked from discontinued code) (not publicly available at this time)
Wreathe: node-spotify-web (forked from discontinued code) (not publicly available at this time)
Wreathe: Unicode documents (mirror to facilitate packaging)
Wreathe core repository
Wreathe: background images
Wreathe: Character selection tool (forked from kcharselect)
Wreathe: Configuration files
Wreathe: File manager (forked from discontinued code)
Wreathe: Icons
Wreathe: Resources for media production
Wreathe: Resources for office work
Wreathe: Code used to build some packages in Wreathe
Wreathe: Redistributed code used to build some packages in Wreathe
Wreathe: Package information database (not exactly part of Wreathe; rather, this is information regarding Wreathe)
Wreathe: Packages (forked from discontinued code)
Wreathe: Typefaces used in Wreathe
Wreathe: Redistributed typefaces used in Wreathe
Wreathe: Web filters
Wreathe: XULRunner (forked from discontinued code)

Miscellaneous repositories

These two repositories hold a record of the status of copies of the Ember project data. As of this writing, neither copy is complete ("elegiac" is a small test copy of a subset of the data used for testing the software during development, and "remote" has not finished the initial process of getting a copy). (The git repositories are held separately with a copy in the computer used for development and a copy at GitHub, and the other data are held at the Internet Archive. Eventually, there should be various mirrors with the entirety of the Ember project data.)

Status data: "elegiac" Ember Project copy
Status data: "elements" Ember Project copy
Status of the "remote" Ember Project copy

These repositories are personal scratch spaces used by Elliot Chandler. They are not officially part of Ember, but may at times contain some information of relevance to the development history of Ember. They may in the future be added to parts 2 or 3 of the Ember Library.

Personal scratch space
Personal scratch space (not publicly available at this time)

Getting the data

This section discusses how to download the data of, and the projects maintained by, Ember. These instructions will result in the creation of a development environment for the repositories similar to the one used by Ember. If you want to use the Ember tools for working with this environment, and are not using Wreathe 7.3, then additional configuration steps should be taken after getting the data (see "Configuring the environment"). If you just want to examine the contents, or use standard Git tools with it, those steps are not necessary. If you are using Wreathe 7.3, these commands for getting the development data should either be run in the root directory, or else the existing /Ember Library folder should be moved to the desired loctaion, and the value of the EmberLibrary configuration field for Crystallize set to that new location as described in the "Configuring the environment" section below.

It is important to check the information in the "Working with Stream Registry repositories, and crystal backups" if you are concerned that you may not be getting all the data you want.

Getting only the basic repositories

Unless you are working on Wreathe or investigating the history of Ember, you probably don't need the Wreathe repositories or Ember history repositories, which are pretty big. This section does not discuss getting them. If you do want them, see the next section. To get these basic repositories, run the following command in the directory where you want the Ember development data to be stored.

declare -a emberProjects=("ember" "ember-information-technology-environment" "ember-library" "ember-web-site"); declare -a emberSatelliteProjects=("crystallize" "ember-shared" "futuramerlin-web-toolkit" "warcdealer"); set -e; mkdir -p Ember\ Library; cd Ember\ Library || exit 1; git clone --recursive Ember; cd Ember || exit 1; for i in "${emberProjects[@]}"; do git clone --recursive"$i".git; done; cd ..; mkdir Ember\ satellite\ projects; cd Ember\ satellite\ projects || exit 1; for i in "${emberSatelliteProjects[@]}"; do git clone --recursive"$i".git; done; cd ../.. || exit 1; echo "Finished downloading Ember."

Getting all public repositories

This section discusses getting all publicly available Ember data, which is quite large. Unless you are working on Wreathe or investigating the history of Ember, you probably don't need this, and can use the previous section to get a more limited subset of data.

These main instructions do not currently get the ember-library-2, personal, or personal-private repositories, the first and third because they are not currently publicly available, and the second (and third) because they are probably of limited interest. To get this more complete set of repositories, run the following command in the directory where you want the Ember development data to be stored.

git clone --recursive Ember\ Library

About the "ember-library-2" repository

The "ember-library-2" repository is not currently publicly available, and is weird and complicated. It is an overlay on top of the ember-meta repository. To use it, clone it and then move its .git directory to Ember/ember-library/ember-library-2/.egup.git (within the main EmberLibrary folder — see the section "Configuring the environment" below). From a semantic perspective, the ember-meta repository should be considered part of the ember-library-2 repository, but having a submodule with the same working directory as the current git repository is kinda weird and confusing and I'm not really sure how to do it, so I haven't done that yet.

Getting the "personal" repository (and about the "personal-private" repository)

If you really do want this, go to the folder where you ran the above command, and run: cd Ember\ Library/Ember\ satellite\ projects; git clone (The "personal-private" repository works in the same manner as this, but is not currently publicly available.)

Configuring and using the environment

This step is only needed if you want to use the Ember tools to work with the development environment, and are not using Wreathe 7.3 (which has this already taken care of). If you just want to examine its contents or develop it using standard Git tools, this is not necessary.

To use these tools (egup/eogup), a copy of Crystallize must be installed and configured with the EmberLibrary configuration field set to the location of the folder (called "Ember Library") containing the development environment. For example, if as in the Ember setup the folder is in the root directory, the Crystallize configuration file (crystallize.conf) would contain a line reading 'EmberLibrary,/Ember Library'. Also, the scripts with names beginning with "egup" and "eogup" that are in the usr/bin folder of the wreathe-base repository must be executable and available in the PATH for your user and the root user on your system.

To synchronise your changes to the development environment, run egup, or eogup if there isn't a Web connection available or GitHub is unavailable, if you have remote commit privileges. (If you do not have remote commit privileges, use a fork of the repository you want to work on, in the traditional Git manner.) To build the Ember Web site, run egup-web.

Working with Stream Registry repositories, and crystal backups

Five of the repositories (ember-library-2, ember-history, personal, personal-private, and wreathe-packages) contain contents stored using the stream registry feature of Crystallize. This method of storing data keeps pointers to the files in the Git repositories, and stores the actual file contents elsewhere (currently only the Internet Archive; additional mirrors should be added for redundancy). A copy of those file contents is necessary to be able to access the data referenced by those pointers. This means that to obtain a complete copy of these repositories, a list of the addresses of the data (the crystal addresses) that the pointers depend on must be generated from the pointers, and then those crystals must be copied locally. In addition, there are two other sources of data stored at the Internet Archive that may be desired. First, the ember-library-2 repository contains a folder .rubberfs/history that contains a set of files that reference incremental snapshots of the filesystem used for Ember development. These incremental snapshots are ZFS replication streams that can be used by sending them back into an empty ZFS filesystem. They are stored as crystals, and can be added to the set of crystal addresses to be backed up locally if desired. Second, the ember-web-site repostiory contains a folder people/elliot/music that contains files with names ending in .conf describing various musical works released by Elliot (only tangentially related to Ember, but described here for completeness). Some of those files contain lines beginning with "ia,". The part of those lines after that prefix is an Internet Archive identifier for an item containing the files of the item described in that .conf file. Because crystal addresses are a subset of Internet Archive identifiers, and the tools for managing Crystallize backups should work with all Internet Archive items as a general rule, these identifiers can be added to the list of crystal addresses to be backed up as well, if desired.

Relevant how-to articles