Developer Contribution Guidelines?

Hello,

I would like to start contributing to the ARKit code by adding support for planes detection (among other things). I’ve compiled the expo client, but I have a few questions as to how to proceed for opening a “clean” PR.

I understand that modules are versioned as to guarantee backward compatibility with older apps, so for example a file such as expo/ios/Exponent/Versioned/Modules/Api/GL/ARKit/EXGLARSessionManager.h eventually gets tied to a version (in this case expo/ios/versioned-react-native/ABI24_0_0/Exponent/Modules/Api/GL/ARKit/ABI24_0_0EXGLARSessionManager.h ?). These versioned copies are all generated by a large commit such as
https://github.com/expo/expo/commit/e7eb261dc31b3515ebbf463ce9bc3ff7ac81b579 (how is this commit generated anyway?). But back to my question:

When I work on my code, for testing, I modify the ABIXX_X_X files and before I commit, I copy the changes over to the non-versioned files and somebody else will generate the versioned commit when it’s time to release? Or how does this work?

I guess I’m looking for tips on what’s a good development workflow.

Thank you for any help.

I think found the answer: https://github.com/expo/expo/blob/master/ios/CONTRIBUTING.md

Contributions to the Expo Client happened in “unversioned” code; that is, code which has not been included in an Expo SDK yet, without any symbol prefix

It’s still not clear what would be a good workflow however. How do people setup their environment to work off of the master branch?

I’ll answer to myself, hopefully this will be useful to others.

Make changes to the expo client app in the unversioned code.

Then change app.json and set sdkVersion to UNVERSIONED.

{
  "expo": {
    "sdkVersion": "UNVERSIONED"
  }
}

As a new developer I didn’t think this was totally obvious.