Hướng dẫn mã nguồn Telegram IOS phần 1: Tổng quan source code

Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh

Giới thiệu

Telegram là 1 ứng dụng nhắn tin phổ biến nhất trên thế giới, về an toàn bảo mật và dễ sử dụng của nó.

Để chứng minh cho tinh thần bảo mật và minh bạch, Telegram đã open source code trên github để ai cũng có thể xem được. Đây quả thật là 1 điều tuyệt vời mà các developer nhận được. Tôi đã rất ấn tượng với kiến trúc của telegram, những công nghệ mà ứng dụng này đã sử dụng. Nó hoàn toàn khác xa so với những gì mà đa số các developer đã được học. Nếu bạn chỉ mới học về UIKit, thì bạn chắc hẳn sẽ rất khó để bắt đầu. Tuy nhiên, chúng ta hãy cố gắng để tìm hiểu. Biết đâu đấy, một ngày nào đó trình độ chúng ta cũng ngang ngửa với các kỹ sư IT của Telegram 😜.

  67 tools, libraries và resources giúp Web developer "dễ thở" hơn
  Cấu hình JSP views trong InternalResourceViewResolver với Spring Boot JAR file

Loạt bài này tôi tham khảo bài của Bo, 1 dev nào đó có code cả ios và android. Cho nên nếu bạn đọc được tiếng Anh thì tốt quá. Tài liệu này tôi viết cho bản thân đọc, và cho ai đó cũng có mong muốn khám phá mã nguồn Telegram nếu cần. Đầu tiên là đọc về nó, tiếp theo là thực hành với nó. Nào chúng ta cùng bắt đầu thôi.

Tổng quan về source code.

Telegram-iOS được cầu thành từ hơn 200 submodules, với hơn 2 triệu dòng mã được chia làm 5 nhóm chính như sau:

  1. App: Module hỗ trợ các tính năng chính của ứng dụng như utils, UI, network…
  2. voIP: Tính năng gọi thoại được phát hành cuối tháng 3, 2017.
  3. Watch: Telegram cho đồng hồ.
  4. TON: tích hợp thử nghiệm với nền tảng blockchain mới.
  5. 3rd-party: Các thư viện hỗ trợ bên ngoài cho ứng dụng.

Dưới đây là thống kê theo hình ảnh:

Telegram-iOS là một dự án nhiều ngôn ngữ hỗn hợp. Hãy nhìn vào mục App, chúng ta có khoảng 70% code swift và 24% code Objective-C. Buck là tool được hỗ trợ xây dựng dự án. Nhưng hiện tại họ đã chuyển sang Bazel. Cho những ai không quen với các tool này, thì nó cũng na ná .xcodeproj hay .xcworkspace – những thứ mà bạn đã quen thuộc khi xây dựng dự án vừa và nhỏ với Xcode. Tuy nhiên về lâu dài, việc xây dựng với chúng sẽ khó khăn hơn thông qua chỉnh file xml qua Xcode, đôi khi bạn sẽ gặp tình trạng conflict code file này, thì thật là tai hại.

Buck là build system được xây dựng bởi kỹ sư Facebook. Nó khuyến khích sử dụng các module nhỏ gồm code và resources, cấu hình trong config file rõ ràng và build nhanh hơn. Với 1 module bất kỳ, nó yêu cầu 1 file BUCK, chứa các config rule trong hàng chục dòng, 1thư mục Sources và thư mục chứa hình ảnh, âm thanh resources không bắt buộc. Sau đó câu lệnh buck project sẽ tự động sinh ra Xcode project files cho các kỹ sư sử dụng Xcode, đồng thời chúng sẽ được bỏ qua khi đẩy lên git(.gitignore). Bạn có thể tìm hiểu kỹ hơn trong Makefile. Còn đây là 1 project mẫu sử dụng BUCK để build ứng dụng IOS:

https://github.com/airbnb/BuckSample

Submodules

Đây là danh sách thông kê cho 229 modules. 136 modules không quá 2 tệp nguồn, với vài trăm dòng code.

Kết luận

Vậy là chúng ta đã hiểu tổng quan về source code Telegam-iOS này rồi. Chúng ta sẽ phân tích kỹ hơn về Submodules trong các bài đăng tiếp theo.

Bài viết gốc được đăng tải tại codetoanbug.com

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev