@@ -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