|
|
## Contributor agreement
|
|
|
|
|
|
Apple requires contributors to iOS projects to relicense their code on submit. We'll have to have individual contributors sign something to enable this.
|
|
|
|
|
|
Our volunteer legal have put together a form you can sign electronically. So no scanning, faxing, or carrier pigeons involved. How modern:
|
|
|
https://signal.org/cla/
|
|
|
|
|
|
Please go ahead and sign, putting your github username in "Address line #2", so that we can accept your pull requests at our heart's delight.
|
|
|
|
|
|
## Code Conventions
|
|
|
|
|
|
To get started with developing for Signal iOS, please read [this tutorial on git best practices](https://gist.github.com/corbett/ef9fd5f1abbef3b02f3b).
|
|
|
|
|
|
We are trying to follow the [GitHub code conventions for Objective-C](https://github.com/github/objective-c-conventions) and we appreciate that pull requests do conform with those conventions.
|
|
|
|
|
|
In addition to that, always add curly braces to your `if` conditionals, even if there is no `else`. Booleans should be declared according to their Objective-C definition, and hence take `YES` or `NO` as values.
|
|
|
|
|
|
Any category extension on UIKit, or popular libraries, should be prefixed with `ows_` to avoid collisions.
|
|
|
|
|
|
One note, for programmers joining us from Java or similar language communities, note that [exceptions are not commonly used for errors that may occur in normal use](http://stackoverflow.com/questions/324284/throwing-an-exception-in-objective-c-cocoa/324805#324805) so familiarize yourself with **NSError**.
|
|
|
|
|
|
### UI conventions
|
|
|
We prefer to use [Storyboards](https://developer.apple.com/library/ios/documentation/general/conceptual/Devpedia-CocoaApp/Storyboard.html) vs. building UI elements within the code itself. We are not at the stage to provide a .strings localizable file for translating, but the goal is to have translatable strings in a single entry point so that we can reach users in their native language wherever possible.
|
|
|
|
|
|
## Tabs vs Spaces
|
|
|
|
|
|
It's the eternal debate. We chose to adopt spaces. Please set your default Xcode configuration to 4 spaces for tabs, and 4 spaces for indentation (it's Xcode's default setting).
|
|
|
|
|
|

|
|
|
|
|
|
If you don't agree with us, you can use the [ClangFormat Xcode plugin](https://github.com/travisjeffery/ClangFormat-Xcode) to code with your favorite indentation style!
|
|
|
|
|
|
## Contributors
|
|
|
|
|
|
Signal wouldn’t be possible without the many open-source projects we depend on. Big shoutout to the maintainers of all the [pods](https://github.com/WhisperSystems/Signal-iOS/blob/master/Podfile) we use!
|
|
|
|
|
|
The original version of Signal was developed by Twisted Oak Studios.
|
|
|
v1.0 development by Twisted Oak Studios:
|
|
|
|
|
|
- Connor Bell (@connorbell)
|
|
|
- Craig Gidney (@strilanc)
|
|
|
- Matthew Jewkes (@mjewkes)
|
|
|
- Petar Markovich (@Waxford)
|
|
|
- Jazz Turner Baggs (@jazzz)
|
|
|
|
|
|
The development from 1.0 to 2.0 of Signal was managed by [Christine Corbett](https://twitter.com/corbett) and [Frederic Jacobs](https://twitter.com/FredericJacobs). After the release of Signal 2.0, Christine moved on to other projects.
|
|
|
|
|
|
We would like to particularly thank the following people for contributing to Signal 2.0:
|
|
|
|
|
|
- Tyler Reinhard for his work on Signal 2.0 design
|
|
|
- Cade (@helveticade) for his numerous UX and UI contributions
|
|
|
- Dylan Bourgeois for his work on helping to integrate TextSecure UI into the existing Signal project
|
|
|
- Joshua Lund for the amazing QA work and immensely helpful feedback provided over the months of testing
|
|
|
- Joyce Yan and Jack Rogers for their contributions at the Winter Break of Code
|
|
|
- [Abelard](http://abelard.bandcamp.com/) for the Signal ringtones and notification sounds
|