Ecosystem Management

ช่วงหลังๆ ผมเชื่อในหลักการ ecosystem ว่าถ้าต้องการจะผลักดัน (ประเด็น/ผลิตภัณฑ์/เทคโนโลยี) ใดๆ ตัวผลิตภัณฑ์มันจะไม่สามารถไปได้ด้วยตัวเองโดดๆ ได้ (อาจจะมีแต่ยาก) แนวทางที่ถูกต้องคือต้องผลักดันกันไปทั้งวงการ อันนี้หมายถึงช่องทางหากิน นโยบาย กฎหมาย บริการรายล้อมอื่นๆ ที่ช่วยเกื้อหนุนผลิตภัณฑ์อันนั้นๆ ตัวอย่างที่ชัดเจนคือ iPod (ผลิตภัณฑ์) ถ้าไม่มี iTunes Store (บริการ) และ iTunes (ซอฟต์แวร์) คงมาไม่ได้ถึงขนาดนี้ และถ้าเรามองมุมกลับ ผลิตภัณฑ์ที่ติดตลาด มีฐานผู้ใช้พอสมควรแล้ว ก็จะมี ecosystem อื่นๆ ตามมาโดยธรรมชาติ เช่น อุปกรณ์เสริมของ iPod หรือโปรแกรมบน App Store เป็นต้น อีกตัวอย่างที่ไม่ด้อยไปกว่ากัน ก็คือ Firefox และ extension ทั้งแสนแปด ซึ่งกลายเป็นตัวอย่างให้ซอฟต์แวร์ตัวอื่นๆ ทั้งที่เป็นโอเพนซอร์สและไม่เป็น อยากดำเนินรอยตามกันถ้วนหน้า หนึ่งในซอฟต์แวร์ที่ใช้สถาปัตยกรรมแบบ Firefox คือมีแกน (core) หลัก และเปิดช่องทางสำหรับส่วนขยาย (extension) ก็คือ Drupal แต่ถึงแม้ว่าโมดูลของ Drupal จะมีเยอะมาก การนำมาใช้งานกลับยังทำได้ไม่ดีนัก ปัญหาที่สำคัญแน่ๆ ก็คือ โมดูลพัฒนาตาม core ไม่ทัน ส่วนปัญหาอื่นๆ ก็อย่างเช่น ผู้นำไปใช้ไม่สามารถค้นหาโมดูลที่เหมาะกับความต้องการของตัวเองได้ เป็นต้น ผมคิดว่าปัญหาเหล่านี้ เกิดจากการจัดการ ecosystem ของโครงการ Drupal ที่ทำได้ไม่ดีนัก (เทียบกับ Firefox) เลยลองมานั่งคิดเล่นๆ ว่า ถ้าต้องการจะสร้าง ecosystem เราควรจะต้องมีอะไรบ้าง นอกเหนือไปจากการพัฒนาตัว core หลักโดยตรง essential * ตัวผลิตภัณฑ์ต้องเปิดช่องทางให้เสริมส่วนขยายเข้าไปได้ง่าย (extensible) ตัวอย่างที่ไม่ดีคือ Safari รุ่นแรกๆ ที่ต้องแฮกอย่างเดียว * เครื่องมือที่ใช้สร้างส่วนขยาย ต้องครบครันและสมบูรณ์พอ เครื่องมือในที่นี้รวมตัวภาษา SDK IDE เอกสาร ฯลฯ ตัวอย่างที่ดีของภาษาคือ Firefox ที่ใช้ XUL ก็จะเขียนง่ายกว่า native ส่วนตัวอย่างที่ไม่ดีคือ AIR/Flex ที่ Adobe แจกแค่ SDK แต่กั๊ก IDE เอาไว้ เป็นต้น ปัจจัยเสริมที่ควรมี * API ต้องนิ่ง แบบ Drupal ที่พังทุกรุ่นก็ไม่ไหว ที่สุดของเรื่องนี้ต้องยกให้ win32 API ตัวอย่างที่ดีอีกอันที่ไม่ใช่ซอฟต์แวร์ คือรูเสียบของ iPod หรือมือถือที่เปลี่ยนแบบทีไร อุปกรณ์เสริมของเก่าก็เจ๊งเป็นแถบ * ส่วนของ extension listing ต้องพร้อม เช่น มีระบบให้นักพัฒนาล็อกอินเข้าไปแก้ไขจัดการได้ตลอดเวลา ระบบโหวต ระบบจัดการกับเวอร์ชัน ระบบ sandbox สำหรับทดสอบ ฯลฯ อันที่ผมว่าทำได้ดีคือ Add-ons.mozilla.org นี่เทพมาก App Store ของแอปเปิลนี่ไม่เคยเป็นนักพัฒนาเองเลยไม่ทราบ ส่วนของ Drupal.org ทำได้ไม่ดีนัก จนต้องมี Drupalmodules.com เกิดขึ้นมาตอบสนองความต้องการนี้ * การควบคุมคุณภาพของส่วนขยาย ช่วงประมาณ Firefox 3.0 กำลังจะออก ทาง Mozilla ต้องจัดแคมเปญมาช่วยกันหาว่า extension ยอดฮิตตัวไหนมันทำ memory leak แล้วแก้ไขซะ * การจัดการ dependency ของส่วนขยายแต่ละตัว กรณีศึกษาที่เยี่ยมยอดคือ APT ของ Debian (ยิ่งถ้าเทียบว่า APT ถูกสร้างขึ้นเมื่อไร ยิ่งน่าตื่นเต้น) ส่วนโครงการที่เคยเจอปัญหานี้ แล้วแก้ไขได้รวดเร็วทันทีคือ Eclipse * การทดสอบส่วนขยายในฐานะ experimental แล้วนำความเห็นจากผู้ใช้ไปปรับปรุงต่อ ผมชอบ Gmail Labs * ระบบการ monetize ให้นักพัฒนาได้เลี้ยงชีพ อันนี้คงไม่มีใครเกิน Apple App Store แต่อีกอันที่เข้าข่ายคือ PayPal กับ eBay * การจัดการแข่งขันเพื่อกระตุ้นนักพัฒนา นี่เลย Android Developer Challenge * กองทุน, นักลงทุน, องค์ประกอบทางธุรกิจและการเงินที่ช่วยหล่อลื่นให้ ecosystem เดินหน้าไปได้จริง ตัวอย่างคือ iFund และกองทุนของ BlackBerry * หนังสือ ตำรา คู่มือ ที่วางขายในท้องตลาด หลายค่ายก็ต้องจ้างเขียน เช่น Microsoft Press หรือ IBM Red Book ต้องออกจากบ้านแล้ว คิดออกเท่านี้ เอาไว้มาต่อ