1 คะแนน โดย GN⁺ 1 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ตอนนี้สามารถใช้งาน คลังเก็บ Gleam บน Tangled ได้แล้ว ซึ่งมุ่งสู่ระบบที่ปลอดภัยด้านชนิดข้อมูลและขยายต่อได้
  • สาขาหลักมีเพียง main สาขาเดียว และมีประมาณ 11,000 คอมมิต, ดาว 254 และฟอร์ก 2
  • โค้ดในคลังเก็บประกอบด้วย Rust 92.9% เป็นหลัก ตามด้วย JavaScript 3.6%, Gleam 1.8% เป็นต้น
  • ดูแลองค์ประกอบตั้งแต่คอมไพเลอร์และ language server ไปจนถึงคอมไพเลอร์ WASM ตัวสร้างโค้ด Erlang ตัวจัดรูปแบบ และโปรเจกต์ทดสอบไว้ในคลังเก็บเดียว
  • Gleam เป็น โครงการที่ได้รับการสนับสนุนจากผู้สนับสนุน ไม่ได้เป็นของบริษัท และสามารถสนับสนุนได้ทั้งตัวโครงการและสมาชิกทีมหลัก

โครงสร้างคลังเก็บ

  • gleam.run/gleam คือคลังเก็บบน Tangled ของ ภาษา Gleam
  • องค์ประกอบหลักมีดังนี้
    • compiler-cli, compiler-core, compiler-wasm
    • language-server, erlang-generation, erlang-term-format
    • format, hexpm, gleam-bin
    • benchmark, เอกสาร, แพ็กเกจชุมชน และ โปรเจกต์ทดสอบ ที่เกี่ยวข้องกับคอมไพเลอร์
  • main เป็นทั้งสาขาเดียวและสาขาหลัก และยังไม่มีแท็กที่เผยแพร่

สัดส่วนภาษาและวิธีโคลน

  • สัดส่วนตามภาษาได้แก่ Rust 92.9%, JavaScript 3.6%, Gleam 1.8%
  • HTML และ CSS อย่างละ 0.4%, Erlang และ Shell อย่างละ 0.3% และยังมี TypeScript, Makefile, Dockerfile, Elixir, PowerShell รวมอยู่ด้วย
  • สามารถโคลนผ่าน HTTPS และ SSH ได้ และรองรับการดาวน์โหลดแบบ tar.gz และ .zip
  • บน Tangled knot ที่โฮสต์เอง URL สำหรับโคลนอาจแตกต่างกันได้ ตามการตั้งค่า

งานพัฒนาล่าสุด

  • คอมมิตล่าสุดรวมถึง การปรับปรุงประสิทธิภาพ ของตัวจัดรูปแบบและการสร้างโค้ด JavaScript รวมถึงการแก้โค้ดสร้าง Erlang สำหรับ external ที่มีอาร์กิวเมนต์ที่เลิกใช้แล้ว
  • ฝั่ง language server มีการเปลี่ยนแปลงให้ใส่ชื่อชนิดข้อมูลในชื่อ code action สำหรับการสร้าง variant และเพิ่ม code action สำหรับแปลงฐานของตัวเลข
  • ยังรองรับจำนวนลบในฐานที่ต่างกัน และปรับปรุงข้อความคำแนะนำของคอมไพเลอร์กับข้อความเตือน todo
  • เมื่อตั้งค่า HEXPM_READ_API_KEY จะใช้การยืนยันตัวตนกับคำขอค้นหาและดาวน์โหลด dependency ของ Hex
    • ทำให้ใช้ ขีดจำกัดคำขอต่อผู้ใช้ที่สูงขึ้น แทนการจำกัดต่อ IP แบบเข้มงวด

การดำเนินโครงการ

  • Gleam มุ่งสร้างระบบที่ขยายต่อได้บนพื้นฐานของ ความปลอดภัยด้านชนิดข้อมูล
  • โครงการนี้ไม่ได้เป็นของบริษัทและดำเนินงานด้วยการสนับสนุนจากผู้สนับสนุน
  • สามารถสนับสนุนตัวโครงการหรือสมาชิกทีมหลักได้ที่ หน้าสนับสนุน Gleam

