Hi, and thanks in advance for contributing to Mapbox GL. Here's how we work. Please follow these conventions when submitting an issue or pull request.
Install the Xcode Command Line Tools Package
xcode-select --install
Install node.js version 4 or greater
brew install node
Clone the repository
git clone [email protected]:mapbox/mapbox-gl-js.git
Install node module dependencies
cd mapbox-gl-js &&
npm install
Install git, node.js (version 4 or greater), GNU Make, and libglew-dev
sudo apt-get update &&
sudo apt-get install build-essential git nodejs libglew-dev libxi-dev
Clone the repository
git clone [email protected]:mapbox/mapbox-gl-js.git
Install node module dependencies
cd mapbox-gl-js &&
npm install
Install git, node.js (version 4 or greater), npm and node-gyp.
Clone the repository
git clone [email protected]:mapbox/mapbox-gl-js.git
Install node module dependencies
cd mapbox-gl-js
npm install
Install headless-gl dependencies https://github.com/stackgl/headless-gl#windows
copy node_modules/headless-gl/deps/windows/dll/x64/*.dll c:\windows\system32
Start the debug server
MAPBOX_ACCESS_TOKEN={YOUR MAPBOX ACCESS TOKEN} npm run start-debug
Open the debug page at http://localhost:9966/debug
A standalone build allows you to turn the contents of this repository into mapbox-gl.js
and mapbox-gl.css
files that can be included on an html page.
To create a standalone build, run
npm run build-min
Once that command finishes, you will have a standalone build at dist/mapbox-gl.js
and dist/mapbox-gl.css
See test/README.md
.
See bench/README.md
.
- We use
error
events to report user errors. - We use
assert
to check invariants that are not likely to be caused by user error. Theseassert
statements are stripped out of production builds.
- We use rebase merging (as opposed to basic merging) to merge branches
See docs/README.md
.
- We use Github milestones to schedule tasks into two week sprints
- We end each sprint and publish a release every other Wednesday unless there is an outstanding “release blocker” issue.
- If there is a "release blocker" issue, we fix it as soon as possible and do the release
- We will prioritize feature work as follows:
- “release blocker” bugs
- in-progress things
- things needed by customers
- new things
- We try to include one "testing and release process", one "refactoring", and one "bug" issue in each release.
- We name releases alphabetically after cities. (Fun facts are encouraged!)
Our labeling system is
- minimalistic: Labels' usefulness are inversely proportional to how many we have.
- objective: Labels should be objective enough that any two people would agree on a labeling decision.
- useful: Labels should track state or capture semantic meaning that would otherwise be hard to search.
We have divided our labels into categories to make them easier to use.
- type (blue)
- actionable status (red)
- non-actionable status (grey)
- importance / urgency (green)
- topic / project / misc (yellow)