Opencord: Difference between revisions

add input from xinto and cleanup
m (change category)
(add input from xinto and cleanup)
Line 1: Line 1:
[[File:Opencord.png|thumb|Opencord's original logo]]
[[File:Opencord.png|thumb|Opencord's original logo]]


[https://github.com/MateriiApps/OpenCord Opencord] was an open-source Material You implementation of the Discord Android app. Created in late August of 2021, it has reimplemented a sizable portion of the mobile Discord client, completely from scratch. It aims to replicate the functionality and behavior of the [[v126.21|Legacy Android Discord app]], the last release of which was in the summer of 2022. Despite steady development initially, it alternated between periods of rapid progress and months of inactivity. Progress completely stopped by May 2023, and it was archived on Jan 12, 2024. As of March 2024, it still has over 1.2k stars on GitHub.
[https://github.com/MateriiApps/OpenCord Opencord] was an open-source Material You implementation of the Discord Android app. Created in late August of 2021, it has reimplemented a sizable portion of the mobile Discord client, completely from scratch. Despite steady development initially, it alternated between periods of rapid progress and months of inactivity. Progress completely stopped by May 2023, and it was archived on Jan 12, 2024. As of March 2024, it still has over 1.2k stars on GitHub.


==Backstory==
==Backstory==


While the original reason for its creation is unknown<sup>[Xinto needed]</sup>, as [[Aliucord|another mobile client mod]] started to mature, it became apparent that adding dozens of fixes onto an outdated client would eventually become unsustainable. While the first 8 months of development were only propelled by [https://github.com/x1nto Xinto], in Apr 2022, [https://github.com/rushiiMachine rushii] started contributing to the project and eventually became one of the two main developers. After an amount of time, most contributions started to be done by only rushii as Xinto focused on other projects. Eventually, rushii stopped work on it as well due to roadblocks in designing a proper architecture, exacerbated by loads of technical debt, and dozens of heated debates over the most minuscule of changes.
While the original reason for its creation was that Xinto was fed up with crossplatform React Native apps everywhere<ref>{{cite web|title=Materii discord message|url=https://discord.com/channels/885879572447522817/885879572447522820/1215711663525863442}}</ref>, as [[Aliucord]], another client mod, started to mature, it became apparent that adding dozens of fixes onto an outdated client would eventually become unsustainable, and an entirely new client would be needed. While the first 8 months of development were only propelled by [https://github.com/x1nto Xinto], in Apr 2022, [https://github.com/rushiiMachine rushii] started contributing to the project and eventually became one of the two main developers. After an amount of time, most contributions started to be done by only rushii as Xinto focused on other projects. Eventually, rushii stopped work on it as well due to roadblocks in designing a proper architecture, exacerbated by loads of technical debt, and dozens of heated debates over the most minuscule of changes.


One of the main goals of the project was to avoid the instability of client mods by reimplementing everything from scratch, instead of relying on patching Discord code which can easily due to updates. In doing so, a lot of things could be omitted or simplified, like the intentional exclusion of nitro features. (i.e. super reactions, profile effects, etc.) Having a clean interface that focused on usability and simplicity while remaining functional was an important design goal.
One of the main goals of the project was to avoid the instability of client mods by reimplementing everything from scratch, instead of relying on patching Discord code which can easily break due to updates. In doing so, a lot of things could be omitted or simplified, like the intentional exclusion of nitro features. (i.e. super reactions, profile effects, etc.) Having a clean interface that focused on usability and simplicity while remaining functional was an important design goal.


While Discord doesn't "care" about client mods or 3rd party clients, the truth is that if certain API and gateway requests are incorrect, the account will be flagged in a variety of ways and could cause additional captchas, forcing phone verification, or an outright ban.<ref>{{cite web|title=Cordless shutdown notice|url=https://github.com/Bios-Marcel/cordless?tab=readme-ov-file#i-am-closing-down-the-cordless-project}}</ref> This is one of the major reasons why development took so long since the client must act exactly like a [[v126.21]] Discord client, from the identification sent to the API and gateway, to the request content on specific endpoints, to even TLS metadata.<ref>{{cite web|title=JA3 TLS fingerprinting|url=https://github.com/salesforce/ja3}}</ref>
While Discord doesn't "care" about client mods or 3rd party clients, the truth is that if certain API and gateway requests are incorrect, the account will be flagged in a variety of ways and could cause additional captchas, forcing phone verification, or an outright ban.<ref>{{cite web|title=Cordless shutdown notice|url=https://github.com/Bios-Marcel/cordless?tab=readme-ov-file#i-am-closing-down-the-cordless-project}}</ref> This is one of the major reasons why development took so long since the client must act exactly like a [[v126.21]] Discord client, from the identification sent to the API and gateway, to adhering to all ratelimits, to even spoofing the TLS metadata.<ref>{{cite web|title=JA3 TLS fingerprinting|url=https://github.com/salesforce/ja3}}</ref>


==Architecture==
==Architecture==