Skip to content

Welcome to the Signal Community

Sam Lanning edited this page Jan 18, 2016 · 13 revisions

DRAFT

Note: This wiki page is currently under construction... and there are parts that need to yet be written

Signal is a messaging app that runs on iOS, Android and The Desktop, and you can get involved in shaping its future!

Signal is maintained and run by Open Whisper Systems, a small team of dedicated grant-funded developers, along with a large community of volunteer Open Source contributors that surround the project. All of the source code and files for this project are publically hosted on this website (GitHub), and anyone can get involved and contribute.

You don't have to be a developer to become a valuable part of our community, there are many other ways in which you can help, for example submitting bug reports or feature requests, providing translations, participating in the online conversations, or just spreading the word and getting friends and family to use Signal. Details of how to do all of these can be found under How to Get Involved below.

If you are just looking for support, please visit our dedicated support website or email support@whispersystems.org.

The Aims of Signal

Together, the Open Whisper Systems / Signal community is working to advance the state of the art for secure communication, while simultaneously making it easy for everyone to use. We aim to make mass surveillance of private messaging a thing of the past, and to do that our biggest focus is currently user adoption; we want Signal (or something as secure as Signal) to be as ubiquitous as other messaging applications such as WhatsApp or Facebook Messenger.

Community Ethos and Attitude

This community is full of brilliant people with brilliant minds, we're all working towards a common goal, a goal that is very close to our hearts. Popularity of Signal and community participation has only been growing as word spreads and people realise what it is we're achieving here... and that is greatly exciting!

...however... because of this, because of how important this project is getting for people, emotions can occasionally run quite high within the community, and discussions can become heated.

While participating in the community, we ask that you try as much as possible to take a calm and measured approach, and try and refrain from feeling frustrated... that's not what any of us want. We need you, we need our community members to support one another on this journey we are sharing. So if you begin to feel angry, agitated or frustrated about something, please try and take the following into account...

The Open Whisper Systems team is very small (you can see this on their website), and they have a mammoth task: development, managing + reviewing contributions on GitHub, responding to issues, responding to support tickets, addressing each of the feature requests that come in (and deciding which ones they can take on etc...), handling PR / marketing / social media, corresponding with large projects that want to get involved and increase growth that drastically change the requirements for the infrastructure, managing and growing the infrastructure itself, managing finances and donations, general admin stuff, and participating in the mailing list. So... unsurprisingly... time is spread very thinly across each of these tasks that the team has to tackle.

Handling Frustration:

  • My PR / Issue got closed without an explanation:

    Please understand that writing detailed explanations every time for every issue someone comes up with takes time. Sometimes a reason has been posted earlier to another related issue which you can search for. It's also possible that your issue was not in line with the guidelines of the project (see especially the Development Ideology). Or it was just simply decided that the issue is not something that Signal should do at this time. Don't let this discourage you! Many of the most active contributors to Signal each had many rejected PRs / Issues before their contributions started getting accepted into the project, it can take a little while to find your footing. Starting off small is a good idea.

  • My Support Ticket has not been responded too:

    There are not many people that are working on / have access to the support system, but they are working as hard and efficiently as they can. If your ticket has not been responded to at all, it's not because they don't care, or think your issue is not important. Don't shy away from trying to get in contact with support again, or perhaps try other avenues to get in contact with various other members of the community, we're generally all very friendly, and will be happy to help.

  • No one wants to add my feature:

    We are very strict with ourselves here as to what features we decide to ultimately implement in Signal, particularly as the development time that we have available is very limited. We want to make decisions that will ultimately result in the best path forward for Signal, encouraging user adoption, and reducing user confusion. If the community ultimately decides that we shouldn't implement a feature right now, again it's not because we don't care, but probably because it's just not what we should be focussing on right now. Please don't be discouraged from submitting future feature requests.

Development Ideology

Truths which we believe to be self-evident:

  1. The answer is not more options. If you feel compelled to add a preference that's exposed to the user, it's very possible you've made a wrong turn somewhere.
  2. The user doesn't know what a key is. We need to minimize the points at which a user is exposed to this sort of terminology as extremely as possible.
  3. There are no power users. The idea that some users "understand" concepts better than others has proven to be, for the most part, false. If anything, "power users" are more dangerous than the rest, and we should avoid exposing dangerous functionality to them.
  4. If it's "like PGP," it's wrong. PGP is our guide for what not to do.
  5. It's an asynchronous world. Be wary of anything that is anti-asynchronous: ACKs, protocol confirmations, or any protocol-level "advisory" message.
  6. There is no such thing as time. Protocol ideas that require synchronized clocks are doomed to failure.

How to Get Involved

There are many ways in which to get involved, both online and offline. For a list and details of the different online spaces that form this community, take a look at Online Spaces below.

Providing Translations

Please don't provide any translations as Pull Requests, all our translations are submitted and reviewed at Transifex, and anyone can contribute translations.

Reporting Bugs

TODO

Requesting New Features

TODO

Development Work

TODO

General Online Handywork / Participating in Discussions

Across the GitHub Repositories and the Mailing List, you can help out by:

  • Advising new people of our guidelines / redirecting them to this page.
  • Trying to reproduce issues that people detail.
  • Testing other people's pull requests.
  • Trying to reproduce issues.
  • Finding solutions to open issues and posting relevant findings as comments.
  • Keeping discussion as positive as possible, and maintaining morale!

And of course, just participating in the discussion at all is great!

Donating Money

TODO

Spreading the Word

TODO

Online Spaces

The Open Whisper Systems community is spread accross a whole range of online spaces, and where you spend your time will depend on what it is you want to do and how you want to contribute. If you don't want to contribute but are just looking for support, we have a dedicated support website.

Support

Website: support.whispersystems.org Email: support@whispersystems.org

This is a dedicated website with answers to many common questions that you can search for, including details on how the security works in Signal. If you can't find the answer to your question, you can also submit a request here.

This is also a good place to submit feature requests if you have a good idea.

The GitHub Repositories

The Signal-iOS, Signal-Android and Signal-Desktop GitHub repositories are where all of the development work takes place for each of the apps. Here you can inspect the code and the ongoing discussions of development.

These repositories each have two main places that discussion and work takes place:

  • Pull Requests: A pull request is when someone submits some code for the maintainers of the project to consider using. The code could for example be a simple bug fix, an introduction of a feature, or a change in the UI / UX.
  • Issues: An issue is just a discussion about some particular "thing" relating to the respective project.

For both of these, every project on GitHub is free to use them however they like, so for Signal, we have some guidelines that we like our community to follow.

Pull Request Guidelines

Do:

Don't:

Issue Guidelines

Do:

  • Submit bug reports for the apps.
  • Discuss usability / UI / UX issues in the apps.

Don't :

  • Submit feature requests. (for that see Requesting New Features)
  • Request support / help with a problem. (for that see Support)
  • Bump issues: Unfortunately 👍s, me toos and asking for updates don't help solving issues. They just generate ever more notifications for the developers to wade through, so please refrain yourself from posting them. However if you have relevant new information to add to the issue then please don't shy away from commenting.

The Mailing List

TODO

Server Support Google Group (Unofficial)

TODO