Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Commit c84f4c1

Browse files
committed
more writing
1 parent 233eb20 commit c84f4c1

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

docs/blog/posts/2025-03-29-polyproto-public-beta.md

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,49 @@ looking into the topic for a bit, the following became clear:
5050
really decentralized. But
5151
[that is its own rabbit hole](https://blog.muni.town/atproto-isnt-what-you-think/) entirely.
5252

53-
During
53+
During my research into existing protocols which fulfill these criteria, the following are the most promising
54+
ones I have encountered. I will also explain why I did not end up choosing them.
55+
56+
### XMPP
57+
58+
Much like XMPP, I have decided to make polyproto an extensible protocol.
59+
60+
I am of the opinion that XMPPs biggest downfall is how many extensions there are, and that a server
61+
aiming to be compatible with other
62+
implementations of XMPP-based chat services should aim to implement all of the XEPs to be a
63+
viable choice.
64+
65+
polyproto is actively trying to circumvent this by limiting polyproto extensions (P2 extensions for
66+
short) to
67+
68+
- either be a **set** of APIs and behaviors, defining a generic(!) version of a service. A "service"
69+
is, for example, a chat application, a microblogging application or an image blogging application.
70+
Service extensions should be the core functionality that is universally needed to make an
71+
application function. In the case of a chat application, that might be:
72+
73+
- Defining message group size granularity: Direct messages, Group messages, Guild-based messages
74+
- Defining what a room looks like
75+
- Defining the APIs and behaviors required to send and receive messages
76+
- Defining the APIs and behaviors required to perform commonly sought after things, such as reacting to a message with an emoji
77+
- etc.
78+
79+
The goal is that all different polyproto-based chat applications should then implement this shared behavior. Of course, developers
80+
may absolutely add their own behaviors and functionality which is perhaps exclusive to their specific implementation. Core
81+
functionality remains commonly defined however, which should make all polyproto-based chat applications interoperable in these
82+
defined, common behaviors.
83+
84+
- or describe a **major** technological addition, which can be used in the "requires" section of another P2 extension. This "requires"
85+
section can be thought of like the dependency list of a software package.
86+
87+
Technological additions might be:
88+
- Defining APIs and behaviors needed to implement the MLS (Messaging Layer Security) Protocol
89+
- Defining APIs and behaviors needed to establish and maintain a WebSocket connection, and how to send/receive messages over this
90+
WebSocket connection.
91+
92+
By using clay-brick-sized building blocks instead of more LEGO-sized building blocks like XMPP does, we hope to mitigate this problem
93+
that we perceive, while still offering an extensible yet well-defined platform to build on.
94+
95+
Account portability has been implemented in XMPP with
96+
[XEP-0227: Portable Import/Export Format for XMPP-IM Servers](https://xmpp.org/extensions/xep-0227.html).
97+
However, while I think that this XEP is really cool (and I might ~~steal~~ be inspired from it), it
98+
does not protect

0 commit comments

Comments
 (0)