# Contributing We are happy to accept contributions! ## Developing ### FFI The Dart code in this library communicates with the Updater (part of Shorebird's Flutter engine) via FFI. For an Updater function to be visible to the Dart code, it must: 1. Be declared in `library/src/c_api/dart.rs` as `pub extern "C"` (the Dart-stable surface). Functions only meant for the Flutter engine go in `library/src/c_api/engine.rs` instead and will not appear in the Dart bindings. 1. The two buckets emit `library/include/updater_dart.h` and `library/include/updater_engine.h` respectively, generated by [cbindgen](https://github.com/mozilla/cbindgen) when the Updater is built. 1. Be included in the generated ffi bindings. These can be regenerated using `dart run ffigen`. ffigen reads only `updater_dart.h`, so engine-only symbols are not bound. 1. Android specific: be listed in https://github.com/tony-cloud/flutter/blob/tonycloud/dev/engine/src/flutter/shell/platform/android/android_exports.lst