Category Archives: Uncategorized

Chat/Instant Messaging protocols comparison

Comparison Table

ProtocolDecentralizedEncryptionMain Use CaseExamples
XMPPYesOptionalFederated messagingejabberd, Prosody
MatrixYesYesDecentralized chatElement, Synapse
SignalNoYesSecure messagingSignal, WhatsApp
SIPNoOptionalMultimedia communicationAsterisk, Linphone
IRCNoNoCommunity channelsLibera Chat, EFnet
ActivityPubYesOptionalSocial networkingMastodon, Pleroma
WebRTCPeer-to-peerOptionalReal-time communicationVideo calls, games
ToxYesYesPeer-to-peer messagingqTox, µTox
Slack RTMNoNoTeam collaborationSlack
MTProtoNoYesSecure messagingTelegram
JingleYesOptionalReal-time multimedia (via XMPP)Conversations, Dino

Social media protocols comparison

Comparison of ActivityPub, AT Protocol, and Matrix Protocol (mainly a reminder for myself) “

FeatureActivityPubAT ProtocolMatrix Protocol
Primary Use CaseSocial networking (microblogging, content sharing)Social networking with algorithmic controlReal-time communication (chat, VoIP)
Commands/VerbsCreate, Update, Delete, Follow, Like, Announce (Repost)Create, Update, Delete, Follow, Like, Repost, Algorithmic ChoiceSend, Receive, Join Room, Invite, Leave
Data ModelActivity-Object Model in JSON-LDJSON with user-defined schemasJSON (events model for real-time updates)
Transport ProtocolHTTPS, with JSON-LDHTTPS, with JSONHTTP (REST) and WebSocket, with support for end-to-end encryption (E2EE)
Identity ManagementTied to server domain (e.g., @user@domain.com), uses WebFinger for discoveryPortable DIDs for decentralized identityTied to server domain but portable; user ID format is @user:domain.com
FederationFederated, allowing instances to share content and social connections across domainsFederated with content and algorithm controlFederated, with real-time, synchronized state across servers
InteroperabilityWidely interoperable with other ActivityPub-compliant platforms in the FediverseDesigned for custom app experiences, interoperability is in developmentSupports interoperability with other Matrix clients; bridges to other protocols (e.g., Slack, IRC)
End-to-End EncryptionNot native to protocol but possible with extensionsNot natively specifiedBuilt-in and widely supported, particularly in 1:1 and group chats
ModerationInstance-based moderation policies, customizable filters and blocksUser-level and instance-level moderation, customizable algorithmsRoom-level moderation, with granular permissions for room admins
Popular PlatformsMastodon, PeerTube, Pixelfed, WriteFreelyBluesky Social, upcoming decentralized appsElement (main Matrix client), Synapse (server), bridges for Slack, Discord, Telegram, etc.

Summary of Key Differences

  • ActivityPub is best suited for federated social networking, particularly for applications that prioritize openness and content sharing across platforms in the Fediverse. It uses an Activity-Object model with JSON-LD and supports instance-based identity.
  • AT Protocol focuses on user control over content algorithms and portable identities using DIDs, with a vision for interoperability in custom social applications. It is also designed for federated social networks but with more control over data portability and algorithmic transparency.
  • Matrix Protocol excels in real-time, federated communication, supporting secure, encrypted messaging with granular moderation capabilities. It’s heavily used for chat, VoIP, and collaborative tools, emphasizing interoperability with other platforms through bridges.

