ประกาศรับสมัครนักพัฒนา - Jellyfin
(jellyfin.org)- 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 ความคิดเห็น
ความเห็นจาก Hacker News
ไม่รู้มาก่อนว่า Jellyfin ใช้ C# เป็นฐาน
ผมเริ่มอาชีพมาในฐานะนักพัฒนา C# แต่ตอนนี้ใช้แต่ C++ และก็มองหาโปรเจกต์ที่จะได้กลับไปลองใช้ C# อีกครั้งมาตลอด
ผมมีรายการจุดที่ไม่สะดวกใน Jellyfin อยู่ พอรู้แล้วว่าเป็น 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 เป็นหนึ่งในเครื่องมือที่ดีที่สุด แต่แทบไม่มีที่ไหนรองรับจริง ๆ เลย น่าหงุดหงิด
นั่นคงไม่ใช่ปัญหาที่เจออยู่คนเดียว
ฝั่งโปรเจกต์ก็คงรู้สึกไม่สะดวกเหมือนกัน แต่อาจคุ้นชินกับความไม่สะดวกนั้นจนลืมไปแล้วก็ได้
ถ้ารองรับ PR ข้าม repository ได้ ขั้นตอนแบบนี้ก็น่าจะง่ายขึ้น แต่ผมอยากได้ฟีเจอร์แบบนั้นมาเกือบ 10 ปีแล้ว
ผมตั้งให้บัญชีเด็กดูได้เฉพาะรายการที่ติดแท็กบางอย่าง และแท็กของ Plex ก็ละเอียดพอสมควร จึงอนุญาตได้ตั้งแต่ภาพยนตร์หรือรายการทีวีทั้งเรื่อง บางส่วนของรายการทีวี ไปจนถึง episode เดียว
ตอนนี้เข้าถึงคอนเทนต์ได้ค่อนข้างมาก แต่คอนเทนต์ใหม่จะไม่ถูกเปิดให้โดยอัตโนมัติ
เวลาได้ episode ใหม่ของ Bluey อะไรแบบนั้น ภรรยาผมจะอยากดูก่อน และในรายการเด็กก็มักแทบไม่มีอะไรที่เป็นปัญหาร้ายแรง จึงแทบจะอนุมัติเสมอ แต่ก็สบายใจ
จำศัพท์ที่แน่นอนไม่ได้ แต่ต้องระวังเพราะมีทั้ง แท็กและ label
เมื่อก่อนผมลองผิดฝั่งอยู่ โดยพื้นฐานคือสร้าง label แล้วตั้งค่าบัญชีเด็กให้ดูได้เฉพาะคอนเทนต์ที่มี label นั้น
ดีตรงที่ภาพยนตร์ส่วนใหญ่บล็อกด้วยเรตติ้งไว้ แล้วอนุญาตบางเรื่องเป็นรายรายการได้
ในฐานะนักพัฒนาที่ทำงานบนระบบ Linux เท่านั้น ผมสงสัยว่า สภาพแวดล้อมการพัฒนา C# เป็นอย่างไร
ผมคิดว่า Mono ยังมีอยู่ และ runtime ที่ใช้เวลารันโปรเจกต์ C# ก็คือฝั่งนั้น
ผมรู้สึกมาตลอดว่า C# ค่อนข้างเก้ ๆ กัง ๆ ในสภาพแวดล้อมที่ไม่ใช่ Windows แต่บางทีที่ผ่านมาอาจเข้าใจผิดก็ได้
ที่ทำงานไม่มีโอกาสหรือความจำเป็นต้องใช้ จึงไม่ค่อยรู้ว่าเครื่องมือบน Mac หรือ Linux ดีแค่ไหน และมันทำงานจริง ๆ อย่างไร
อีกด้านหนึ่งก็เคยเห็นหลายคนบอกว่ามันเหมือน Java ที่ดีกว่า และที่นี่ก็ดูเหมือนจะชอบ F# กันพอสมควรด้วย
ปลั๊กอิน C# ใช้กับ VSCodium ไม่ได้
คล้ายกับ Java ตรงที่การออกแบบภาษา C# เองก็ตั้งสมมติฐานไว้ค่อนข้างมากว่าจะใช้ IDE
ถึงอย่างนั้น ถ้าเป็นเว็บแอปพลิเคชัน นอกเหนือจากนี้ก็โอเค
ต้องใส่ใจกับการติดตั้ง SDK นิดหน่อย และ API ของระบบบางตัวทำงานต่างกันเล็กน้อย แต่โดยรวมแล้วเป็นระดับที่ผมชอบ Windows มากกว่านิดเดียวเท่านั้น
Mono ยังมีอยู่ แต่ตั้งแต่ราวปี 2015 C# ก็รองรับแบบ native บน Linux แล้ว และเท่าที่รู้ ตอนนี้แทบไม่มีใครใช้ Mono จริง ๆ
การใช้งานหลักคือเอาไว้รัน แอป .NET Framework ไม่ใช่ .NET Core
Mono ยังเหลืออยู่ และถูกใช้ในงานเฉพาะบางอย่าง เช่น WASM หรือ interpreter
เท่าที่รู้ แม้แต่ Azure ก็มักชอบรันบนเครื่อง Linux และที่ทำงานของผมก็เป็นแบบนั้น
ประสิทธิภาพก็น่าจะเท่ากันหรือเร็วกว่า
ตอนนี้นักพัฒนา C# จำนวนมาก หรืออาจจะเป็นส่วนใหญ่ ทำงานบนเครื่องที่ไม่ใช่ Windows แล้ว และการรองรับสถาปัตยกรรม Mac รุ่นใหม่ก็ถูกเพิ่มเข้ามาเร็วมาก
สรุปคือทุกวันนี้ ตัวภาษา C# เอง ในสภาพแวดล้อมที่ไม่ใช่ Windows ก็เหมือนกันหรือดีกว่าด้วยซ้ำ
ลองดู repository บน GitHub แวบหนึ่ง เห็นว่าใน repository หลักมี PR ที่เปิดค้างอยู่เกิน 90 รายการ และบางรายการ ไม่มี feedback มานานกว่า 8 เดือน
ถ้าทีมปัจจุบันยังจัดการ PR ที่มีอยู่เดิมไม่ได้ ก็ไม่แน่ใจว่าการเชิญชวนให้เข้ามาร่วมแบบนี้มีความหมายอะไร
ในสภาพตอนนี้ ต่อให้ PR เพิ่มขึ้นอีกก็ไม่ได้ช่วยโปรเจกต์
มี PR ที่ค่อนข้างเรียบง่ายสำหรับเรื่องนี้เปิดค้างมาตั้งแต่กุมภาพันธ์ 2023 แต่ก็ยังอยู่แบบนั้นโดยไม่มี feedback ที่นำไปจัดการต่อได้: https://github.com/jellyfin/jellyfin/pull/9291
ไม่รู้มาก่อนว่า Jellyfin ต้องการนักพัฒนา
เป็นผู้ใช้ Plex แบบหนักหน่วง แต่ทำงานเป็น นักพัฒนา C# เลย clone โปรเจกต์ server กับ web แล้วลองทำ issue แรกดู
ชอบ Jellyfin มากจริง ๆ และใช้มาเป็นปีที่ 3 แล้ว
ตั้งใจว่าจะเข้าร่วม Hacktoberfest แน่นอน
อยากใช้ Jellyfin แต่ไม่มี client ทางการสำหรับ Apple TV
ใช้อยู่ ก็ดีใช้ได้
ทำงานร่วมกับ Jellyfin ได้ด้วย
[0] https://firecore.com/infuse
[1] https://jellyfin.org/posts/client-infuse/
หลายปีก่อนเคยลองตัวหนึ่ง ก็ไม่เจอปัญหาอะไรกับ client ของ Jellyfin
เหตุผลที่เลิกใช้ Jellyfin คือ Locast ปิดตัวลง และนั่นเป็นการใช้งานหลักของผม
ตัวเลือกการจัดเรียงและตัวกรองยังขาดไปมาก และมีอาการกระตุก เช่น ถ้าเลื่อนเร็วเกินไป การ์ดหนังจะโหลดไปอยู่ผิดตำแหน่ง รวมถึงบางครั้งหลังจากกด pause แล้วแถบความคืบหน้าก็หยุดอัปเดตไปตลอดช่วงที่เหลือของหนัง
แต่ก็ยังอยู่ในระดับที่ใช้งานได้
การพัฒนาอาจจะมา ๆ หาย ๆ หน่อย แต่ตอนที่เคยต้องใช้เมื่อก่อนก็ทำงานได้ดี
เคยย้ายมาใช้ Jellyfin เพราะอยากใช้จริง ๆ แต่พอรู้ว่ามี API ที่ไม่ต้องยืนยันตัวตน อยู่หลายตัว และรวมถึงวิดีโอสตรีมด้วย ก็เลยกลับไปใช้ Plex
ดูเสี่ยงเกินไปที่จะเปิด Jellyfin ออกสู่เว็บ
https://github.com/jellyfin/jellyfin/issues/5415
หวังว่าฟีเจอร์ Chromecast ของ Jellyfin iOS จะได้รับการพัฒนาเสียที
ผมใช้ Plex แทน Jellyfin ก็เพราะฟีเจอร์นี้เพียงอย่างเดียวจริง ๆ
อยากให้มีคนที่ชำนาญ Chromecast API เข้ามาช่วยทีม