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)
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-retired-repositories
Ember Retired Repositories: 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
xulrunner
Wreathe: XULRunner (forked from discontinued code)

Getting the code

To download all of Ember and the projects it maintains (except for most of the third-party code used in Wreathe, which I don't have a distribution model set up for yet):
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. If you do want them, only run the second of the following commands; otherwise, only run the first. Note that this does not currently get the ember-library-2 repository, because it is weird and complicated (it's 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; 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).

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 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."

git clone --recursive https://github.com/ethus3h/ember-meta.git Ember\ Library

To synchronise your changes to the resulting development environment (assuming you aren't using Wreathe 7.3; Wreathe 7.3 users can run egup, or egup-web to also build the Web site, or eogup if there isn't a Web connection available or GitHub is unavailable) if you have remote commit privileges (if not, use a fork of the repository you want to work on):
Upload only:
cd ember || exit 1; findemberfolders() { find . -maxdepth 1 -not -name '\.*' -type d -print0 | xargs -i{} -0 -P 15 sh -c 'cd "$1" || exit 1; git add -A; git commit -a -m "Update Ember tree"; git pull; git push -u origin master' -- '{}' \; ; }; set -e; cd ember || exit 1; findemberfolders; cd ../ember-satellite-projects || exit 1; findemberfolders; cd .. || exit 1; cd .. || exit 1

Update overlay and upload (requires repoman to be installed):
cd ember || exit 1; cd ember-satellite-projects/wreathe-overlay || exit 1; repoman manifest; cd ../.. || exit 1; findemberfolders() { find . -maxdepth 1 -not -name '\.*' -type d -print0 | xargs -i{} -0 -P 15 sh -c 'cd "$1" || exit 1; git add -A; git commit -a -m "Update Ember tree"; git pull; git push -u origin master' -- '{}' \; ; }; set -e; cd ember || exit 1; findemberfolders; cd ../ember-satellite-projects || exit 1; findemberfolders; cd .. || exit 1; cd .. || exit 1

Update Web site and upload (requires futuramerlin-web-toolkit to be installed):
cd ember || exit 1; cd ember/ember-web-site || exit 1; ~/.futuramerlin-web-toolkit-build; cd ../.. || exit 1; findemberfolders() { find . -maxdepth 1 -not -name '\.*' -type d -print0 | xargs -i{} -0 -P 15 sh -c 'cd "$1" || exit 1; git add -A; git commit -a -m "Update Ember tree"; git pull; git push -u origin master' -- '{}' \; ; }; set -e; cd ember || exit 1; findemberfolders; cd ../ember-satellite-projects || exit 1; findemberfolders; cd .. || exit 1; cd .. || exit 1

Update overlay and Web site and upload (requires repoman and futuramerlin-web-toolkit to be installed):
cd ember || exit 1; cd ember/ember-web-site || exit 1; ~/.futuramerlin-web-toolkit-build; cd ../.. || exit 1; cd ember-satellite-projects/wreathe-overlay || exit 1; repoman manifest; cd ../.. || exit 1; findemberfolders() { find . -maxdepth 1 -not -name '\.*' -type d -print0 | xargs -i{} -0 -P 15 sh -c 'cd "$1" || exit 1; git add -A; git commit -a -m "Update Ember tree"; git pull; git push -u origin master' -- '{}' \; ; }; set -e; cd ember || exit 1; findemberfolders; cd ../ember-satellite-projects || exit 1; findemberfolders; cd .. || exit 1; cd .. || exit 1

Relevant how-to articles

Repository health report

This is a list of repositories that contain anomalies, as determined by running git fsck --full --strict --lost-found --cache --unreachable in each repository, as of 2017-January-19. TODO: Automate generating this data, and record what commits each repository is at when it is generated.

crystallize

unreachable tag d4867b59464e37fbda25ad548baae23732487bc8
        unreachable tag 3ea891b4883aa3872249b88eacb786810829415f
        unreachable tag bd08b7a159725ed5631f0fe2ae3067922c8cfbbd
        unreachable tag 15ac0157c606734cfccb52a9451f1b1932fcb084
        unreachable tag 4254c20a2efcbeff9d85f8d58d38a3bb9283ebfb
        unreachable tag 01fe567dae7c5744b78e79c2565b29e266c589aa

futuramerlin-web-toolkit

unreachable tag 7928f71efacfe57f0ba17eefe5202da5ba51d98d

wreathe

unreachable commit 91c02cff04247ba88ca496f0a889cfc52c740fa2

wreathe-overlays-redist

unreachable blob bc84e75cbdf6baa838c6eb0a8020610da0d0d36a
        unreachable blob 138d07eb6b9922fec37c4287850fc37e5d77c6ff
        unreachable blob 690f8398f030cde159a9e24fe71da81befe6712d
        unreachable blob cbab7a5f42d068d7a7aebc5737f880d2c9b40eff
        unreachable blob 73b7f274c9aa086da76a71d14274f39257a918d9
        unreachable blob 8d3777c6888368df9b9cd7caec40a4d583f04d07
        unreachable blob 5bc31567f59c2b22e76b6603d12d4f0af8a0f544
        unreachable blob 824c24ce5143d105f818c2380ede4e030b1bc357
        unreachable blob 6e4e5656122b6602c076b03f773e0b092f81934c
        unreachable blob 9052a46a677b52846eebb80ad21e254c55d3f4a5
        unreachable blob c1d25952a609355818a0a309d346052ada77b644
        unreachable blob ae6fddad6ae4fea3b2ace2eac247c932fe7b3085
        unreachable blob 7573bcc494c51e746f2857a3e7c642dd41e274ca
        unreachable blob 067579ee14ed40d9fb4ac5de6b070cf29930ee2a