Node-Pixel เป็นโปรเจกต์รวมฮาร์ดแวร์และซอฟต์แวร์ (JavaScript) เพื่อสร้างเอฟเฟกต์แสงสีสวยงาม Andrew Fisher CTO ของ LUXE City Guides และนักพัฒนาเว็บมากว่า 20 ปี บอกถึงวิธีสร้างและดูแลชุมชนโอเพนซอร์ส
Node-Pixel คืออะไร? เริ่มต้นอย่างไร?
Andrew สนใจ JavaScript Robotics (NodeBots) มาหลายปี Node-Pixel เกิดจากการที่ไม่มีวิธีง่ายๆ ในการควบคุมฮาร์ดแวร์แสงสีด้วย JavaScript เขาชอบแสงสี จึงสร้างขึ้นมา เอง
ชุมชนเป็นสับเซตของ Johnny-Five และ NodeBots ที่สนใจเฉพาะแสงสี (กลุ่มอื่นสนใจหุ่นยนต์ อัตโนมัติบ้าน) มีผู้ร่วมพัฒนาจากทั่วโลก
เป้าหมายร่วมของชุมชน
อยากให้คนใช้ฮาร์ดแวร์กับ JavaScript ได้ง่าย โดยเฉพาะฮาร์ดแวร์ซับซ้อนที่ควบคุมได้ง่าย
ประเด็นที่ตื่นเต้นล่าสุด
- Interchange: Package Manager สำเฟิร์มแวร์ (เหมือน pip/npm แต่สำหรับฮาร์ดแวร์) Node-Pixel แสดงความจำเป็นของสิ่งนี้ ทำให้ Interchange เกิดขึ้น
- พัฒนาลิบรารีให้ทำ Animation และเอฟเฟกต์แสงซับซ้อนได้ เรียกใช้จาก NodeJS หรือ Browser โดยตรง
ปัจจัยสำคัญในการสร้างและดูแลชุมชน
- ความโปร่งใส (Transparency): ใช้ Gitter และ GitHub Issues เพื่อร่วมมือข้ามเขตเวลา Log การสนทนาช่วยอธิบายเหตุผลตัดสินใจให้คนที่ไม่ได้ร่วมพัฒนาเข้าใจ
- Code of Conduct: ตั้งแต่แรกพยายามสร้างชุมชนที่เปิด โปร่ง ปลอดภัย และมีความรับผิดชอบ
ความท้าทายหลัก
Time Zones!!!! Andrew อยู่ออสเตรเลีย ผู้ร่วมงานส่วนใหญ่ใน US และ EU การหาเวลาทับซ้อนกันยากมาก
ประเด็นที่พูดคุยใน Gitter Channel
- Support ผู้ใช้โปรเจกต์ (หลัก) — ใช้ Gitter เป็นช่องทางหลัก ช่วยให้เริ่มใช้งานเร็ว
- อภิปรายทางเทคนิคขณะพัฒนาฟีเจอร์ — ใช้ Gitter คุยอย่างไหลไหล แล้วค่อยย้ายไป GitHub Issues ตอนมีข้อสรุป
ชุมชนโอเพนซอร์สเปลี่ยนแปลงไปอย่างไร?
ด้านดี: โอเพนซอร์ส "ชนะ" แทบจะเป็นมาตรฐานของการพัฒนาซอฟต์แวร์ นักพัฒนาอยากเห็น ยืนยัน และแก้ไขโค้ดเอง ช่วยนักพัฒนารุ่นใหม่เรียนรู้และไม่ทำซ้ำข้อผิดพลาด
ด้านไม่ดี: มีคน "บริโภค" ส่วนฟรีมากเกินไป คาดหวังฟิกซ์ทันที หรือเพิ่มฟีเจอร์เพราะขอมา ต้องใช้เครื่องมือจัดการให้พวกเขาช่วยร่วมพัฒนาแทน
โดยรวม ชุมชนกลายเป็น "ชุมชน" จริงๆ มากขึ้น ด้านดีชนะด้านไม่ดี แต่อย่าลืมปรับปรุงให้ทุกโปรเจกต์ได้ประสบการณ์ดีขึ้น
คำแนะนำสำหรับคนอยากเริ่มชุมชนโอเพนซอร์สจากศูนย์
"คุยกับตัวเอง" (Talk to yourself)
ดูแปลกแต่งจริง: ตอนคนเดียว โยนโค้ดขึ้นไป รอคนมาติ้มมันท้าทายมาก เปิดโอกาสถูกวิจารณ์
วิธีของ Andrew: เปิด Issue ใน GitHub มอบหมายให้ตัวเอง Code Review โค้ดตัวเอง จดบันทึก สร้าง Ticket ซ่อมบั๊ก อัปเดตสถานะใน Gitter แม้ никтоอ่านก็ตาม
ผลลัพธ์: ช่วย articulate โปรเจกต์ ให้ดู "มีชีวิต" และเข้าใจง่าย ทำให้คนอื่นร่วมมือง่ายขึ้น ชุมชนต้องเริ่มจาก "คน" — เป็นคนนั้นเอง