---
path: "/contributing/opening-a-pull-request"
title: "Opening a Pull Request"
hasPlayground: false
---

# Opening a Pull Request

Before opening your first pull request to Yoga you have to know how to get the code,
install build time dependencies, and test the code locally.

### Clone

```
$> git clone https://github.com/facebook/yoga.git
$> cd yoga
```

### Install dependencies

```
$> git submodule init
$> git submodule update
$> brew install buck
```

### Build and Test

```
$> buck build //:yoga
$> buck test //:yoga
```

## Making a Change

Now all you need to do is make your change and test it before submitting a pull request for review.
Below is the general structure of the repo and where you may want to make your change. One you have
made your change see the [testing documentation](/contributing/testing) for more on how to test your change.

``` bash
/yoga
|-- yoga                  # Home to the main Yoga codebase written in C++. Any algorithmic changes should be made here
|-- lib                   # Yoga external dependencies. Be thoughtful adding any new ones
|-- tests                 # Yoga's C++ test suite. Both manaul and generated tests
|-- gentest
|   |-- fixtures          # html fixtures for generated tests    
|-- java         
|   |-- com/facebook/yoga # Java binding code
|   |-- jni               # JNI binding code
|-- yogacore              # Android bindings without View support
|-- android               # Android View bindings
|-- YogaKit               # iOS UIView bindings
|-- javascript            # emscripten / javascript bindings
|-- csharp                # .NET bindings in c#
```