2 คะแนน โดย GN⁺ 2023-10-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Jellyfin ต้องการใช้โอกาส ครบรอบ 10 ปี Hacktoberfest ในเดือนตุลาคม 2023 เพื่อขยายฐานผู้ร่วมพัฒนาที่ชะงักงัน และเร่งความเร็วในการปรับปรุงเซิร์ฟเวอร์, Web UI และไคลเอนต์
  • โปรเจกต์ยังคงรักษา โมเดลอาสาสมัครกึ่งพาณิชย์ ไว้ โดยเงินบริจาคจะใช้เฉพาะกับค่าโครงสร้างพื้นฐานและฮาร์ดแวร์ไคลเอนต์สำหรับพัฒนาที่ซื้อเป็นครั้งคราวเท่านั้น
  • ผู้ร่วมพัฒนาหลักเมื่อรวมเซิร์ฟเวอร์, Web UI และไคลเอนต์ทั้งหมดแล้วมีอยู่ มากสุดประมาณ 30 คน และแทบไม่เพิ่มขึ้นเลยในช่วง 3 ปีที่ผ่านมา ทำให้บางแอปมีคน 1–2 คนดูแลในเวลาส่วนตัว
  • ความไม่พอใจของผู้ใช้มุ่งไปที่ การรองรับไคลเอนต์ที่ไม่เพียงพอ และความสมบูรณ์ของงานที่ยังไม่พอ และเคยมีช่วงที่ฟีเจอร์หรือไคลเอนต์ที่มีความต้องการสูงอย่าง Chromecast ไม่มีแรงขับเคลื่อนในการพัฒนาอยู่พักหนึ่ง
  • ต้องการความช่วยเหลือทุกด้าน ตั้งแต่การแก้บั๊กเล็ก ๆ, ปรับปรุงเอกสาร, UI/UX, การแปล ไปจนถึงการพัฒนาไคลเอนต์ทั้งหมด และผู้ที่มีส่วนร่วมอย่างสม่ำเสมอและมีคุณภาพก็มีโอกาสเข้าร่วมทีมอย่างเป็นทางการได้

เหตุผลที่ Jellyfin กำลังมองหาผู้ร่วมพัฒนาในตอนนี้

  • Jellyfin ถือว่าการดึงผู้ร่วมพัฒนาใหม่เข้ามาเป็นภารกิจสำคัญ โดยอาศัยจังหวะครบรอบ 10 ปีของ Hacktoberfest จาก DigitalOcean
  • ทุกครั้งที่มีประเด็นถกเถียงเกี่ยวกับ Plex มักมีการพูดถึง Jellyfin ในฐานะทางเลือก แต่ในชุมชนก็มีการพูดซ้ำ ๆ ถึง การขาดไคลเอนต์, การไม่มีฟีเจอร์บางอย่าง และความสมบูรณ์ของงานที่ยังไม่พอ
  • หากต้องการลดช่องว่างเหล่านี้ จำเป็นต้องมีคนเข้ามามีส่วนร่วมมากขึ้นในการปรับปรุงโค้ด พัฒนาฟีเจอร์ใหม่ และจัดระเบียบเอกสาร

ข้อจำกัดของโปรเจกต์ที่ขับเคลื่อนด้วยอาสาสมัคร

  • Jellyfin ดำเนินงานเป็นโปรเจกต์กึ่งพาณิชย์ที่พบได้ไม่บ่อย แม้ในกลุ่ม FLOSS
    • นักพัฒนา, นักแปล, ผู้ดูแลชุมชน และสมาชิกที่ช่วยแก้ปัญหาล้วนเป็นอาสาสมัคร
    • ไม่มีใครได้รับค่าตอบแทนจากการทำงานให้ Jellyfin และไม่มีการสนับสนุนจากบริษัทหรือองค์กรแยกต่างหาก
    • ไม่มีแผนสร้างรายได้ และยังหลีกเลี่ยง bug bounty อย่างจริงจังด้วย
  • เงินบริจาคใช้เฉพาะกับ ค่าโครงสร้างพื้นฐาน และฮาร์ดแวร์ไคลเอนต์สำหรับพัฒนาที่ซื้อเป็นครั้งคราวเมื่อจำเป็นเท่านั้น
    • จะไม่นำเงินบริจาคมาจ่ายค่าตอบแทนให้นักพัฒนา และมีจุดยืนว่าจะไม่ทำเช่นนั้นในอนาคตด้วย
  • ทางเลือกนี้มีเป้าหมายเพื่อหลีกเลี่ยงแนวโน้มที่โปรเจกต์สตรีมมิงสื่ออื่น ๆ เริ่มต้นแบบ FLOSS แต่ภายหลังเพิ่มฟีเจอร์ที่เป็นปฏิปักษ์ต่อผู้ใช้ด้วยเหตุผลด้านรายได้ และเปลี่ยนไปเป็นซอร์สปิด

