HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
DrKLO
Telegram
Java2013–2026
DrKLO / Telegram

Telegram

Telegram for Android source

43Distinct people
52Mentions
1Explicit recommenders
30.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Telegram for Android source

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

>Loading your messages on Signal can take quite a while. Yeah if you have to go through hundreds of ratchet steps, yeah it will take time. That's expected. The only way to make…

maqp used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year52 dated mentions

Observed mentions: 2013-12-16 13:13:10 UTC to 2026-02-11 13:41:06 UTC.

0369122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 3 mentions; 3 submissions, 0 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 12 mentions; 0 submissions, 12 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC330
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC12012
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC312
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC505
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC514
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC312
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC615
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC514
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Telegram messenger for Android Telegram is a messaging app with a focus on speed and security. It’s superfast, simple and free. This repo contains the official source code for Telegram App for Android. Creating your Telegram Application We welcome all developers to use our API and source code to create applications on our platform. There are several things we require from all developers for the moment. Obtain your own api_id for your application. Please do not use the name Telegram for your app — or make sure your users understand that it is unofficial. Kindly do not use our standard logo (white paper plane in a blue circle) as your app's logo. Please study our security guidelines and take good care of your users' data and privacy. Please remember to publish your code too in order to comply with the licences. API, Protocol documentation Telegram API manuals: https://core.telegram.org/api MTproto protocol manuals: https://core.telegram.org/mtproto Compilation Guide Note: In order to support reproducible builds, this repo contains dummy release.keystore, google-services.json and filled variables inside BuildVars.java. Before publishing your own APKs please make sure to replace all these files with your own. You will require Android Studio 2025.1.4, Android NDK 27.2.12479018 and Android SDK 36. Clone the Telegram source code with its submodules: git clone --recursive --shallow-submodules https://github.com/DrKLO/Telegram.git Telegram In case you forgot the --recursive flag, change to the Telegram directory and run: git submodule init && git submodule update --init --recursive --depth=1 Copy your release.keystore into TMessagesProj/config Fill out RELEASE_KEY_PASSWORD, RELEASE_KEY_ALIAS, RELEASE_STORE_PASSWORD in gradle.properties to access your release.keystore Go to https://console.firebase.google.com/, create two android apps with application IDs org.telegram.messenger and org.telegram.messenger.beta, turn on firebase messaging and download google-services.json, which should be copied to the same folder as TMessagesProj. Open the project in the Studio (note that it should be opened, NOT imported). Fill out values in TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java – there’s a link for each of the variables showing where and which data to obtain. You are ready to compile Telegram. Localization We moved all translations to https://translations.telegram.org/en/android/. Please use it.
Read the full README on GitHub

What Hacker News says

52 sources
maqp·Feb 11, 2026Recommendation phrase
>Loading your messages on Signal can take quite a while. Yeah if you have to go through hundreds of ratchet steps, yeah it will take time. That's expected. The only way to make it faster than that is to deploy it without privacy. That's cheating. >Why are you ignoring the fact Signal actively prohibits third-party clients? Because it's not a problem for security. >Yes, Telegram is far from perfect, and inferior to Signal when it comes to E2EE. Telegram's lack of ubiquitous E2EE is a blocking issue. Signal's wait times is a problem that goes away with 5G, 6G etc., and with them nanometers going down. >But what makes you reject the proprieatry blob claim when it's true? What blobs? Firebase? I have bad news for you wrt Telegram https://github.com/DrKLO/Telegram?tab=readme-ov-file#compila... >Because your favorite messenger is being attacked
Read the rest
? Not my favorite messenger. Nor is it my messenger. Signal is the best messenger for day-to-day use though.
In US has investigated claims WhatsApp chats aren't private
The server IPs are hard-coded into the Telegram client's source: https://github.com/DrKLO/Telegram/blob/d7deedfa33ddfa51c72a5... You know you can just run $ git clone https://github.com/DrKLO/Telegram.git && cd Telegram && FILE="TMessagesProj/jni/tgnet/ConnectionsManager.cpp" && git log --reverse --format='%ad %h %s' --date=short -S'149.154.175.50' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'2001:b28:f23d:f001:0000:0000:0000:000a' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'149.154.167.51' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'95.161.76.100' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'2001:67c:4e8:f002:0000:0000:0000:000a' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s'
Read the rest
--date=short -S'149.154.175.100' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'2001:b28:f23d:f003:0000:0000:0000:000a' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'149.154.167.91' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'2001:67c:4e8:f004:0000:0000:0000:000a' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'149.154.171.5' -- "$FILE" | head -n 1 && git log --reverse --format='%ad %h %s' --date=short -S'2001:b28:f23f:f005:0000:0000:0000:000a' -- "$FILE" | head -n 1 To get when the IPs first appeared, right? :D 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2020-06-04 dceccae0b Update to 6.2.0 (1984) 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 2015-09-24 6bb7547f5 Update to 3.2.2 They've been the same IP addresses for ELEVEN years, and they precede the article you linked by THREE YEARS. They're not playing the catch-up with Russian government. Either Russian government is completely incompetent in that they're blocking 3,000,000 IP addresses and failing, or they are LYING about attempting to block it, which would indicate Telegram is a Russian op.
In US has investigated claims WhatsApp chats aren't private
The worst codebase I've ever worked on was the Telegram client for Android. I mean just look at this file, it's so huge GitHub gives up rendering it: https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/... Or this one, it implements EVERYTHING for rendering and interacting with a message in a single class, all non-service message types, all drawn manually on a canvas "for performance", and all input processed manually too: https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/... I even had the permission from the main developer to refactor some of it, but I never got around to actually doing it. It's a miracle this app works at all.
In "We ran out of columns"
> The released source code has lagged behind the version on the Google Play store by long periods of time many times. Seems like FUD. This took me 30 seconds to check just now: -Telegram's android source code git hasn't had a tagged release in more than two months and is several versions behind the android app (10.12.0 vs 10.9.1)[1] -Signal's android source has a tagged release two days ago that is two releases ahead of the stable version on google's app store, and also lists the tagged release for the version that is on the app store.[2] [1] https://github.com/DrKLO/Telegram/releases [2] https://github.com/signalapp/Signal-Android/tags
In Telegram has launched a pretty intense campaign to malign Signal as insecure
Telegram has fully reproducible builds and is not that complicated to build, no issues there. They even have a guide on how to build & verify. [0] No need to wrangle or modify, generally builds as is (at least from my experience). Granted yes, the version commits are squashed like you said. [1] However I haven't seen source release to lag behind store releases, any sources on that? 0: https://core.telegram.org/reproducible-builds 1: https://github.com/DrKLO/Telegram
In Telegram has launched a pretty intense campaign to malign Signal as insecure
There are various computer vision algorithms for detecting lines in images, like Hough transform[1]. You can combine it with an edge detection algorithm[2] for increased reliability. You would then look for quadrilaterals that have some space around them (as required by the QR code spec), transform them into squares, binarize the pixels (there are different approaches to that too, but a simple threshold would work in simplest cases), and only then would you start looking for the corner markers and trying to actually decode the QR code. At least that's how I'd do it if I were to build a QR code reader from scratch. I built a similar thing for Telegram a while ago[3] for recognizing the text in the machine-readable zone of passports and ID cards. It does different things after the initial detection/transform/binarization steps, but those wo
Read the rest
In Decoding small QR codes by hand (2012)

Showing the 15 most recent of 52 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.