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

Top-level projects

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

Satellite projects

BeHeMMOth
Wreathe: bullet hell MMO computer game
compiz-extra-snowflake-textures
Wreathe: textures for use with the Compiz-Reloaded window manager
compiz-plugins-community
Wreathe: Additional plugins for the Compiz-Reloaded window manager
compiz-reloaded-overlay
Wreathe: Code used to build the Compiz-Reloaded window manager
crystallize
Crystallize
curl-phpmyadmin
Wreathe: Tool to export MySQL data from PHPMyAdmin using curl
ember-meta
Ember meta-repository (pulls in all other repositories as submodules)
ember-history
Ember History: meta-repository containing repositories and data that are no longer used by Ember
ember-satellite-projects
Satellite projects meta-repository (pulls in all other satellite repositories as submodules)
ember-shared
Code shared between various Ember software
ember-web-site-snapshots
Snapshots of the contents of the Ember Web site, as retrieved from the server
futuramerlin-web-toolkit
Futuramerlin Web Toolkit
jdownloader
Wreathe: JDownloader (mirror of code to facilitate packaging)
jorgan
Wreathe: JDownloader (forked from discontinued code)
moon-1
Wreathe: Moonlight (forked from discontinued code)
node-spotify-downloader
Wreathe: node-spotify-downloader (forked from discontinued code)
node-spotify-web
Wreathe: node-spotify-web (forked from discontinued code)
unicode-reports
Wreathe: Unicode reports (mirror of documents to facilitate packaging)
warcdealer
Warcdealer
wreathe-base
Wreathe core repository
wreathe-backgrounds
Wreathe: background images
wreathe-charselect
Wreathe: Character selection tool (forked from kcharselect)
wreathe-conf
Wreathe: Configuration files
wreathe-file-manager
Wreathe: File manager (forked from discontinued code)
wreathe-icons
Wreathe: Icons
wreathe-media-resources
Wreathe: Resources for media production
wreathe-office-resources
Wreathe: Resources for office work
wreathe-overlay
Wreathe: Code used to build some packages in Wreathe
wreathe-overlays-redist
Wreathe: Redistributed code used to build some packages in Wreathe
wreathe-package-db
Wreathe: Package information database (not exactly part of Wreathe; rather, this is information regarding Wreathe)
wreathe-packages
Wreathe: Packages (forked from discontinued code)
wreathe-typeface-family
Wreathe: Typefaces used in Wreathe
wreathe-typefaces-redist
Wreathe: Redistributed typefaces used in Wreathe
wreathe-web-filters
Wreathe: Web filters
xulrunner
Wreathe: XULRunner (forked from discontinued code)

Personal scratch space

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
Personal scratch space
personal-private
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 https://github.com/ethus3h/ember.git Ember; cd Ember || exit 1; for i in "${emberProjects[@]}"; do git clone --recursive https://github.com/ethus3h/"$i".git; done; cd ..; mkdir Ember\ satellite\ projects; cd Ember\ satellite\ projects || exit 1; for i in "${emberSatelliteProjects[@]}"; do git clone --recursive https://github.com/ethus3h/"$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 https://github.com/ethus3h/ember-meta.git 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 https://github.com/ethus3h/personal.git. (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