Developer Contribution Guidelines?

#1

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.

#2

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?

#3

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.