1 điểm bởi GN⁺ 1 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Kho lưu trữ Gleam, hướng tới các hệ thống an toàn kiểu và có khả năng mở rộng, hiện cũng có thể truy cập trên Tangled
  • Chỉ có một nhánh mặc định là main, ghi nhận khoảng 11.000 commit, 254 sao và 2 fork
  • Mã nguồn của kho chủ yếu là Rust 92,9%, tiếp theo là JavaScript 3,6%, Gleam 1,8%...
  • Từ compiler và language server đến WASM compiler, trình sinh mã Erlang, formatter và các dự án kiểm thử đều được quản lý trong một kho lưu trữ duy nhất
  • Gleam là dự án được hỗ trợ bởi nhà tài trợ, không thuộc sở hữu doanh nghiệp; cả dự án và các thành viên chủ chốt trong nhóm đều có thể được tài trợ

Cấu trúc kho lưu trữ

  • gleam.run/gleam là kho lưu trữ Tangled của ngôn ngữ Gleam
  • Các thành phần chính gồm:
    • compiler-cli, compiler-core, compiler-wasm
    • language-server, erlang-generation, erlang-term-format
    • format, hexpm, gleam-bin
    • benchmark, tài liệu, gói cộng đồng và các dự án kiểm thử liên quan đến compiler
  • main là nhánh duy nhất đồng thời là nhánh mặc định, và không có tag công khai nào

Tỷ lệ ngôn ngữ và cách clone

  • Tỷ lệ theo ngôn ngữ là Rust 92,9%, JavaScript 3,6%, Gleam 1,8%
  • HTML và CSS mỗi loại chiếm 0,4%; Erlang và Shell mỗi loại 0,3%; ngoài ra còn có TypeScript, Makefile, Dockerfile, Elixir và PowerShell
  • Có thể clone bằng HTTPS và SSH, đồng thời hỗ trợ tải xuống ở định dạng tar.gz.zip
  • Trên Tangled knot tự host, URL clone có thể khác nhau tùy theo cấu hình

Công việc phát triển gần đây

  • Các commit gần đây bao gồm cải thiện hiệu năng cho formatter và sinh mã JavaScript, cùng sửa mã sinh Erlang cho external có đối số đã bị loại bỏ
  • Language server đã nhận các thay đổi như đưa tên kiểu vào tiêu đề code action sinh variant, và thêm code action chuyển đổi hệ cơ số của số
  • Cho phép số âm ở các hệ cơ số khác nhau, đồng thời cải thiện câu chữ gợi ý của compiler và cảnh báo todo
  • Khi thiết lập HEXPM_READ_API_KEY, việc duyệt dependency trên Hex và các yêu cầu tải xuống sẽ được xác thực
    • Có thể được áp dụng giới hạn yêu cầu theo người dùng cao hơn thay vì giới hạn nghiêm ngặt theo từng IP

Vận hành dự án

  • Gleam hướng tới việc xây dựng các hệ thống có khả năng mở rộng dựa trên an toàn kiểu
  • Dự án không thuộc sở hữu của doanh nghiệp và được vận hành nhờ sự hỗ trợ của các nhà tài trợ
  • Có thể tài trợ cho dự án hoặc các thành viên chủ chốt trong nhóm tại trang tài trợ Gleam

