Embed Notice
HTML Code
Corresponding Notice
- Embed this notice@sally @SuperDicq @Suiseiseki @thatbrickster
Freedom 0 of free software guarantees users "the freedom to run the program as they wish, for any purpose". This does not mean all features must work without restrictions — but rather that the execution of the software on your computer is unrestricted.
Telegram Desktop requires that, when building your own copy, you provide an api_id and api_hash. You can obtain "your own credentials" (which requires executing proprietary software) — not to forbid execution, but to authorize access to its API. However, Telegram provides public test credentials. If you use the public test credentials:
api_id: 17349
api_hash: 344583e45741c457fe1862106095a5eb
the client can be compiled, executed, and its interface explored — but when attempting to log in, it will return an internal server error (API_ID_PUBLISHED_FLOOD). That limitation affects the usefulness of the login feature, not the freedom to execute the software.
Disabling part of a software functionality does not infringe freedom 0 as long as the binary can be executed. And since Telegram Desktop is free software, freedoms 1 and 3 allow you to study, modify, and redistribute the software. If you find the credential requirement unacceptable, you are free to remove or alter that check in your version and share it freely:
wget -qO- https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/Telegram/SourceFiles/config.h | sed -n "88p"
Removing that #error allows you to compile without the preprocessor stopping you, but it does not elude the server verification – the client will continue to use the test credentials (17349/…5eb) and Telegram will reject the login with an internal server error.
You would also need to replace those constants with valid credentials or modify the client to point to your own MTProto server – but all official clients have the RSA key of Telegram's server hardcoded so without that key, you will never be able to connect to your own server.
In conclusion, the requirement of an api_id and api_hash limits access to the Telegram API — but it does not stop you from executing the software. Therefore, freedom 0 is not infringed — but perhaps this makes the exercise of freedoms 2 and 3 inconvenient.