9 điểm bởi GN⁺ 4 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Chatto là ứng dụng chat dành cho nhóm/đội, tương tự các ứng dụng chat nhóm như Slack, Teams, Discord nhưng hướng tới trải nghiệm gọn nhẹ hơn và nhanh hơn
  • Chỉ với file thực thi, có thể dựng server và cung cấp cả frontend riêng, nên có thể triển khai tương đối đơn giản trên hạ tầng cá nhân
  • Mỗi server phụ trách một cộng đồng, không đưa vào federation giữa các server hay theo dõi/phân tích của bên thứ ba
  • Dữ liệu cá nhân và dữ liệu chat được mã hóa khi lưu trữ bằng khóa theo từng người dùng; khi xóa tài khoản, khóa tương ứng sẽ bị hủy
  • Đây là ứng dụng chat nhóm/đội đã được phát triển trong khoảng 1 năm qua, nay chính thức trở thành mã nguồn mở để bất kỳ ai cũng có thể tự vận hành

Chatto được công bố cho tự host

  • Chatto là ứng dụng chat nhóm/đội đã được phát triển trong khoảng 1 năm qua, nay chính thức trở thành mã nguồn mở để bất kỳ ai cũng có thể tự vận hành
  • Cách chạy nhanh nhất là dùng Homebrew
brew install chattocorp/tap/chatto  
chatto init  
chatto run  
  • Có thể xem quy trình cài đặt trong Getting Started Guide
  • Dù hướng tới mục đích sử dụng tương tự các ứng dụng chat nhóm như Slack, Teams, Discord, Chatto nhấn mạnh trải nghiệm gọn nhẹ hơn và nhanh hơn
  • Có thể xem cách hoạt động thực tế tại Chatto HQ Community

Cấu trúc server và mô hình bảo mật

  • Ở dạng cơ bản nhất, có thể dựng server chỉ bằng một file thực thi, và server cũng cung cấp kèm frontend riêng
  • Mức sử dụng tài nguyên thấp; dữ liệu cá nhân và dữ liệu chat được mã hóa hoàn toàn khi lưu trữ bằng khóa theo từng người dùng
    • Khi người dùng xóa tài khoản, khóa của người dùng đó sẽ bị hủy
  • Mỗi server Chatto vận hành một cộng đồng duy nhất
    • Không có federation dữ liệu giữa các server
    • Cũng không có theo dõi hay phân tích của bên thứ ba
    • Nếu muốn hiện diện đồng thời trên nhiều server, client sẽ kết nối trực tiếp tới từng server
    • Nếu muốn host nhiều cộng đồng, chỉ cần chạy nhiều tiến trình Chatto
  • Hỗ trợ sẵn cuộc gọi thoại/video và chia sẻ màn hình
    • Cuộc gọi được mã hóa đầu cuối
    • Số lượng người tham gia có thể mở rộng tới mức hạ tầng của người dùng chịu được

File triển khai và tài liệu vận hành

Chatto Cloud và dịch vụ hosting trả phí

  • Chatto Cloud dự kiến sớm bước vào public beta, và chỉ cung cấp hosting trả phí cho server Chatto
    • Không có gói đăng ký premium, quảng cáo hay yếu tố bổ sung nào khác; chỉ cung cấp hosting
  • Hạ tầng tại thời điểm ra mắt sẽ gồm hạ tầng đặt tại châu Âu và thuộc sở hữu châu Âu
    • Nhiều region hơn dự kiến ra mắt vào đầu năm 2027
    • Tất cả server Chatto Cloud cung cấp autoscaling, sao lưu toàn bộ dữ liệu hằng đêm và nâng cấp phiên bản không gián đoạn
  • Chatto Cloud đi theo hướng không tạo lock-in
    • Server được host trên Chatto Cloud tương thích 100% với server tự host
    • Có thể di chuyển dữ liệu bất cứ lúc nào để chuyển vào hoặc ra khỏi Chatto Cloud

