Rumble Documentation

Getting Started

Welcome

Rumble is a micro-blogging application that allows users to send/receive and share statuses, which is a small message with an optional attached file (only image for now). The originality of Rumble is that it doesn't rely on the Internet to work, instead, Rumble uses the human mobility and physical proximity to spread messages. Using smartphones (and their standard local wireless technologies such as WiFi and Bluetooth), users can discover each other, exchange their interests and group membership, and opportunistically propagate messages in a delay-tolerant fashion. Delay-tolerant stands for "it can take a while to propagate", this is because propagation of messages are dependant on human interaction and software availability.

Features

  • Off-The-Grid
  • Share Text and Pictures
  • Real-time chat conversation
  • Create private communities
  • Interest-driven routing protocol (based on user's subscription to hashtags)
  • Free Software

Using the App

Login Screen

You can input your username in the login screen. This step doesn't require any online registration or anything. Once you hit Log In, you enter a window featuring two tabs, one for micro-blogging and one for real-time conversation (chat). If you swipe the windows to the left, the network drawer appears, if you swipe to the right, the navigation drawer appear

Statuses (micro-blog)

Rumble users exchange statuses. A status is a message, approximately the size of a tweet, that may also carry an image as well as some hashtags. When two users are within reach of each other, the Rumble application on both phones automatically sets up a connection using WiFi or Bluetooth and proceeds with the exchange of some statuses stored on both local storage database. Every status received is stored in the database and displayed to the user and may later be pushed to other devices opportunistically. Thus, statuses propagate throughout the network using human mobility, social fabric and local wireless interfaces only. Such design is inherently delay-tolerant as a status may take minutes, hours or days to be received by a specific individual, if received at all, but it also makes it resilient to communication blackout or censorship as it does not rely on any third party to work.

Hashtags are important because you can use them to filter the statuses. If you click on a hashtag, a filter list appear on the top of the screen and the status list will only display statuses that feature this hashtag. You can choose to register to a given hashtag by clicking on the corresponding subscribe button. By doing so, you will add the hashtag to your interest list that will be share with your neighbour. This interest list will be used by the neighbour to send you the most relevant status. Whenever you receive new statuses, a red notification will appear an the Status tab name featuring the number of unread status. You can refresh the status list by swiping it down.

You can compose a new status by clicking on the floating button located at the bottom of the screen. On the compose popup, you can write some text, attach an image from the library, take a picture and select the group this status will belong to. Once it is send, it is immediately pushed to the neighbours, if any. If there is no neighbour at the moment, it will remain on the phone and pushed to neighbour every opportunity it gets.

Chat Tab

The chat mode of operation is designd for real-time conversation only with the member of the current ad-hoc network. The ad-hoc network is formed by all the node currently connected within each other, it includes you, your connected neighbour, those connected to your neighbour etc. In the chat mode of operation, every message is broadcasted to the entire ad-hoc network. The number at the bottom of a sent message indicates the number of your direct neighbour that received the message but not the number of peer that actually received the message (it can be more). As opposed to the status, chat message doesn't work in a disconnected fashion, if nobody is connected to you, the message you send won't be receive by anybody. This is real-time only !

If you swipe the window to the right, you access the navigation drawer which allows you to access:

  • the list of groups you belong to
  • the list of user you met or received status from
  • the list of hashtag from where you can subscribe/unsuscribe
  • the settings
  • shutdown which terminate the app as well as all the background networking operation

Network Drawer

If you swipe the window to the left, the network drawer will appear. This pane allows you to monitor and control the networking operation. The first two button allows you to switch the mode of Bluetooth and Wifi and bellow is the list of neighbour that are around you at the moment

The Bluetooth Button has three states as following:

  • State 1: The bluetooth interface is switched off
  • State 2: The bluetooth interface is switched on but the device is not discoverable (it won't appear in the neighbour list, unless it is connected). It means that unless your phone initiate the connection, nobody will connect to you.
  • State 3: The bluetooth interface is switched on and the device is discoverable. This is the preferred mode of operation!

The Wifi Button has three states as following:

  • State 1: The wifi interface is switched off
  • State 2: The wifi interface is switched on and connection to access point is managed by the system or the user through the Android Wifi Setting.
  • State 3: The wifi interface is switched on in access point mode.

While bluetooth automatically connects to any other rumble phone in the surrounding, the WiFi mode of operation requires the presence of an Access Point unless it is an access point itself. This is because as of now, it is still not possible to automatically connect to an android phone in ad-hoc mode or in wifi-direct mode without relying on a user intervention which would be too cumbersome (see this and this)

Communities

Create a group

From the navigation drawer, you can access the group list clicking on the Groups button. This will open a new window featuring all the group you belong to. To create a new Group, you click on the button +, it will open a popup where you can choose the group name and wether the group is private or not.

Join a group

If the group is public and you know nobody from the group, you can simply create a new public group with the same group name. If the group is private it can only be joined through an invitation from a member. A member can create an invitation by clicking on the "invite" button which will display a QR-Code that you can scan with your phone. Note that it also works for a public group.

Settings

Storage

The storage gives you an overview of the space taken by the app, the database and the files. You can clear all the data, that is the database and the files by clicking on the Button Clear Data. This action is not reversible and every data will be lost (unless you receive them later again). You can also choose to clear the statuses (and their corresponding files) or the chat conversations or the files alone.

Statistics

Rumble core mechanism is the routing protocol which tries its best to push the most relevant statuses in priority. The academic research community has been working on those issue for quiet some time now but we have a lack of real world data about the way people interact together. Most of the protocols are tested using simulation based on mobility model and having a better understanding of people's real world interaction would help building more resilient protocols. To this end and if you wish to contribute to the underlying research, Rumble can report to our server a number of statistics (but it doesn't by default).

Because Rumble was designed with privacy in mind, the data collected are anonymised and send to our server using HTTPS only. Rumble also carry our Server's certificate to be sure that nobody can tap on the connection. Also we do not collect the statuses nor the conversation, we only collect statistic such as the time you were connected to another phone, the number of message send/received, the number of messages in the database etc. You can find all the logic in the source code itself on github

If you want to contribute, you can opt-in in the setting by clicking on the check box.

Debug

Rumble is still in development and a lot of features we plan are still missing. It is also possible that sometime the app crash for some reason. If it happens, please send a Bug Report so that we can quickly fix the code. If you do not have gapps installed (because you are running cyanogenmod), then I would greatly appreciate if you take the time to create an issue on github. It is even better if you copy/paste the logcat when the crash happened, to print more information on logcat about Rumble's event, click on the checkbox logcat debugging.