2.8 KiB
Contributing code to Matrix
Please read https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md.
Element iOS support can be found in this room:
Setting up a development environment
Xcode
We suggest using an Xcode version later than 13.2.1.
The Xcode project can be directly compiled after checkout through the shared ElementX scheme which includes the main application as well as the unit and UI tests.
The Xcode project itself is generated through xcodegen so any changes shouldn't be made directly to it but to the configuration files.
Dependencies
Dependencies will be automatically fetched through the Swift Package Manager, including a release version of the MatrixRustSDK. If you encounter issues while resolving the package graph please attempt a cache reset through File -> Packages -> Reset Package Caches
.
For instructions on how to setup the RustSDK in development mode please refer to the matrix-rust-components-swift repository.
Continuous Integration
ElementX uses Fastlane for running actions on the CI and tries to keep the configuration confined to either fastlane or xcodegen.
Please run bundle exec fastlane
to see available options.
Pull requests
Please see our pull request guide.
Implementing a new screen
New screen flows are currently using MVVM-Coordinator pattern. Please refer to the screen template under Tools/Scripts/createScreen.sh to create a new screen or a new screen flow.
Coding style
For Swift coding style we use SwiftLint to check some conventions at compile time (rules are located in the .swiftlint.yml
file).
Otherwise please have a look to Apple Swift conventions. We are also using some of the conventions of raywenderlich.com Swift style guide.
We enforce the coding style by running checks on the CI for every PR through Danger, SwiftLint and SonarCloud
We also gather coverage reports on every PR through Codecov and will eventually start enforcing minimums.
Thanks
Thank your for contributing to Matrix projects!