Tình trạng 0.4 và kế hoạch tới 1.0.0

  • Phiên bản Chatto hiện tại là 0.4
    • Được xem là đủ ổn định để dùng trong production
    • Vẫn còn thiếu một vài tính năng quan trọng
    • Có thể xem kế hoạch đầy đủ tại Chatto Roadmap
  • Trọng tâm của Chatto 0.5 là tính năng an toàn và cải thiện client
    • Bao gồm tính năng báo cáo nội dung và moderation
    • Đặc biệt tập trung hoàn thiện chức năng đa server
  • Chatto 1.0.0 dự kiến đạt được sau khoảng 6~12 tháng
    • Trước thời điểm đó có thể có các thay đổi phá vỡ tương thích
    • Người dùng tự host cần sẵn sàng cập nhật khi phiên bản mới được phát hành
  • Có thể nhận tin phát hành hoặc thông báo bắt đầu beta của Chatto Cloud qua newsletter Chatto announcements, với tần suất gửi khoảng 1 lần mỗi tháng

2 bình luận

 

Tôi đang dùng Mattermost, nhưng họ cứ liên tục hướng người dùng sang bản Enterprise và cắt giảm tính năng của phiên bản OSS, nên
khi Chatto đủ trưởng thành, tôi muốn thử viết một công cụ để migration từ Mattermost sang.

 
Ý kiến trên Hacker News
  • Tôi thích việc dự án được thiết kế để rất dễ self-host trên hạ tầng riêng. Nhìn vào tài liệu (https://docs.chatto.run/), Chatto được phân phối dưới dạng một binary nhỏ, độc lập, dùng NATS, một message broker nhẹ có engine lưu bền vững stream tích hợp, và cũng có thể cấu hình kho lưu trữ đối tượng tương thích S3 bên ngoài
    Cuộc gọi thực tế được vận hành bằng LiveKit (Apache-2.0) và cần triển khai cùng Chatto; tôi cũng thích việc cấu hình kết nối cần thiết được thể hiện qua ví dụ triển khai, giống như NATS. Đây là một dự án tuyệt vời, không chỉ nói suông mà có hướng dẫn thực tế

    • Thật sự rất tuyệt. Có thêm nhiều lựa chọn luôn là điều tốt. Tuy nhiên, đọc tài liệu thì tôi hơi bối rối không biết có ứng dụng desktop hay không
      Nhìn ảnh chụp màn hình thì có vẻ là có, nhưng tôi không tìm thấy tài liệu nào để tải về
    • Tôi tò mò liệu có thể cài đặt trên những nơi dễ và rẻ, hoặc gần như miễn phí như Cloudflare hay Vercel không
  • Tôi quen Hendrik vài năm rồi, và anh ấy là một trong những lập trình viên tài năng nhất tôi từng gặp. Tôi chắc chắn dự án này cũng sẽ thành công rất nhanh
    Bản thân dự án đã thú vị, nhưng điều đặc biệt ấn tượng là anh ấy phát triển một mình bằng cách tận dụng agentic coding

    • Tôi quen biết cá nhân anh ấy gần 30 năm, và anh ấy vẫn là một trong những lập trình viên thông minh, giàu kinh nghiệm và tò mò nhất tôi từng gặp
      Nói chung là một người tốt, và tôi luôn muốn có cơ hội làm việc lại với anh ấy
    • Tôi tò mò không biết anh ấy còn làm những thứ thú vị nào khác không
    • Tôi từng hơi quan tâm, nhưng chính câu này lại thuyết phục tôi rằng nên tránh xa
  • Nếu định bán cho doanh nghiệp, cần suy nghĩ kỹ phần “khi người dùng xóa tài khoản, khóa theo từng người dùng sẽ bị hủy”. Tin nhắn công việc thuộc về nhà tuyển dụng chứ không phải cá nhân người dùng, nên cần có soft delete

    • Trong trường hợp đó, có lẽ chỉ cần không cho người dùng tự xóa tài khoản của mình. Dù vậy, với phần lớn người dùng và nhà cung cấp Chatto, cách tự động tuân thủ quyền được xóa có vẻ là tốt
    • Có thể nhà tuyển dụng không phải là khách hàng mục tiêu
  • Tôi bật cười vì trong tiếng Bồ Đào Nha, “chato” nghĩa là “nhàm chán”. Nhưng thứ này trông có vẻ rất dễ thiết lập và sử dụng
    Tôi hoan nghênh thêm nhiều phần mềm nhàm chán hơn nữa

    • Nó cũng có thể nghĩa là “phiền phức”. Trước khi đặt tên dự án hay công ty, tốt nhất luôn nên tìm xem tên đó có nghĩa xấu trong ít nhất 10 ngôn ngữ có số người dùng nhiều nhất hay không
      Trong tiếng Bồ Đào Nha/Tây Ban Nha, khá thường xuyên có khả năng là tiếng lóng NSFW
  • Tuyệt. Nhưng tôi không thấy ở đâu trên website nói có hỗ trợ di động hay không
    Muốn chuyển công ty hoặc bạn bè sang dùng thì hỗ trợ di động là bắt buộc

    • Có vẻ như nằm trong kế hoạch
      https://github.com/orgs/chattocorp/projects/1?pane=issue&ite...
    • Cần lưu ý rằng để gửi thông báo tới ứng dụng iOS, nhà phát hành ứng dụng phải gửi thông báo. Tức là phải vận hành một dịch vụ proxy chuyển tiếp sự kiện
      Mattermost, Element/Matrix, và có lẽ một phần hoặc toàn bộ client ActivityPub có vẻ làm theo cách này. Nếu không, việc self-host server cũng đồng nghĩa bạn phải tự phân phối cả ứng dụng client thông qua App Store và chi phí Chương trình nhà phát triển Apple
  • Tôi sẽ tiếp tục theo dõi. Hiện tôi đang dùng Mattermost, nhưng mô hình giá khá thất thường và nhắm tới enterprise, nên hiện tôi vẫn dùng bản mã nguồn mở bị giới hạn khá nhiều tính năng
    Thêm nữa, tính năng gọi video trước đây chưa tốt, nên tôi thích việc Chatto có tính năng đó

  • Tôi tò mò vì sao lại dùng dual license. Backend Go là AGPL, còn frontend TypeScript có vẻ là Apache 2.0
    Không rõ vì sao không để tất cả là AGPL

    • Để backend theo AGPL có thể ngăn người khác host nó như một dịch vụ. Vì AGPL xem việc host cũng là phân phối, nên bất kỳ ai host đều phải công khai mã nguồn
      Nhờ đó, nó tạo ra một dạng độc quyền mềm cho cloud riêng của họ. Trong khi đó, với frontend, nếu muốn cho phép tùy biến, white-label, v.v. thì một giấy phép thoáng hơn hợp lý hơn
      Grafana là ví dụ hay. Năm 2021, họ chuyển từ Apache sang AGPLv3 để ngăn các nhà cung cấp cloud host các bản sửa đổi mà không đóng góp lại, còn plugin thì vẫn giữ giấy phép Apache
    • AGPL ngăn bên khác dùng backend Go để vận hành một dịch vụ cloud cạnh tranh. Với frontend thì không có nhiều tác dụng, chỉ khiến người dùng enterprise e ngại hơn thôi
  • Sẽ rất tuyệt nếu sau khi self-host có thể tạo một gói hoặc liên kết giúp tải xuống, cài đặt và thiết lập sẵn đăng nhập. Kiểu như trình cài đặt tùy chỉnh hoặc script cấu hình gắn với một người cụ thể
    Mục tiêu là giảm tối đa ma sát onboarding. Có thể có hệ quả bảo mật nếu liên kết bị chia sẻ nhầm, nhưng với một instance self-host nhỏ thì có vẻ có thể giảm thiểu khá dễ. Cũng có thể chỉ cho hoạt động với tài khoản cục bộ
    Như vậy sẽ dễ gửi cho bạn bè một liên kết kiểu “vào đây chat với tôi”, mà không phải lo họ phản ứng “tôi đã dùng Discord rồi nên không muốn cấu hình mấy thứ đó”

    • Tôi tò mò bạn mong đợi điều gì hơn ngoài “tôi đưa link instance, vào đó đăng ký nhé”. Có thể kết hợp với vai trò kiểu Discord để giới hạn khả năng thấy kênh và quyền theo vai trò
      Ngay cả khi người khác đăng ký, chỉ cần không cấp vai trò “nhóm nội bộ” chẳng hạn. Không biết bạn đang nghĩ tới thứ như liên kết mời có token dùng một lần không
  • Rất hay. Trước đây tôi từng có ý tưởng tương tự: nhiều công ty muốn có một thứ để gom thông báo và thực hiện vài hành động bot đơn giản, nhưng không nhất thiết muốn bị khóa vào một nhà cung cấp chat cụ thể
    Nếu nó có thể dùng làm frontend cho nhiều tích hợp, hoặc chỉ làm chat nội bộ, thì sẽ thật sự thú vị

  • Tôi muốn biết ưu và nhược điểm của Chatto so với Mattermost là gì
    Ngoài ra, việc backend của Chatto được triển khai bằng Go là điều rất đáng mừng. Go rất phù hợp cho kiểu use case này