MCPcopy Index your code
hub / github.com/Marlinski/Rumble

github.com/Marlinski/Rumble @v1.0.2-16

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.2-16 ↗ · + Follow
1,618 symbols 4,341 edges 240 files 242 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Rumble

A decentralized and delay-tolerant twitter-like mobile application.

Get it on F-Droid

Abstract

Rumble enables the spread of messages in an epidemic fashion using automatically formed and opportunistic local ad-hoc network. Every message sent or received with are stored on the local database and pushed to every other device it meets. By doing so, messages naturally propagates throughout the network using social links as the underlying infrastructure. Because it doesn't rely on any fixed infrastructure like the Internet, it is naturally resistant against censorship.

Because a large number of message may exists, Rumble prioritized messages based on various parameters such as hashtag subscriptions, replication density, date of creation etc.

By default, everyone belongs to the "rumble.public" group which is open but Rumble also enable the possibility to create private communities encrypted with AES-128 (CBC/PKCS5). A message that belongs to a private community only propagates through members of this community, and a new member can only join a community after being invited or "vouched" by another member.

Rumble also support a real-time "chat" to exchange message with the current neighborhood only. In this mode, messages are not forwarded any further.

Technical Details

Whenever Rumble is running, it automatically discover its neighborhood (bluetooth and wifi) and forms local area network. Each time a new communication channel is created between two devices, they exchange their "preferences" and start exchanging the messages with each other.

License

GNU General Public License version 3

Extension points exported contracts — how you extend this code

LinkLayerAdapter (Interface)
LinkLayerAdapter is an Interface that is responsible of managing a LinkLayer interface such as Bluetooth or Wifi. It is [6 …
app/src/main/java/org/disrupted/rumble/network/linklayer/LinkLayerAdapter.java
LinkLayerNeighbour (Interface)
@author Lucien Loiseau [8 implementers]
app/src/main/java/org/disrupted/rumble/network/linklayer/LinkLayerNeighbour.java
Scanner (Interface)
@author Lucien Loiseau [6 implementers]
app/src/main/java/org/disrupted/rumble/network/linklayer/Scanner.java
RumbleEvent (Interface)
@author Lucien Loiseau [67 implementers]
app/src/main/java/org/disrupted/rumble/app/RumbleEvent.java
Worker (Interface)
A worker is a thread, running into a WorkerPool. Because of resource limitation, we maintain a fixed number of worker in [5 …
app/src/main/java/org/disrupted/rumble/network/Worker.java

Core symbols most depended-on inside this repo

getContext
called by 163
app/src/main/java/org/disrupted/rumble/app/RumbleApplication.java
d
called by 146
app/src/main/java/org/disrupted/rumble/util/Log.java
add
called by 91
app/src/main/java/org/disrupted/rumble/network/services/push/PushService.java
getName
called by 79
app/src/main/java/org/disrupted/rumble/database/objects/Group.java
getBlockLength
called by 58
app/src/main/java/org/disrupted/rumble/network/protocols/rumble/packetformat/BlockHeader.java
getUid
called by 57
app/src/main/java/org/disrupted/rumble/database/objects/Contact.java
close
called by 51
app/src/main/java/org/disrupted/rumble/util/EncryptedInputStream.java
getAuthor
called by 48
app/src/main/java/org/disrupted/rumble/database/objects/PushStatus.java

Shape

Method 1,323
Class 264
Interface 16
Enum 15

Languages

Java100%

Modules by API surface

app/src/main/java/org/disrupted/rumble/database/objects/PushStatus.java47 symbols
app/src/main/java/org/disrupted/rumble/database/DatabaseFactory.java31 symbols
app/src/main/java/org/disrupted/rumble/network/protocols/rumble/packetformat/BlockHeader.java29 symbols
app/src/main/java/org/disrupted/rumble/database/objects/Contact.java28 symbols
app/src/main/java/org/disrupted/rumble/network/NeighbourManager.java27 symbols
app/src/main/java/org/disrupted/rumble/network/services/push/PushService.java24 symbols
app/src/main/java/org/disrupted/rumble/network/protocols/rumble/packetformat/BlockContact.java23 symbols
app/src/main/java/org/disrupted/rumble/network/NetworkCoordinator.java22 symbols
app/src/main/java/org/disrupted/rumble/util/RumblePreferences.java21 symbols
app/src/main/java/org/disrupted/rumble/database/objects/ChatMessage.java21 symbols
app/src/main/java/org/disrupted/rumble/userinterface/adapter/StatusRecyclerAdapter.java20 symbols
app/src/main/java/org/disrupted/rumble/util/CryptoUtil.java19 symbols

For agents

$ claude mcp add Rumble \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page