More specifically, I’m thinking about forkgram, a telegram fork. I get that open source app make their code public therefore people can use it and build from it, but I thought it allowed for creating a separate app. Forkgram however still has all my chats so it must be able to connect to telegram servers and both apps must be somehow intertwined. Since telegram is only partly open sourced, I don’t understand how this is possible and why telegram would allow this?
I’m short on time, but here’s the general idea. Telegrams front end, the part you use I the open source part. The backend is the closed off part. The two parts are separate but communicate via a protocol, kinda like email. The forked project can change anything they want, to make it do whatever they want, but it still needs to be able to speak to the backend server.
Telegram has all of your chats in readable form on their servers. Any app can connect to it, granted they get a secret token by sending an SMS confirmation code (and optionally a password). Telegram itself has various apps.
When they connect, these apps download your settings, your messages, maybe some contacts, and probably the last few images you’ve sent/received.
You’re not bypassing anything as a third party chat client, you’re using the same information to log in as the official one.
This is how 99% of apps works. Telegram has opted to make the process for connecting open. Other apps try to hide their process, and it can take days to weeks for someone with mild interest to develop an alternative client, though basic send/receive functionality can be built in an hour or so. It’s really the chat app around the protocol that takes a lot of work.
This isn’t always permitted by the terms of service. Discord, for example, tells you they will ban you if you use unofficial apps (they rarely do but it can happen). That’s why every alternative Discord client pretends to be the official one.
Telegram’s openness is one of the reasons I preferred it to WhatsApp, before WhatsApp got itself some basic chat encryption. Telegram never bothered to implement that, so it goes into the “good enough for things I wouldn’t mind leaking too much” pile for me. It’s a real shame, because there are some real fun Telegram bots out there, and being able to automatically send messages through Telegram is a nice touch.
Compare Telegram to websites: web servers host the same type of pages, but any browser on any device can fetch and display those pages, all because the web standard is open. That’s why the web became a success. There were closed-off versions of the web, but they demanded you used their tools and paid for their server software and nobody uses them except for very weird industrial applications.
An app “talks” to server through some interface (what they call an API). If the interface is known, another app can use the same interface. Telegram goes as far as providing code that interfaces with their protocol and full API documentation to explain how to use it. The base app is open source too, so developers can even peek at how the official app does it for inspiration.