ภาระในการดูแลขอบเขตกว้างด้วยทีมขนาดเล็ก

  • ปัจจุบันฐานผู้ร่วมพัฒนาหลัก เมื่อรวมเซิร์ฟเวอร์, Web UI และไคลเอนต์ทั้งหมดแล้ว อยู่ที่ มากสุดประมาณ 30 คน
    • ขนาดโดยรวมแทบไม่เพิ่มขึ้นเลยในช่วง 3 ปีที่ผ่านมา
    • บางส่วนของโปรเจกต์ โดยเฉพาะแอปแต่ละตัว มีคน 1–2 คนทำงานให้ฟรีในเวลาส่วนตัว
  • ฟีเจอร์หรือไคลเอนต์ที่มีความต้องการสูงก็อาจหยุดคืบหน้าได้ หากไม่มีคนเริ่มพัฒนาหรือเข้ามาช่วย
    • Chromecast เคยต้องถูกวางไว้ก่อนอยู่พักหนึ่ง แต่ในช่วงไม่กี่สัปดาห์ที่ผ่านมาเริ่มมีความเคลื่อนไหวอีกครั้ง

วิธีเข้าร่วมและเส้นทางสู่การเป็นทีมอย่างเป็นทางการ

  • ผู้ที่ต้องการเริ่มต้นสามารถขอความช่วยเหลือได้ผ่าน คู่มือการมีส่วนร่วม, ช่อง Matrix/IRC/Discord และ Forum
  • ขอบเขตการมีส่วนร่วมมีได้หลากหลาย ตั้งแต่การแก้บั๊กเล็ก ๆ, ปรับปรุงเอกสาร ไปจนถึงการพัฒนาไคลเอนต์ทั้งหมด
  • หากแสดงให้เห็นถึงการมีส่วนร่วมที่มีคุณภาพและความตั้งใจที่จะมีส่วนร่วม ก็มี ขั้นตอนเสนอชื่อสมาชิกทีมใหม่ สำหรับเข้าร่วมทีมอย่างเป็นทางการด้วย

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

 
GN⁺ 2023-10-04
ความเห็นจาก Hacker News
  • ไม่รู้มาก่อนว่า Jellyfin ใช้ C# เป็นฐาน
    ผมเริ่มอาชีพมาในฐานะนักพัฒนา C# แต่ตอนนี้ใช้แต่ C++ และก็มองหาโปรเจกต์ที่จะได้กลับไปลองใช้ C# อีกครั้งมาตลอด
    ผมมีรายการจุดที่ไม่สะดวกใน Jellyfin อยู่ พอรู้แล้วว่าเป็น C# ก็เริ่มคิดว่าอาจจะลงมือแก้เอง

    • ถ้าไม่ได้ใช้ C# มาสักพัก ก็น่าจะสนุกทีเดียว
      ภาษาพัฒนาไปมาก โดยเฉพาะความสะดวกในการพัฒนาอย่าง pattern matching, คำสั่ง using และชนิดพื้นฐานที่เน้นประสิทธิภาพ
      ผมเริ่มกลับมาใช้ C# เต็มเวลาตั้งแต่ต้นปีนี้ และพอใจมาก
  • น่าจะดีถ้าทีม Jellyfin นำคำเชิญชวนให้มีส่วนร่วมแบบนี้ไปแสดงในจุดที่ผู้ใช้ร้องขอฟีเจอร์ด้วย
    ในกรณี การรองรับ Chromecast ซึ่งเป็นตัวอย่างในบล็อกโพสต์ ผมเคยถามใน issue นี้ว่าจะช่วยทำฟีเจอร์นั้นได้อย่างไร: https://github.com/jellyfin/Swiftfin/issues/271#issuecomment...
    ต่อให้จริง ๆ แล้วไม่มีงานที่ผมจะช่วยสนับสนุนฟีเจอร์นั้นได้อย่างมีประสิทธิผล ถ้ามีคู่มือเริ่มต้น ผมคงเข้าไปดูแน่นอน
    ถ้าเชื่อมโยงบล็อกโพสต์กับเอกสารเริ่มต้นไว้อย่างรวดเร็วใน issue ที่มีคนถามว่าจะช่วยได้อย่างไร ก็น่าจะเปลี่ยนคนเหล่านั้นมาเป็นผู้ร่วมพัฒนาได้ค่อนข้างดี
    ขอบคุณทุกคนที่มีส่วนร่วมกับ Jellyfin และผมก็รู้ว่าการ onboarding นักพัฒนามักกลายเป็นงานใหญ่กว่าเดิม แต่ขอเสนอว่านี่เป็นตำแหน่งที่เหมาะจะใส่ลิงก์กระตุ้นให้ลงมือทำ

  • ผมเคยพยายามเพิ่มฟีเจอร์ allowlist ตามแท็ก ซึ่งเคยถูกขอกันมามากและดูเหมือนไม่ยากนัก พร้อมทั้งหาจุดในโค้ดเซิร์ฟเวอร์ได้แล้วว่าควรใส่ตรงไหน
    แต่พอรู้ว่าถ้าจะส่งมอบฟีเจอร์นี้ต้องดูแล PR ข้ามอย่างน้อยสอง repository และต้องสลับไปมาระหว่างสอง repository เพื่อทำ integration test ก็เลยยอมแพ้
    สำหรับโค้ดที่ผูกกันแน่น repository เดียวสะดวกจริง ๆ
    อาจจะกลับไปดูอีกครั้งก็ได้
    อีกอย่างคือ parental control แบบ allowlist เป็นหนึ่งในเครื่องมือที่ดีที่สุด แต่แทบไม่มีที่ไหนรองรับจริง ๆ เลย น่าหงุดหงิด

    • อย่างน้อยถ้าส่ง feedback ไปว่าติดตรงไหนถึงยอมแพ้ก็น่าจะดี
      นั่นคงไม่ใช่ปัญหาที่เจออยู่คนเดียว
      ฝั่งโปรเจกต์ก็คงรู้สึกไม่สะดวกเหมือนกัน แต่อาจคุ้นชินกับความไม่สะดวกนั้นจนลืมไปแล้วก็ได้
    • นี่เป็นปัญหาใหญ่ของ git/GitHub
      ถ้ารองรับ PR ข้าม repository ได้ ขั้นตอนแบบนี้ก็น่าจะง่ายขึ้น แต่ผมอยากได้ฟีเจอร์แบบนั้นมาเกือบ 10 ปีแล้ว
    • อ้างอิงไว้ว่า parental control ของ Plex ยืดหยุ่นอย่างเหลือเชื่อ
      ผมตั้งให้บัญชีเด็กดูได้เฉพาะรายการที่ติดแท็กบางอย่าง และแท็กของ Plex ก็ละเอียดพอสมควร จึงอนุญาตได้ตั้งแต่ภาพยนตร์หรือรายการทีวีทั้งเรื่อง บางส่วนของรายการทีวี ไปจนถึง episode เดียว
      ตอนนี้เข้าถึงคอนเทนต์ได้ค่อนข้างมาก แต่คอนเทนต์ใหม่จะไม่ถูกเปิดให้โดยอัตโนมัติ
      เวลาได้ episode ใหม่ของ Bluey อะไรแบบนั้น ภรรยาผมจะอยากดูก่อน และในรายการเด็กก็มักแทบไม่มีอะไรที่เป็นปัญหาร้ายแรง จึงแทบจะอนุมัติเสมอ แต่ก็สบายใจ
    • ผมหงุดหงิดเรื่อง allowlist มานาน จนได้เรียนรู้จาก Reddit ว่าจะทำ allowlist ใน Plex อย่างไร
      จำศัพท์ที่แน่นอนไม่ได้ แต่ต้องระวังเพราะมีทั้ง แท็กและ label
      เมื่อก่อนผมลองผิดฝั่งอยู่ โดยพื้นฐานคือสร้าง label แล้วตั้งค่าบัญชีเด็กให้ดูได้เฉพาะคอนเทนต์ที่มี label นั้น
    • Plex รองรับทั้ง allowlist และ blocklist
      ดีตรงที่ภาพยนตร์ส่วนใหญ่บล็อกด้วยเรตติ้งไว้ แล้วอนุญาตบางเรื่องเป็นรายรายการได้
  • ในฐานะนักพัฒนาที่ทำงานบนระบบ Linux เท่านั้น ผมสงสัยว่า สภาพแวดล้อมการพัฒนา C# เป็นอย่างไร
    ผมคิดว่า Mono ยังมีอยู่ และ runtime ที่ใช้เวลารันโปรเจกต์ C# ก็คือฝั่งนั้น
    ผมรู้สึกมาตลอดว่า C# ค่อนข้างเก้ ๆ กัง ๆ ในสภาพแวดล้อมที่ไม่ใช่ Windows แต่บางทีที่ผ่านมาอาจเข้าใจผิดก็ได้
    ที่ทำงานไม่มีโอกาสหรือความจำเป็นต้องใช้ จึงไม่ค่อยรู้ว่าเครื่องมือบน Mac หรือ Linux ดีแค่ไหน และมันทำงานจริง ๆ อย่างไร
    อีกด้านหนึ่งก็เคยเห็นหลายคนบอกว่ามันเหมือน Java ที่ดีกว่า และที่นี่ก็ดูเหมือนจะชอบ F# กันพอสมควรด้วย

    • บน Arch การติดตั้งค่อนข้างยุ่งยากเล็กน้อย และหลังจาก Mono แทบหายไปแล้ว ตัวเลือก IDE ก็ให้ความรู้สึกว่าเหลือแค่ VS Code แบบปิดของ Microsoft
      ปลั๊กอิน C# ใช้กับ VSCodium ไม่ได้
      คล้ายกับ Java ตรงที่การออกแบบภาษา C# เองก็ตั้งสมมติฐานไว้ค่อนข้างมากว่าจะใช้ IDE
      ถึงอย่างนั้น ถ้าเป็นเว็บแอปพลิเคชัน นอกเหนือจากนี้ก็โอเค
    • C# บน Linux ยุ่งยากกว่า Windows เพียงเล็กน้อย
      ต้องใส่ใจกับการติดตั้ง SDK นิดหน่อย และ API ของระบบบางตัวทำงานต่างกันเล็กน้อย แต่โดยรวมแล้วเป็นระดับที่ผมชอบ Windows มากกว่านิดเดียวเท่านั้น
      Mono ยังมีอยู่ แต่ตั้งแต่ราวปี 2015 C# ก็รองรับแบบ native บน Linux แล้ว และเท่าที่รู้ ตอนนี้แทบไม่มีใครใช้ Mono จริง ๆ
      การใช้งานหลักคือเอาไว้รัน แอป .NET Framework ไม่ใช่ .NET Core
    • Mono ยังมีอยู่ แต่ Jellyfin ใช้ .NET Core ซึ่งเป็น runtime แบบเสรีและโอเพนซอร์สที่ Microsoft จัดให้
    • สภาพแวดล้อมการพัฒนา C# ยอดเยี่ยม และ รันแบบ native บน Linux
      Mono ยังเหลืออยู่ และถูกใช้ในงานเฉพาะบางอย่าง เช่น WASM หรือ interpreter
    • C# รันแบบ native บน Linux มานานแล้ว
      เท่าที่รู้ แม้แต่ Azure ก็มักชอบรันบนเครื่อง Linux และที่ทำงานของผมก็เป็นแบบนั้น
      ประสิทธิภาพก็น่าจะเท่ากันหรือเร็วกว่า
      ตอนนี้นักพัฒนา C# จำนวนมาก หรืออาจจะเป็นส่วนใหญ่ ทำงานบนเครื่องที่ไม่ใช่ Windows แล้ว และการรองรับสถาปัตยกรรม Mac รุ่นใหม่ก็ถูกเพิ่มเข้ามาเร็วมาก
      สรุปคือทุกวันนี้ ตัวภาษา C# เอง ในสภาพแวดล้อมที่ไม่ใช่ Windows ก็เหมือนกันหรือดีกว่าด้วยซ้ำ
  • ลองดู repository บน GitHub แวบหนึ่ง เห็นว่าใน repository หลักมี PR ที่เปิดค้างอยู่เกิน 90 รายการ และบางรายการ ไม่มี feedback มานานกว่า 8 เดือน
    ถ้าทีมปัจจุบันยังจัดการ PR ที่มีอยู่เดิมไม่ได้ ก็ไม่แน่ใจว่าการเชิญชวนให้เข้ามาร่วมแบบนี้มีความหมายอะไร
    ในสภาพตอนนี้ ต่อให้ PR เพิ่มขึ้นอีกก็ไม่ได้ช่วยโปรเจกต์

    • ให้เจาะจงกว่านั้น ผมเห็น issue นี้ในรายการ feature request ที่เปิดอยู่: https://github.com/jellyfin/jellyfin/issues/1714
      มี PR ที่ค่อนข้างเรียบง่ายสำหรับเรื่องนี้เปิดค้างมาตั้งแต่กุมภาพันธ์ 2023 แต่ก็ยังอยู่แบบนั้นโดยไม่มี feedback ที่นำไปจัดการต่อได้: https://github.com/jellyfin/jellyfin/pull/9291
  • ไม่รู้มาก่อนว่า Jellyfin ต้องการนักพัฒนา
    เป็นผู้ใช้ Plex แบบหนักหน่วง แต่ทำงานเป็น นักพัฒนา C# เลย clone โปรเจกต์ server กับ web แล้วลองทำ issue แรกดู

  • ชอบ Jellyfin มากจริง ๆ และใช้มาเป็นปีที่ 3 แล้ว
    ตั้งใจว่าจะเข้าร่วม Hacktoberfest แน่นอน

  • อยากใช้ Jellyfin แต่ไม่มี client ทางการสำหรับ Apple TV

    • https://github.com/jellyfin/Swiftfin
      ใช้อยู่ ก็ดีใช้ได้
    • media player Infuse[0][1] มี client สำหรับ Apple TV / iOS / macOS ที่ยอดเยี่ยม
      ทำงานร่วมกับ Jellyfin ได้ด้วย
      [0] https://firecore.com/infuse
      [1] https://jellyfin.org/posts/client-infuse/
    • สงสัยเหมือนกันว่า client ที่มีอยู่นั้นแย่ขนาดนั้นเลยไหม
      หลายปีก่อนเคยลองตัวหนึ่ง ก็ไม่เจอปัญหาอะไรกับ client ของ Jellyfin
      เหตุผลที่เลิกใช้ Jellyfin คือ Locast ปิดตัวลง และนั่นเป็นการใช้งานหลักของผม
    • หลังจากซื้อ Apple TV มา ผมใช้ Swiftfin อยู่ ก็พอใช้ได้
      ตัวเลือกการจัดเรียงและตัวกรองยังขาดไปมาก และมีอาการกระตุก เช่น ถ้าเลื่อนเร็วเกินไป การ์ดหนังจะโหลดไปอยู่ผิดตำแหน่ง รวมถึงบางครั้งหลังจากกด pause แล้วแถบความคืบหน้าก็หยุดอัปเดตไปตลอดช่วงที่เหลือของหนัง
      แต่ก็ยังอยู่ในระดับที่ใช้งานได้
    • มี Swiftfin อยู่ไม่ใช่เหรอ?
      การพัฒนาอาจจะมา ๆ หาย ๆ หน่อย แต่ตอนที่เคยต้องใช้เมื่อก่อนก็ทำงานได้ดี
  • เคยย้ายมาใช้ Jellyfin เพราะอยากใช้จริง ๆ แต่พอรู้ว่ามี API ที่ไม่ต้องยืนยันตัวตน อยู่หลายตัว และรวมถึงวิดีโอสตรีมด้วย ก็เลยกลับไปใช้ Plex
    ดูเสี่ยงเกินไปที่จะเปิด Jellyfin ออกสู่เว็บ
    https://github.com/jellyfin/jellyfin/issues/5415

  • หวังว่าฟีเจอร์ Chromecast ของ Jellyfin iOS จะได้รับการพัฒนาเสียที
    ผมใช้ Plex แทน Jellyfin ก็เพราะฟีเจอร์นี้เพียงอย่างเดียวจริง ๆ
    อยากให้มีคนที่ชำนาญ Chromecast API เข้ามาช่วยทีม