1 bình luận

 
Ý kiến trên Hacker News
  • Bài này cần giải thích bối cảnh nhiều hơn. Với trạng thái hiện tại, chỉ những ai vốn không cần được giới thiệu mới có thể hiểu ngay
    https://knowyourmeme.com/memes/curtains-for-zoosha

    • Gleam là một ngôn ngữ được những người thích Erlang hoặc Elixir ưa chuộng, và tất cả đều dựa trên máy ảo BEAM
      Tangled là một lựa chọn thay thế GitHub phi tập trung được xây dựng trên ATProto như Bluesky
    • Điều mỉa mai là trang được liên kết đã kéo dài một tweet bình thường được đăng lại thành nhiều màn cuộn “nội dung”, nên rốt cuộc lại đọc giống như một bài báo tin tức giải trí
    • Vậy thì có lẽ cũng phải bắt đầu bằng việc giải thích trang này, tức HN (Hacker News), là gì
  • Tôi mới biết đến Tangled và đã thử đăng ký, nhưng trải nghiệm người dùng mới cần được trau chuốt thêm. Tôi nhập email, xác thực rồi tạo tên người dùng, nhưng lại không thể đăng nhập trực tiếp bằng tên đó, còn phải làm quen với cả một giao thức URL mạng xã hội khá lạ
    Trong quá trình xác thực, tôi bị chuyển sang một màn hình và URL trông như thuộc về dự án nhưng thương hiệu và màu sắc hoàn toàn khác, nên trình quản lý mật khẩu không thể liên kết chúng với nhau. Tôi vốn đặc biệt nhạy cảm với ma sát khi đăng ký, nhưng dự án thì thú vị, nên hy vọng phản hồi này sẽ hữu ích

    • Quá trình đăng ký/đăng nhập của tôi chỉ là “nhấn đăng nhập → nhập handle Bluesky hiện có → nhập mật khẩu ở màn hình đăng nhập của miền bsky → nhấn chấp thuận”. Ở giai đoạn này, có vẻ đường đi này được tối ưu hơn
      Có vẻ họ đã dựng hạ tầng riêng vì ứng dụng và danh tính không gắn chặt với nhau, nhưng chưa dành nhiều thời gian để hoàn thiện giao diện. Nếu không tạo tài khoản riêng mà lại không thể đăng nhập bằng tên người dùng, thì tôi tự hỏi phải dùng gì
    • Trường hợp của tôi còn tệ hơn thế, chỉ hiện lỗi Failed to complete sign up. Try again later.
  • Gleam là một ngôn ngữ thú vị theo đuổi thiết kế nhỏ gọn và tinh tế. Gần đây tôi đã gặp đội ngũ Gleam tại Ubuntu Summit, và họ đã truyền tải rất tốt triết lý thiết kế là giữ mọi thứ nhỏ gọn và xây dựng cẩn trọng
    Giacomo nói rằng anh ấy tự làm hoạt ảnh cho mọi chuyển cảnh, và tôi cảm thấy bản thân bài thuyết trình cũng được làm nhỏ gọn, tỉ mỉ, càng nhấn mạnh thêm thông điệp cốt lõi
    https://youtu.be/E6_JqYMeNqs
    https://discourse.ubuntu.com/t/gleam-and-the-value-of-small/...
    https://en.wikipedia.org/wiki/Gleam_(programming_language)

  • Tôi đã thử vận hành máy chủ Knot riêng trên Tangled, nhưng dù kho lưu trữ được tạo bình thường trên Knot thì các thay đổi về sau lại không hiện trên Tangled
    Knot có kết nối IPv6, nhưng tôi vẫn phải bật nhiều IPv4 NAT và thậm chí tạo cả bản ghi A giả thì mới chạy ổn định, và đây đã là vấn đề được biết đến: https://tangled.org/tangled.org/core/issues/494

  • Tôi thắc mắc vì sao lại chọn một forge dựa vào vốn đầu tư mạo hiểm thay vì Codeberg. Điều đó cũng có vẻ không khớp lắm với tuyên bố về một “ngôn ngữ thân thiện”

    • Việc “có mặt trên Tangled” thực chất có nghĩa là phát hành các bản ghi ATProto sh.tangled.*. Nó không phải là cấu trúc bị phụ thuộc vào công ty đầu tư mạo hiểm đứng sau ứng dụng web tangled.org; ứng dụng này chỉ đọc các kho Git được công bố qua giao thức và hiển thị chúng dưới dạng dễ xem hơn
      Các ứng dụng ATProto khác đọc cùng những bản ghi đó cũng có thể truy cập cùng thông tin. Bản thân kho lưu trữ cũng không cần đặt trên Tangled mà có thể được host trực tiếp trên máy chủ hỗ trợ Git, SSH, HTTP, WebSocket
    • Tôi không thích cách Tangled gọi vốn, nhưng tôi cho rằng ATProto có tiềm năng lớn để cải thiện internet. Trong cộng đồng Gleam cũng có nhiều quan tâm tới giao thức này, nên tôi thấy nó phù hợp để host bản mirror của các kho Gleam
    • Gleam vẫn còn trên GitHub. Đây không phải di chuyển chính thức, mà chỉ được đưa thêm lên một forge dựa trên ATProto
    • Có vẻ rất có thể đây là điều kiện đi kèm hỗ trợ tài chính, và cuối cùng để lại ấn tượng cay đắng rằng giá trị cốt lõi là tiền hơn là cộng đồng. Tôi thà tập trung dùng Elixir trong dự án còn hơn
  • Tôi mới dùng Tangled lần đầu, nhưng có vẻ nó có quá nhiều lỗi đến mức khó dùng thật sự. Tôi tạo kho lưu trữ nhưng bị 404 nên không xem được, và dù cứ sao chép nhập cùng một ATProto handle, tôi vẫn đăng nhập thất bại nhiều lần
    Dù vậy, vẫn đáng mừng khi có thêm nhiều đội ngũ phát triển các lựa chọn thay thế cho dịch vụ host Git

    • GitHub thời kỳ đầu cũng từng tạo kho lưu trữ theo kiểu bất đồng bộ rồi chuyển hướng ngay, nên chuyện tương tự đã xảy ra. Tôi nhớ là chỉ cần làm mới sau vài giây thì nó sẽ hiện ra, và sau đó họ đã thêm màn hình trung gian để chờ rồi tự động chuyển tiếp
  • Tôi đã tìm dịch vụ Git phi tập trung một thời gian và cũng bắt đầu tự host, nhưng lại thiếu tính năng xã hội. Tôi muốn biết thêm về Tangled

    • Radicle có lẽ gần mục tiêu hơn và cho phép tự host lẫn liên hợp. Tuy vậy, rất khó tìm được một lựa chọn thay thế có lực hút xã hội như GitHub, và vẫn chưa rõ liệu yếu tố này có thể tách khỏi forge hay phải đi cùng nhau
    • Hiện tại có vẻ chưa thể tự host giao diện và API. Bạn có thể vận hành Knot, là máy chủ Git, và Spindle, là trình chạy CI, nhưng toàn bộ dịch vụ vẫn còn khá tập trung và đang được thay đổi theo hướng đó
    • Ngoài việc công ty được đăng ký tại Phần Lan, tôi gần như không tìm thấy ai đang vận hành nó và họ được tài trợ như thế nào
  • Tôi sẵn sàng thử đưa một dự án lên Tangled, nhưng về bộ tính năng để thu hẹp khoảng cách với các dịch vụ hiện có thì vẫn còn một chặng đường dài. Đặc biệt, các sự cố GitHub xảy ra ngay cả khi chỉ xem kho lưu trữ đang là trở ngại quá lớn

    • Tôi muốn biết vì sao lại chọn Tangled chỉ vì cảm giác ATProto, thay vì dùng Codeberg trưởng thành hơn hoặc Forgejo hay Gitea tự do và mã nguồn mở
    • Chính vì bực với các sự cố GitHub mà tôi thực sự đã bắt đầu tìm dịch vụ khác
  • Tôi muốn biết Tangled khác Codeberg thế nào, và quá trình chuyển sang đó ra sao

    • Tôi đang dùng cả hai, và Tangled vẫn chưa có những tính năng quan trọng như kho riêng tư hay nhánh được bảo vệ. Bù lại, giao diện của Tangled cho tôi cảm giác dễ chịu hơn, còn Codeberg thì khá chậm trong môi trường của tôi
      Tôi không dùng CI/CD nên không rõ quy trình di chuyển phức tạp tới mức nào, nhưng việc push kho lên Knot được host sẵn thì rất đơn giản. Tự vận hành Knot cũng không khó, và tôi thích việc ít nhất có một trong các máy chủ nhận code là do chính mình sở hữu
    • Khác biệt cốt lõi là Tangled, không giống Forgejo hay Codeberg, được xây dựng xoay quanh giao thức liên hợp ATProto
  • Rất khó biết Tangled là gì và đang nói đến Gleam nào

    • Trông giống kiểu bài viết chỉ người trong cuộc mới hiểu. Ngay cả khi mở liên kết, cũng gần như không có nội dung nào trông liên quan đến Tangled, và ngay trong số các bài HN vốn đã có độc giả mục tiêu hẹp thì bài này vẫn đặc biệt nặng tính nội bộ
      Manh mối là URL có chữ Tangled thì phải đến lần mở thứ ba tôi mới nhận ra, vì nó quá kín đáo, còn trên trang đích thì hầu như không có nội dung giải thích Tangled là gì