SELECT * FROM internet: Hành trình phá bỏ những khu vườn có tường bao

Công nghệ27 tháng 8, 2026·8 phút đọc

Bài viết phân tích vấn đề 'khu vườn có tường bao' trên web hiện đại, khi các nền tảng lớn như X (Twitter) và Meta đóng API, chặn các ứng dụng bên thứ ba như Nitter. Tác giả giới thiệu giao thức atproto của Bluesky như một giải pháp mở, cho phép các nhà phát triển truy cập dữ liệu trực tiếp qua các máy chủ dữ liệu cá nhân (PDS), tạo ra một mạng xã hội phi tập trung thực sự.

SELECT * FROM internet: Hành trình phá bỏ những khu vườn có tường bao

SELECT * FROM internet: Hành trình phá bỏ những khu vườn có tường bao

Bài viết này phân tích cuộc chiến giữa các nền tảng mạng xã hội đóng kín và cộng đồng phát triển web mở, bắt đầu từ việc X gửi thư ngừng và chấm dứt (cease-and-desist) tới Nitter. Tác giả chỉ ra rằng các API đóng là gốc rễ của vấn đề và đề xuất atproto (giao thức của Bluesky) như một giải pháp thay thế, cho phép các nhà phát triển thực hiện "SELECT * FROM internet" một cách thực sự.

Khu vườn có tường bao: Vấn đề kinh niên của Web

Năm 2007, Tim Berners-Lee đã viết bài luận "The Giant Global Graph". Trích dẫn: "Có những tiếng kêu từ trái tim... cho tình bạn của tôi, mối quan hệ đó với người khác, vượt qua các tài liệu và trang web... Sau đó bất kỳ trang web hoặc chương trình nào khác cũng có thể sử dụng thông tin đó."

Có vẻ như phù hợp khi X đang gửi thư ngừng và chấm dứt tới Nitter để nhớ về bài luận của TBL. Nitter - đã từng là - một giao diện đơn giản cho X cho phép người dùng xem tweet mà không cần đăng nhập. Chỉ việc proxy nhỏ đó cũng đủ để nhận được các mối đe dọa pháp lý.

Twitter API năm 2007 nổi tiếng mở, cho phép hàng nghìn nhà phát triển xây dựng ứng dụng, công cụ và phân tích miễn phí. Vậy điều gì đã xảy ra? Tại sao nó bị đóng? Đơn giản: mạng lưới đã thắng. Các nhà phát triển không còn là tài sản, và API dần bị đóng lại. Giới hạn tốc độ, các gói giá, yêu cầu đăng nhập, rồi chặn kỹ thuật đối với các giải pháp, và giờ là thư từ luật sư. Meta đã thực hiện cùng một kịch bản một thập kỷ trước và giờ thật khó để nhớ rằng từng có một Facebook hoặc Instagram API đáng để xây dựng.

Đây là lý do Brewster Kahle, người sáng lập Internet Archive, đã kêu gọi hơn một thập kỷ qua để chúng ta khóa Web mở.

Mô tả về mạng xã hội phi tập trungMô tả về mạng xã hội phi tập trung

Vấn đề không chỉ là sự vô thường của API

Nitter bắt đầu sử dụng API của X. Khi API đó bị đóng, nó đọc các trang web công khai. Và giờ khi không còn gì để đóng, yêu cầu là mã nguồn phải được gỡ xuống. Một chương trình hiển thị các bài đăng công khai đang bị coi là thiết bị lách luật theo các đạo luật tội phạm máy tính.

Nhưng sự vô thường không phải là vấn đề duy nhất. Ngay cả một API vĩnh viễn, miễn phí, hào phóng về giới hạn tốc độ cũng không đủ. Các ứng dụng cần quyền truy cập có ý nghĩa hơn nhiều so với những gì API có thể cung cấp.

  • Bạn chỉ có thể hỏi những câu hỏi mà ai đó đã nghĩ đến việc trả lời. API là một thực đơn cố định. Nó cung cấp getPosts(user) và getFollowers(user). Nếu ý tưởng sản phẩm của bạn cần "bài đăng từ những người mà người theo dõi của tôi theo dõi, xếp hạng theo tần suất được trích dẫn", không có endpoint nào cho điều đó, và sẽ không bao giờ có, vì không ai tại công ty đó xây dựng cho sản phẩm của bạn.
  • Ngay cả những câu hỏi đúng cũng trả về với hình dạng sai. Người theo dõi đến 100 người một lần. Một tài khoản có hai triệu người theo dõi là 20.000 lượt truy cập. Với bất kỳ giới hạn tốc độ lịch sự nào, đó là hàng giờ làm việc để trả lời một câu hỏi về một người dùng — vì vậy bất cứ điều gì tương tác, bất cứ điều gì phải cảm thấy tức thì, đều nằm ngoài khả năng trước khi bạn bắt đầu.
  • Bạn không thể kết nối giữa các "tủ hồ sơ". Các câu hỏi thú vị hầu như luôn là xuyên dịch vụ: bài đăng của người này với ảnh của người kia với đánh giá của dịch vụ thứ ba. Hai lễ tân ở hai tòa nhà không thể tham chiếu chéo bất cứ điều gì, và bạn cũng vậy.
  • Bạn không thể lập chỉ mục dữ liệu bạn không nắm giữ. Tìm kiếm, xếp hạng, đề xuất, nguồn cấp dữ liệu, công cụ kiểm duyệt — tất cả đều được xây dựng trên các chỉ mục trên toàn bộ kho dữ liệu, được bố trí cho các câu hỏi cụ thể mà sản phẩm của bạn hỏi. Bạn không thể xây dựng một chỉ mục qua một lỗ khóa.

