EmolLi / SignArch

an architectural description (AD) of the Android client of the Signal messaging application.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SignArch

SignArch is an architectural description (AD) of the Android client of the Signal messaging application, or simply Signal Android, originally developed by Open Whisper Systems and now by its successor, Signal Messenger.

Content of this AD

  1. This README file, which contains an introduction summary of Signal Android and this architectural description.
  2. Introduction to Signal Android’s development philosophy and stakeholders, as well as slides used to support two presentations (first, second) of Signal Android's architecture
  3. Context View providing an overview of the development and deployment context of Signal Android
  4. Functional View introducing the major functional elements
  5. Information View describing how information is handled (this view does not need to be read after the Functional view)

Signal and Signal Android

Signal is a multi-platform messaging application for simple private communication. It conforms to high privacy and security standards, following the privacy-by-design principle. However, it presents a user-friendly interface and handles high data throughput, so that privacy and security do not come at the cost of lower usability.

While Signal has a large ecosystem that includes client and server system for different platforms, and Signal's own encryption protocols, this AD focuses on the Android client only. As a part of a larger system, Signal Android needs to co-evolve with the Android Framework and remain up-to-date with state of the art cryptographic and communication protocols.

At the time of writing, Signal Android is a 100k LOC Java application with a large user base (over 10M installs on Google Play) and an active development community (over 175 contributors to the GitHub repository, with several commits per day, and an active community forum). It has been discussed in news websites such as The Verge, Wired, and Electronic Frontier Foundation.

The code of this application is hosted on GitHub.

Purpose and Format of this AD

The purpose of this AD is to allow developers new to Signal to understand the general architecture of Signal Android, as well as important related concepts and principles used to inform the architecture.

The views presented in this AD follow the Context, Functional, and Information viewpoints described in Software Systems Architecture: Working with Stakeholders using Viewpoints and Perspectives, 2nd edition, by Rozanski and Woods. This reference book also guided the content and format of the other parts of this AD.

This AD was developed by five students as part of a course on Software Architecture taught at McGill University, Canada, during the Winter 2019 term. The history of this AD may reflect its origin, and traces of previous stages are kept in the AD-development folder.

AD Authors

Main authors:

  • Mathieu Nassif
  • Dong Wang
  • Maximilian Schiedermeier
  • Duan Li
  • Maksim Bober

We thank the following people for their helpful feedback on this AD:

  • Prof. Martin P. Robillard (course instructor)
  • Rez GodarzvandChegini (TA)
  • Kaylee Kutschera (TA)
  • Students of McGill's COMP 529 class of Winter 2019

About

an architectural description (AD) of the Android client of the Signal messaging application.