1 ความคิดเห็น

 
GN⁺ 1 일 전
ความคิดเห็นจาก Hacker News
  • โพสต์นี้ต้องการ คำอธิบายบริบท มากกว่านี้มาก ในสภาพตอนนี้มีแต่คนที่ไม่ต้องให้เกริ่นนำอยู่แล้วเท่านั้นที่จะเข้าใจได้ทันที
    https://knowyourmeme.com/memes/curtains-for-zoosha

    • Gleam เป็นภาษาที่ได้รับความนิยมในหมู่คนที่ชอบ Erlang หรือ Elixir และทั้งหมดทำงานบน BEAM virtual machine
      Tangled เป็นทางเลือกแบบกระจายศูนย์ของ GitHub ที่สร้างอยู่บน ATProto เช่นเดียวกับ Bluesky
    • น่าขันตรงที่หน้าที่ลิงก์ไว้ยืดทวีตธรรมดาที่ถูกรีโพสต์ออกมาเป็น ‘คอนเทนต์’ ยาวหลายหน้าจอ จนกลับอ่านเหมือน ข่าวบันเทิง
    • ถ้าอย่างนั้นก็คงต้องเริ่มอธิบายก่อนด้วยซ้ำว่าไซต์นี้หรือ HN(Hacker News) คืออะไร
  • เพิ่งรู้จัก Tangled เลยลองสมัครดู แต่ ประสบการณ์ผู้ใช้ใหม่ ยังต้องขัดเกลาอีกพอสมควร ผมกรอกอีเมล ยืนยันตัวตน แล้วสร้างชื่อผู้ใช้ แต่กลับล็อกอินด้วยชื่อนั้นตรง ๆ ไม่ได้ และยังต้องไปทำความเข้าใจ social URL protocol ที่ไม่คุ้นเคยอีก
    ระหว่างขั้นตอนยืนยัน ระบบพาไปยังหน้าและ URL ที่ดูเหมือนเป็นเจ้าของโดยโปรเจ็กต์เดียวกันแต่แบรนดิ้งกับสีกลับไม่เหมือนกันเลย ทำให้ตัวจัดการรหัสผ่านจับคู่ไม่ได้ ผมค่อนข้างไวกับแรงเสียดทานตอนสมัครใช้งานเป็นพิเศษ แต่ตัวโปรเจ็กต์น่าสนใจ จึงหวังว่าฟีดแบ็กนี้จะเป็นประโยชน์

    • สำหรับผม ขั้นตอนสมัคร/ล็อกอินมีแค่ “กด login → กรอก Bluesky handle เดิม → ใส่รหัสผ่านในหน้าล็อกอินของโดเมน bsky → กดอนุญาต” เท่านั้น ดูเหมือนว่า ณ ตอนนี้เส้นทางนี้จะถูกปรับให้ลื่นกว่า
      ดูเหมือนพวกเขาจัดโครงสร้างพื้นฐานแยกไว้เพราะแอปกับตัวตนไม่ได้ผูกกันแน่น แต่ยังไม่ได้ใช้เวลาขัดเกลาหน้าจอมากนัก ถ้าไม่ได้สร้างบัญชีของตัวเองไว้ ก็สงสัยว่าถ้าล็อกอินด้วยชื่อผู้ใช้ไม่ได้แล้วควรใช้อะไร
    • ของผมแย่กว่านั้นอีก มีแต่ข้อความผิดพลาด Failed to complete sign up. Try again later. เท่านั้น
  • Gleam เป็นภาษาที่น่าสนใจซึ่งมุ่งไปที่ การออกแบบเล็กแต่ประณีต ไม่นานมานี้ผมได้เจอทีม Gleam ที่งาน Ubuntu Summit และพวกเขาถ่ายทอดปรัชญาการออกแบบเรื่องการคงความเล็กและค่อย ๆ สร้างอย่างรอบคอบออกมาได้ดีมากในงานนำเสนอ
    Giacomo บอกว่าเขาทำแอนิเมชันการเปลี่ยนหน้าทั้งหมดเอง และผมรู้สึกว่าตัวงานนำเสนอเองก็ทำมาอย่างเล็ก ๆ แต่ใส่ใจรายละเอียด จึงช่วยตอกย้ำสารหลักได้ดียิ่งขึ้น
    https://youtu.be/E6_JqYMeNqs
    https://discourse.ubuntu.com/t/gleam-and-the-value-of-small/...
    https://en.wikipedia.org/wiki/Gleam_(programming_language)

  • ผมลองรัน เซิร์ฟเวอร์ Knot ของตัวเองบน Tangled แต่แม้ว่าจะสร้าง repository บน Knot ได้ตามปกติ การเปลี่ยนแปลงหลังจากนั้นกลับไม่ปรากฏบน Tangled
    Knot มีการเชื่อมต่อ IPv6 แต่กว่าจะให้ทำงานเสถียรได้ต้องเปิด IPv4 NAT หลายตัวและทำ dummy A record ด้วย ซึ่งเป็นปัญหาที่ทราบกันอยู่แล้ว: https://tangled.org/tangled.org/core/issues/494

  • ผมสงสัยว่าทำไมถึงเลือก Forge ที่พึ่งเงินลงทุนจาก venture capital แทน Codeberg มันดูไม่ค่อยสอดคล้องกับคำอ้างเรื่องเป็น ‘ภาษาที่เป็นมิตร’ ด้วย

    • การที่ “อยู่บน Tangled” จริง ๆ แล้วหมายถึงการเผยแพร่ ATProto record แบบ sh.tangled.* โครงสร้างนี้ไม่ได้ผูกติดกับบริษัทที่ได้เงินทุนจาก venture capital ที่อยู่เบื้องหลังเว็บแอป tangled.org และตัวแอปก็แค่แสดง Git repository ที่เปิดเผยผ่านโปรโตคอลให้อ่านง่ายขึ้น
      แอป ATProto อื่นที่อ่าน record เดียวกันก็เข้าถึงข้อมูลเดียวกันนี้ได้ และตัว repository เองก็ไม่จำเป็นต้องอยู่บน Tangled ด้วยซ้ำ เพราะสามารถโฮสต์ตรงบนเซิร์ฟเวอร์ที่รองรับ Git, SSH, HTTP, WebSocket ได้
    • แม้ผมจะไม่ชอบวิธีระดมทุนของ Tangled แต่ผมคิดว่า ATProto มีศักยภาพสูงในการทำให้อินเทอร์เน็ตดีขึ้น ในชุมชน Gleam เองก็สนใจโปรโตคอลนี้มาก จึงตัดสินใจว่าน่าจะเหมาะกับการโฮสต์ mirror ของ repository Gleam
    • Gleam ยังอยู่บน GitHub ด้วย นี่ไม่ใช่การย้ายอย่างเป็นทางการ แต่เป็นเพียงการนำไปลงเพิ่มบน Forge ที่ใช้ ATProto เท่านั้น
    • มันดูมีโอกาสสูงว่าเป็นเงื่อนไขของการสนับสนุนทางการเงิน ซึ่งท้ายที่สุดก็ให้ความรู้สึกขมขื่นว่าคุณค่าหลักคือเงินมากกว่าชุมชน ผมคงไปโฟกัสกับการใช้ Elixir ในโปรเจ็กต์แทนดีกว่า
  • เพิ่งลองใช้ Tangled ครั้งแรก แต่ดูเหมือนจะมี บั๊กเยอะมาก จนใช้งานจริงลำบาก ผมสร้าง repository แล้วเจอ 404 จนเปิดดูไม่ได้ และแม้จะคัดลอก ATProto handle เดิมมาใส่ทุกครั้ง ก็ยังล็อกอินล้มเหลวหลายรอบ
    ถึงอย่างนั้นก็ยังดีใจที่มีทีมมากขึ้นที่กำลังพัฒนาทางเลือกสำหรับ Git hosting

    • GitHub ยุคแรก ๆ ก็เคยเป็นแบบนี้เหมือนกัน โดยสร้าง repository แบบ asynchronous แล้วรีไดเร็กต์ไปทันที เลยเกิดปัญหาเดียวกัน จำได้ว่าถ้ารีเฟรชหลังจากไม่กี่วินาทีก็จะขึ้น และต่อมาจึงมี หน้าคั่นกลาง เพิ่มเข้ามาให้รอแล้วค่อยพาไปอัตโนมัติ
  • ช่วงหนึ่งผมหา บริการ Git แบบกระจายศูนย์ และเริ่ม self-host เองด้วย แต่ยังขาดฟีเจอร์ด้านโซเชียล อยากรู้ข้อมูลเกี่ยวกับ Tangled เพิ่มเติม

    • Radicle น่าจะใกล้กับเป้าหมายนี้มากกว่า และรองรับทั้ง self-hosting กับ federation แต่การหาทางเลือกที่มี แรงดึงดูดทางสังคม แบบเดียวกับ GitHub นั้นยาก และก็ยังไม่ชัดว่าจะแยกองค์ประกอบนี้ออกจาก Forge ได้หรือจำเป็นต้องมีมาด้วยกัน
    • ตอนนี้ดูเหมือนว่ายัง self-host หน้าจอกับ API เองไม่ได้ คุณสามารถรัน Knot ซึ่งเป็น Git server และ Spindle ซึ่งเป็น CI runner ได้ แต่ทั้งบริการยังค่อนข้างรวมศูนย์อยู่ และกำลังมีงานทำเพื่อเปลี่ยนเรื่องนี้
    • นอกจากรู้ว่าบริษัทจดทะเบียนอยู่ในฟินแลนด์แล้ว ก็หาข้อมูลได้ยากว่าใครเป็นผู้ดำเนินการและระดมทุนอย่างไร
  • ผมยินดีจะลองย้ายโปรเจ็กต์หนึ่งไปไว้บน Tangled แต่ชุด ฟีเจอร์ ยังต้องไปอีกไกลกว่าจะไล่ทันบริการเดิม โดยเฉพาะปัญหา GitHub downtime ที่เกิดขึ้นแม้แค่ตอนดู repository ก็รบกวนมากเกินไป

    • แทนที่จะเลือก Tangled เพียงเพราะบรรยากาศแบบ ATProto ผมสงสัยว่าทำไมไม่ใช้ Codeberg ที่โตเต็มที่กว่า หรือ Forgejo / Gitea ที่เป็นซอฟต์แวร์เสรีและโอเพนซอร์ส
    • เพราะหงุดหงิดกับ GitHub downtime นี่แหละ เลยเริ่มมองหาบริการอื่นอย่างจริงจัง
  • ผมสงสัยว่า Tangled ต่างจาก Codeberg อย่างไร และขั้นตอนย้ายเป็นแบบไหน

    • ผมใช้ทั้งคู่ และ Tangled ยังไม่มีฟีเจอร์สำคัญอย่าง private repository หรือ protected branch แต่หน้าจอของ Tangled ให้ความรู้สึกสบายกว่าสำหรับผม ขณะที่ Codeberg ค่อนข้างช้าในสภาพแวดล้อมของผม
      ผมไม่ได้ใช้ CI/CD เลยไม่ทราบเรื่องขั้นตอนย้ายที่ซับซ้อนนัก แต่การ push repository ไปยัง Knot ที่โฮสต์ไว้ทำได้ง่ายมาก การรัน Knot เองก็ไม่ยาก และผมชอบที่อย่างน้อยมีเซิร์ฟเวอร์หนึ่งในบรรดาเซิร์ฟเวอร์ที่ส่งโค้ดไปนั้นเป็นของผมเอง
    • ความต่างหลักคือ Tangled สร้างขึ้นโดยมี ATProto federation protocol เป็นแกนกลาง ต่างจาก Forgejo หรือ Codeberg
  • ยากที่จะรู้ว่า Tangled คืออะไร และหมายถึง Gleam ตัวไหนกันแน่

    • มันดูเป็นโพสต์แบบที่มีแต่คนวงในเท่านั้นที่เข้าใจ ต่อให้กดลิงก์เข้าไปก็แทบไม่มีเนื้อหาที่ดูเกี่ยวข้องกับ Tangled เลย และแม้ในบรรดาโพสต์ HN ที่มีกลุ่มผู้อ่านจำกัด อันนี้ก็ยังหนักเป็นพิเศษ
      กว่าผมจะสังเกตว่า URL เป็นเบาะแสว่าเกี่ยวกับ Tangled ก็ต้องเปิดเป็นลิงก์ที่สามแล้ว และในหน้า landing page เองก็แทบไม่มีคำอธิบายว่า Tangled คืออะไร