atproto: Chia sẻ cơ sở dữ liệu thay vì API

Để thực sự xây dựng một dịch vụ, chúng ta cần toàn bộ tập dữ liệu thay vì một góc nhìn vào nó; chúng ta cần nó trực tiếp, đến khi nó thay đổi thay vì được thăm dò; chúng ta cần lập chỉ mục nó theo bất cứ cách nào sản phẩm của tôi yêu cầu; chúng ta cần ghi lại vào nó; và chúng ta cần tất cả điều đó được đảm bảo theo cách mà không một ưu tiên hàng quý nào của công ty có thể thu hồi.

Các ứng dụng desktop xử lý việc này bằng cách chia sẻ hệ thống tệp. Các ứng dụng Internet không sử dụng tệp; chúng sử dụng cơ sở dữ liệu. Chúng ta cần chia sẻ cơ sở dữ liệu.

Là một người dùng, tôi không muốn bị khóa trong một ứng dụng hơn là bị khóa trong cốp xe hơi. Tôi muốn một thị trường tự do thực sự.

Minh họa về cách atproto hoạt độngMinh họa về cách atproto hoạt động

Vậy làm thế nào chúng ta chia sẻ cơ sở dữ liệu? Chúng ta không chia sẻ một cái. Chúng ta chia sẻ rất nhiều cái. Chúng ta tạo ra một mạng lưới các máy chủ dữ liệu cá nhân (PDS) mà các ứng dụng tương tác.

  • Làm thế nào để xử lý các truy vấn SELECT * phức tạp đến máy chủ dữ liệu cá nhân? Chúng ta không xử lý. Chúng ta sao chép dữ liệu trên các bản ghi (logs). Mỗi ứng dụng tổng hợp các bản sao dữ liệu để truy vấn cục bộ.
  • Làm thế nào để ứng dụng ghi vào cơ sở dữ liệu đó? Trong trường hợp này — chúng ta làm được! Ứng dụng gửi ghi vào PDS, sau đó PDS sao chép ngược ra các ứng dụng khác.

Điểm cuối cùng này là cốt lõi của trực giác về atproto: vòng lặp ghi/nạp. Hầu như mọi ứng dụng atproto đều có mã như thế này:

// ghi
pds.putRecord(post)
// nạp
onPut('app.bsky.feed.post', evt => {
  mydb.put('posts', {...})
})

SELECT * FROM internet có hoạt động không?

Có. Mạng lưới tồn tại. Nó trực tiếp, công khai, và bạn có thể đọc tất cả ngay bây giờ — từ một máy tính xách tay, không cần xin phép ai. Đây chính xác là cách Bluesky, Tangled, Leaflet, và một loạt ứng dụng khác hoạt động hiện nay.

Hãy xem một số số liệu thống kê. Tại thời điểm viết bài, có:

  • 46,1 triệu tài khoản trên atproto
  • 24,5 tỷ bản ghi
  • 3,15 tỷ trong số đó là bài đăng
  • 17,4 tỷ trong số đó là lượt thích
  • 500-1000 sự kiện ghi mỗi giây
  • Hơn 5000 máy chủ dữ liệu cá nhân
  • Và đủ ứng dụng để tạo nên một trang appstore khá tốt

Chưa bao giờ dễ dàng hơn để truy cập dữ liệu với dịch vụ jetstream mới.

import { Jetstream, isCreate } from '@bsky/jetstream';
import { app } from '@bsky/sdk/lexicons';

const jetstream = new Jetstream('https://jetstream.us-east.bsky.network');
const collections = [app.bsky.graph.follow, app.bsky.feed.repost, app.bsky.feed.post];

for await (const event of jetstream.live({ collections })) {
  if (isCreate(event, app.bsky.graph.follow)) {
    console.log(`🌱  ${event.did}  follows  ${event.commit.record.subject}`);
  } else if (isCreate(event, app.bsky.feed.repost)) {
    console.log(`♻️  ${event.did}  reposts  ${event.commit.record.subject.uri}`);
  } else if (isCreate(event, app.bsky.feed.post) && event.commit.record.reply) {
    console.log(`💭  ${event.did}  replies  ${event.commit.record.reply.parent.uri}`);
  }
}

Hình ảnh về cộng đồng phát triển atprotoHình ảnh về cộng đồng phát triển atproto

Lời kêu gọi hành động

Hãy ngừng nhận các thư ngừng và chấm dứt. Hãy SELECT * FROM internet.blogposts thay vì tiếp tục phụ thuộc vào các API đóng.

Đối với các nhà phát triển Việt Nam, đây là cơ hội vàng. Thay vì phụ thuộc vào các nền tảng lớn với chính sách thay đổi liên tục, bạn có thể xây dựng các ứng dụng mạng xã hội phi tập trung, khai thác dữ liệu công khai từ atproto. Điều này mở ra cánh cửa cho các startup công nghệ trong nước tạo ra những sản phẩm sáng tạo không bị ràng buộc bởi "những khu vườn có tường bao".

Và nếu bạn đang tìm kiếm cụ thể các bài viết blog trên atproto, bạn có thể muốn sử dụng standard.site.

👉 Theo dõi tác giả trên Bluesky.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