Big Internet services backend technology map (always out of date )

  • Airbnb: Ruby on Rails, MySQL, Amazon Web Services (AWS)
  • Uber: Go, Node.js, Java, Python, PostgreSQL, MySQL, Redis, Kafka
  • GitHub: Ruby on Rails, Go, Erlang, MySQL, Redis
  • WhatsApp: Erlang, FreeBSD, Yaws, Ejabberd, Mnesia DB
  • LinkedIn: Java, Kafka, Hadoop, Cassandra, Oracle, Voldemort (LinkedIn’s own distributed database)
  • Netflix: Go, Gluster, Apache Tomcat, Hive, Chukwa, Cassandra, Hadoop, MySQL, Amazon Web Services (AWS)
  • Slack: PHP, Java, MySQL, MongoDB, Kafka
  • Facebook: PHP (HHVM), React, GraphQL, MySQL, Cassandra
  • Twitter: Scala, Java, Ruby, MySQL, Aurora, Redis
  • Spotify: Python, Java, ZeroMQ, PostgreSQL, Cassandra, Google Cloud Platform (GCP)
  • Pinterest: Python (Django), Java, Redis, Cassandra, Kafka
  • Snapchat: Python, Java, PHP, Cassandra, Google Cloud Platform (GCP)
  • Dropbox: Python, Go, Rust, MySQL, Amazon Web Services (AWS)
  • Zoom: C++, Java, MySQL, Kafka, Amazon Web Services (AWS)
  • Shopify: Ruby on Rails, MySQL, Redis, Liquid (templating), Google Cloud Platform (GCP)
  • TikTok (ByteDance): Python, C++, Java, Nginx, MySQL, Kafka
  • Reddit: Python (Django), PostgreSQL, Redis, RabbitMQ, Amazon Web Services (AWS)
  • Instagram: Python (Django), React, PostgreSQL, Redis, Amazon Web Services (AWS)

Enchanted by Amanda Gorman speech at Presidential Inauguration 2021

“When day comes we ask ourselves,

where can we find light in this never-ending shade?

The loss we carry,

a sea we must wade

We’ve braved the belly of the beast

We’ve learned that quiet isn’t always peace

And the norms and notions

of what just is

Isn’t always justice

And yet the dawn is ours

before we knew it

Somehow we do it

Somehow we’ve weathered and witnessed

a nation that isn’t broken

but simply unfinished

We the successors of a country and a time

Where a skinny Black girl

descended from slaves and raised by a single mother

can dream of becoming president

only to find herself reciting for one

And yes we are far from polished

far from pristine

but that doesn’t mean we are

striving to form a union that is perfect

We are striving to forge a union with purpose

To compose a country committed to all cultures, colors, characters and

conditions of man

And so we lift our gazes not to what stands between us

but what stands before us

We close the divide because we know, to put our future first,

we must first put our differences aside

We lay down our arms

so we can reach out our arms

to one another

We seek harm to none and harmony for all

Let the globe, if nothing else, say this is true:

That even as we grieved, we grew

That even as we hurt, we hoped

That even as we tired, we tried

That we’ll forever be tied together, victorious

Not because we will never again know defeat

but because we will never again sow division

Scripture tells us to envision

that everyone shall sit under their own vine and fig tree

And no one shall make them afraid

If we’re to live up to our own time

Then victory won’t lie in the blade

But in all the bridges we’ve made

That is the promise to glade

The hill we climb

If only we dare

It’s because being American is more than a pride we inherit,

it’s the past we step into

and how we repair it

We’ve seen a force that would shatter our nation

rather than share it

Would destroy our country if it meant delaying democracy

And this effort very nearly succeeded

But while democracy can be periodically delayed

it can never be permanently defeated

In this truth

in this faith we trust

For while we have our eyes on the future

history has its eyes on us

This is the era of just redemption

We feared at its inception

We did not feel prepared to be the heirs

of such a terrifying hour

but within it we found the power

to author a new chapter

To offer hope and laughter to ourselves

So while once we asked,

how could we possibly prevail over catastrophe?

Now we assert

How could catastrophe possibly prevail over us?

We will not march back to what was

but move to what shall be

A country that is bruised but whole,

benevolent but bold,

fierce and free

We will not be turned around

or interrupted by intimidation

because we know our inaction and inertia

will be the inheritance of the next generation

Our blunders become their burdens

But one thing is certain:

If we merge mercy with might,

and might with right,

then love becomes our legacy

and change our children’s birthright

So let us leave behind a country

better than the one we were left with

Every breath from my bronze-pounded chest,

we will raise this wounded world into a wondrous one

We will rise from the gold-limbed hills of the west,

we will rise from the windswept northeast

where our forefathers first realized revolution

We will rise from the lake-rimmed cities of the midwestern states,

we will rise from the sunbaked south

We will rebuild, reconcile and recover

and every known nook of our nation and

every corner called our country,

our people diverse and beautiful will emerge,

battered and beautiful

When day comes we step out of the shade,

aflame and unafraid

The new dawn blooms as we free it

For there is always light,

if only we’re brave enough to see it

If only we’re brave enough to be it”