เมื่อโปรเจ็กต์ JavaScript Standard Style (StandardJS) 1 ตัดสินใจแสดงโฆษณาระหว่างการติดตั้ง แบ็คแลชนั้นรวดเร็วและรุนแรง โปรเจ็กต์นี้เป็นคู่มือสไตล์ JavaScript, ฟอร์แมตเตอร์ และ linter ที่รวบรวมความคิดเห็นไว้ในที่เดียว และเป็นโปรเจ็กต์ npm แรกที่พยายามหาเงินโดยการแทรกโฆษณาในบรรทัดคำสั่ง 2 “การทดลอง” สิ้นสุดลงไม่นานหลังจากที่เริ่มต้นขึ้น 3 แต่สำหรับฉัน สิ่งนี้ทำให้เกิดคำถามใหญ่: เนื่องจาก StandardJS เป็นเพียงตัวห่อหุ้มรอบ ESLint ที่ปิดใช้งานการปรับแต่งเอง StandardJS มีหน้าที่รับผิดชอบอะไรกับ ESLint
ผู้ดูแลโอเพ่นซอร์สควรจะสามารถรับสปอนเซอร์สำหรับงานของพวกเขาได้ แต่โครงการที่ได้รับทุนนั้นมีความรับผิดชอบต่อโครงการที่สร้างขึ้นเพื่อส่งเงินบางส่วนไปหรือไม่? ท้ายที่สุดแล้ว หากผลประโยชน์ส่วนใหญ่ของโครงการของคุณมาจากงานของโครงการของคนอื่น การทำผลกำไรของคุณนั้นยุติธรรมจริงหรือ?
มีความรับผิดชอบในระดับหนึ่งหรือไม่เมื่อโครงการได้รับเงินทุนเพื่อช่วยเหลือโครงการทั้งหมดที่สร้างขึ้น?
ระบบนิเวศโอเพ่นซอร์สแบบแบ่งชั้น
เมื่อมีคนพูดว่า “โอเพ่นซอร์ส” อาจหมายถึงหลายสิ่งหลายอย่าง Vue ซึ่งเป็น 4 เฟรมเวิร์ก UI ที่สร้างเว็บแอปพลิเคชันสมัยใหม่จำนวนมาก เป็นโครงการโอเพ่นซอร์สที่มีการดาวน์โหลด npm รายสัปดาห์ 2.8 ล้านครั้ง he
, 5 แพ็คเกจ npm ขนาดเล็กที่ช่วยในการเข้ารหัสและถอดรหัสเอนทิตี HTML ในสตริง ยังเป็นโปรเจ็กต์โอเพ่นซอร์สด้วย และมีการดาวน์โหลด npm รายสัปดาห์ 13.5 ล้านครั้ง คนไหนที่คุณอยากจะบริจาคให้? โดยเนื้อแท้แล้วสมควรได้รับเงินทุนมากกว่าที่อื่นหรือไม่?
บางคนอาจบอกว่าทั้งสองโครงการมีความรับผิดชอบในการหาทุนของตัวเอง พวกเขาทั้งสองมีความสามารถเท่าเทียมกันในการตั้งเว็บไซต์เพื่อรับเงินบริจาค พวกเขาทั้งสองสามารถเข้าถึงบุคคลและบริษัทเพื่อขอเงินทุนได้เท่าเทียมกัน พวกเขาทั้งสองมีความสามารถในการนำเสนอเกี่ยวกับโครงการเพื่อดึงดูดความสนใจเท่าเทียมกัน แต่มีความแตกต่างพื้นฐานระหว่างสองโครงการนี้
ความจริงก็คือเราอาศัยอยู่ในระบบนิเวศโอเพ่นซอร์สแบบแบ่งชั้น จุดสูงสุดถูกสงวนไว้สำหรับโครงการที่ได้รับการยอมรับและใช้งานเป็นจำนวนมาก โครงการเช่น Vue ที่ผู้ใช้ปลายทางเผชิญหน้า (ผลลัพธ์จะปรากฏแก่ผู้ใช้ปลายทางโดยตรงเนื่องจากส่วนต่อประสานผู้ใช้สร้างขึ้นด้วย) และโครงการที่ต้องเผชิญกับนักพัฒนา (นักพัฒนาเลือกใช้โครงการโดยเฉพาะ) ได้รับความสนใจเป็นอย่างมากเช่น ผู้คนจะแบ่งปันประสบการณ์ แนวทางปฏิบัติที่ดีที่สุด เครื่องมือ การทดสอบ และเคล็ดลับและลูกเล่นอื่นๆ เพื่อใช้โปรเจ็กต์ได้ดีที่สุด เนื่องจากมีการกล่าวถึง Vue อย่างต่อเนื่อง โครงการจึงมีการแบ่งปันความคิดมากขึ้น และทำให้ดึงดูดผู้สนับสนุนได้ง่ายขึ้น เนื่องจาก Vue ต้องเผชิญกับผู้ใช้ปลายทาง จึงง่ายต่อการเข้าใจคุณค่าที่นำเสนอต่อบริษัทที่ใช้งาน Vue ทั้งบริษัทและนักพัฒนาต่างก็มีแรงจูงใจที่จะสนับสนุนโครงการเหล่านี้มากขึ้นทั้งด้านการเงินและผ่านการสนับสนุนโค้ด
ในอีกด้านของสเปกตรัม มีโครงการระบบนิเวศที่ให้บริการสาธารณูปโภคหรือการทำงานระดับต่ำ อย่างที่ he
ส่วนใหญ่ไม่เคยได้ยิน โปรเจ็กต์เหล่านี้รวมอยู่ในการพึ่งพาโดยโปรเจ็กต์ที่บริษัทและนักพัฒนาเลือกใช้ ดังนั้นจึงนั่งอยู่เบื้องหลังโดยที่ไม่มีใครมองเห็นได้มากนัก และแม้ว่าบริษัทและนักพัฒนาจะได้ยินเกี่ยวกับการพึ่งพาอาศัยกันเช่น he
พวกเขาจะคิดว่ามันสำคัญพอที่จะให้เงินทุนหรือไม่ คุณลองนึกภาพการเข้าหาบริษัทเพื่อระดมทุนและอธิบายว่ายูทิลิตี้ของคุณเข้ารหัสและถอดรหัสเอนทิตี HTML หรือไม่ พวกเขาคงคิดว่าคุณพูดเล่น และไม่ว่าในกรณีใดพวกเขาจะหัวเราะ
ไม่ต้องสงสัยเลยว่า Vue ต้องการการบำรุงรักษาและการพัฒนาอย่างต่อเนื่องมากกว่า he
ดังนั้น he
จึงไม่ต้องการเงินทุนมากขนาดนั้น แต่สมควรเป็นศูนย์หรือไม่ ถึงกระนั้น Vue ก็ขึ้นอยู่กับ he
เห็นได้ชัดว่ามันมีค่าสำหรับ Vue แล้ว Vue มีหน้าที่อะไรต่อ he
?
ผลที่ตามมาของโอเพ่นซอร์สแบบแบ่งชั้น
เราได้เห็นปัญหาด้านความปลอดภัยที่สำคัญในโครงการโอเพ่นซอร์สที่ไม่ได้รับการสนับสนุนอย่างเหมาะสม บั๊ก heartbleed ใน OpenSSL ทำให้เว็บไม่ปลอดภัยจนกว่าจะสามารถแก้ไขได้ 6 ในขณะนั้น (2014) OpenSSL ได้รับเงินบริจาคเพียง $2,000 ต่อปี และมีนักพัฒนาคนหนึ่งทำงานอยู่ OpenSSL ยังคงเป็นเทคโนโลยีอินเทอร์เน็ตพื้นฐาน ที่ฝังอยู่ในทุกอย่างตั้งแต่เว็บเบราว์เซอร์ไปจนถึงซอฟต์แวร์เว็บเซิร์ฟเวอร์ แต่ถึงกระนั้นก็ยังได้รับทุนไม่เพียงพอ ในที่สุด มูลนิธิลินุกซ์ก็ก้าวขึ้นมาสนับสนุนเพื่อให้แน่ใจว่าโครงการสำคัญดังกล่าวจะไม่ถูกทิ้งไว้โดยไม่มีเงินทุนอีก
ใกล้กับระบบนิเวศ JavaScript ผู้สร้าง faker.js และ colors.js Marak Squires ตั้งใจทำให้เป็นง่อย 7 โครงการเนื่องจากความหงุดหงิดเกี่ยวกับการขาดเงินทุน เขาอ้างว่าเขาเป็น “จะไม่สนับสนุน Fortune 500s (และ บริษัท ขนาดเล็กอื่น ๆ ) ด้วยงานฟรีของฉันอีกต่อไป” เขาพยายามตั้งค่าบัญชีผู้สนับสนุน GitHub และบัญชี Open Collective แต่เขาก็ยังไม่สามารถทำเงินได้เพียงพอ
หากการรักษาความปลอดภัยทางอินเทอร์เน็ตที่เป็นรากฐานอย่าง OpenSSL ประสบปัญหาขาดแคลนเงินทุนมาหลายปี คุณคิดว่าการสนทนาดังกล่าวจะไปขอสนับสนุน faker.js (โครงการสำหรับสร้างข้อมูลปลอม) และ colors.js (โครงการ) ได้อย่างไร เพื่อเพิ่มสีและสไตล์ลงในแอปพลิเคชันคอนโซล) จะหายไป?
ความจริงที่โหดร้ายก็คือ โครงการโอเพ่นซอร์สบางโครงการเท่านั้นที่มีโอกาสระดมทุนได้ไม่เท่ากัน แล้วเราจะคาดหวังให้โครงการเหล่านี้อยู่รอดได้อย่างไร?
ด้วยพลังอันยิ่งใหญ่…
ง่ายเกินไปที่จะบอกว่าแต่ละโครงการควรรับผิดชอบเงินทุนของตัวเองเมื่อมีโครงการที่แบ่งชั้นอย่างชัดเจน หากบริษัทมีงบประมาณสนับสนุนโอเพ่นซอร์ส แพ็คเกจอย่าง he
มีโอกาสน้อยมากที่จะแข่งขันเพื่อชิงเงินเหล่านั้นกับ Vue วิวจะชนะ 99% ของเวลาทั้งหมด เมื่อปรับขนาดในโปรเจ็กต์โอเพนซอร์ซทั้งหมด เราจะลงเอยด้วยโปรเจ็กต์ขนาดใหญ่จำนวนเล็กน้อยที่ได้รับเงินทุนส่วนใหญ่ และจากนั้นโปรเจ็กต์ขนาดเล็กจำนวนมากที่ได้รับเงินทุนเพียงเล็กน้อยหรือไม่มีเลย และเมื่อโปรเจ็กต์ที่ใหญ่กว่าต้องพึ่งพาโปรเจ็กต์ขนาดเล็ก สิ่งนี้จะไม่ยั่งยืน การพึ่งพาระดับต่ำที่ไม่สมบูรณ์เพียงครั้งเดียวอาจเสี่ยงต่อโปรเจ็กต์ขนาดใหญ่ทั้งหมดและผู้ใช้ทั้งหมด
วิธีแก้ปัญหานี้ง่ายมาก: โครงการโอเพ่นซอร์สควรให้ทุนแก่การพึ่งพาของตนเอง ฉันยังพูดได้เต็มปากว่านี่ไม่ใช่แค่วิธีแก้ปัญหาที่ดีที่สุด แต่จริงๆ แล้วเป็น ความรับผิดชอบ ของโปรเจ็กต์ที่ใหญ่กว่าและได้รับการสนับสนุนอย่างดีเหล่านั้นในการสนับสนุนการพึ่งพาของพวกเขา เจตนารมณ์ของโอเพ่นซอร์สเป็นหนึ่งในการให้การยอมรับต่อชิ้นส่วนเหล่านั้นซึ่งซอฟต์แวร์ของคุณสร้างขึ้น และไม่มีเหตุผลใดๆ ที่ไม่สามารถขยายการจดจำไปยังเงินทุนได้
มีหลายโครงการในระบบนิเวศ JavaScript ที่ได้รับเงินบริจาคมากกว่า $100,000 ต่อปี รวมถึง:
- บาเบล 8 – $303,000
- Webpack 9 – $250,000
- ESLint 10 – $190,000
- Vue 11 – $150,000 (บวกกับจำนวนเงินที่ไม่ทราบในผู้สนับสนุน GitHub)
ลองนึกภาพว่าแต่ละโครงการเหล่านี้แยกส่วนร้อยละของการสนับสนุนเพื่อมอบให้กับการพึ่งพาของพวกเขาหรือไม่ ที่ 10% นั่นหมายถึงกว่า 80,000 ดอลลาร์สหรัฐฯ จะอยู่ในมือของโครงการอื่นๆ ที่ไม่สามารถดึงดูดเงินทุนได้ เงินจำนวนนั้นจะสร้างความแตกต่างอย่างมีนัยสำคัญต่อโครงการขนาดเล็ก
คำปฏิญาณสปอนเซอร์ในทางปฏิบัติ
โครงการสนับสนุนการพึ่งพาอาศัยกันในทางปฏิบัติมีลักษณะอย่างไร แน่นอนว่าโครงการไม่สามารถคาดหวังให้เงินทุนส่วนใหญ่แก่การพึ่งพาได้ และฉันจะไม่แนะนำอย่างนั้น แต่มีขั้นตอนง่ายๆ สองสามขั้นตอนที่ผู้ดูแลสามารถดำเนินการได้เพื่อเริ่มต้น:
- งบประมาณที่จะแจก 10% ของเงินทุนของคุณให้กับการพึ่งพาของคุณ วิธีที่ดีที่สุดในการวางแผนก็คือการจัดทำงบประมาณตั้งแต่เริ่มต้น ในกรณีส่วนใหญ่ 10% ของเงินทุนของคุณไม่เพียงพอที่จะส่งผลกระทบต่อการบำรุงรักษาและการพัฒนาโครงการของคุณ หากในกรณีของคุณมากเกินไปก็ให้ลดเหลือ 5% หรือ 1% ส่วนสำคัญคือคุณวางแผนที่จะเริ่มสนับสนุนการพึ่งพาของคุณเป็นรายเดือนโดยการตั้งงบประมาณไว้
- เริ่มต้นด้วยสิ่งที่ไม่มีและหาทางขึ้น ในการตัดสินใจว่าจะสนับสนุนโครงการใด ให้เริ่มจากโครงการที่มีเงินทุนน้อยหรือไม่มีเลย คุณสามารถใช้ BackYourStack 12 เพื่อระบุการพึ่งพาของคุณและตรวจสอบว่าพวกเขามีบัญชี Open Collective หรือไม่ หากพวกเขาไม่มีกลไกในการรับบริจาค คุณสามารถให้คำมั่นกับพวกเขาได้ตลอดเวลาที่ Open Collective 13 หรือติดต่อและสนับสนุนให้พวกเขากำหนดวิธีการบริจาค เป็นการดีที่จะเริ่มต้นด้วยการสนับสนุนโครงการหนึ่งแทนที่จะพยายามกระจายเงินทุนในหลาย ๆ โครงการ เมื่อคุณหาเงินได้มากขึ้น คุณก็จะสามารถสนับสนุนโครงการต่างๆ ได้มากขึ้น มันไม่สมเหตุสมผลเลยที่จะบริจาคเงินให้กับโครงการที่มีเงินมากกว่าของคุณอยู่แล้ว แม้ว่า ESLint จะใช้ Webpack แต่ Webpack ก็มีเงินทุนมากกว่า ESLint ดังนั้นจึงไม่สมเหตุสมผลที่ ESLint จะบริจาคให้กับ Webpack แต่ ESLint บริจาคให้กับการพึ่งพาเช่น lint-stage ซึ่งมีเงินทุนน้อยกว่ามาก
- ให้รางวัลเป็นเลิศ นอกจากความต้องการด้านการเงินแล้ว คุณอาจต้องการเพิ่มเกณฑ์อื่นๆ ที่แสดงว่าโครงการได้รับการดูแลอย่างดีเพียงใด มีใบอนุญาตโอเพ่นซอร์สที่ถูกต้องหรือไม่? มันมีจรรยาบรรณหรือไม่? คุณสามารถใช้การบริจาคเพื่อช่วยยกระดับการพึ่งพาของคุณนอกเหนือจากการสนับสนุน
ด้วยวิธีนี้ โครงการทุกขนาดสามารถนำไปสู่ความเป็นอยู่ที่ดีของการพึ่งพาได้ จากนั้น ผู้สนับสนุนจะไหลจากโครงการที่ใหญ่ที่สุดและได้รับทุนสนับสนุนที่ดีที่สุด ไปจนถึงแผนผังการพึ่งพาไปจนถึงแพ็คเกจที่ไม่มีการพึ่งพา แม้ว่าโครงการของคุณจะได้รับเงินเพียง $100 ต่อเดือน คุณยังสามารถสร้างความแตกต่างให้กับโครงการอื่นที่ไม่ได้รับเงินทุนใดๆ
คำกระตุ้นการตัดสินใจ: ทำส่วนของคุณ
หากคุณเป็นผู้ดูแลโครงการโอเพ่นซอร์สที่ได้รับทุนสนับสนุนมาอย่างดี ตอนนี้ เป็นเวลาที่ต้องก้าวขึ้น เป็นเวลานานเกินไปแล้วที่เราได้นั่งลงและรับการสนับสนุนสำหรับการใช้งานของเราเอง แม้ว่าโครงการที่เราพึ่งพานั้นจะหาเงินทุนได้ยาก เรามีอำนาจและความรับผิดชอบในการปรับปรุงสถานการณ์สำหรับผู้ดูแลโครงการโอเพ่นซอร์สทั้งหมด ESLint 14 และ Astro 15 ได้จัดตั้งโปรแกรมเพื่อบริจาคให้กับการพึ่งพา คุณสามารถร่วมกับพวกเขาในการแพร่กระจายความมั่งคั่งไปทั่ว
หากคุณดูแลโครงการโอเพ่นซอร์สขนาดเล็กที่ต้องการเงินทุน ให้พิจารณาว่ามีโครงการที่ได้รับทุนสนับสนุนที่ดีซึ่งขึ้นอยู่กับโครงการของคุณโดยตรงหรือไม่ และติดต่อผู้ดูแล อย่าลังเลที่จะขอความช่วยเหลือทางการเงินและอ้างอิงโพสต์บล็อกนี้ ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าทั้งบัญชีผู้สนับสนุน GitHub 16 และบัญชี Open Collective 17 เพื่อให้ง่ายต่อการรับเงินบริจาค อย่ากลัวที่จะเข้าหาคนเหล่านี้และขอความช่วยเหลือจากพวกเขา พวกเขาได้รับประโยชน์จากงานของคุณมาเป็นเวลานาน ดังนั้นคุณจึงไม่ขออะไรตอบแทนโดยเปล่าประโยชน์ คุณกำลังขอค่าตอบแทนสำหรับมูลค่าที่คุณให้ไปแล้ว
หากคุณกำลังสนับสนุนโครงการโอเพ่นซอร์ส ให้ถามพวกเขาว่าโปรแกรมสนับสนุนการพึ่งพาของพวกเขาเป็นอย่างไร สปอนเซอร์อยู่ในตำแหน่งที่ไม่เหมือนใครที่จะกดดันโครงการต่างๆ เพื่อแจกจ่ายเงินทุนของตนอย่างเหมาะสม สำหรับโครงการ ESLint เราได้ยินจากผู้สนับสนุนว่าเราถูกเลือกมากกว่าโครงการอื่นๆ ส่วนหนึ่งเป็นเพราะเราสนับสนุนการพึ่งพาของเรา เช่นเดียวกับในตลาดใด ๆ ผู้ที่มีเงินมีผลเกินขนาดต่อการทำงานของตลาด
เราทุกคนต้องทำในส่วนของเราเพื่อให้แน่ใจว่าเรากำลังก้าวไปสู่ระบบนิเวศโอเพ่นซอร์สที่โครงการที่มีค่าที่สุดไม่ต้องดิ้นรนกับเงินทุน มาเปิดการโอนเงินปลายน้ำทุกที่ที่ทำได้
บทสรุป
“เราจำเป็นต้องให้ทุนสนับสนุนโครงการตามสิ่งที่เราใช้มากกว่าสิ่งที่เราเห็น” – Ben Nickols กรรมการบริหาร Open Source Collective
โอเพ่นซอร์สจะไม่รอดหากเราทำสิ่งต่าง ๆ แบบเดิม การพึ่งพาเงินบริจาคคนละ $5-$10 ต่อเดือนนั้นไม่เพียงพอสำหรับโครงการส่วนใหญ่ที่จะอยู่รอด ทางออกเดียวคือการระดมทุนขององค์กร และในขณะที่บริษัทจำนวนมากขึ้นยินดีบริจาคให้กับโอเพ่นซอร์ส จำนวนโครงการที่พวกเขายินดีบริจาคมีน้อยและมักจำกัดเฉพาะสิ่งที่ให้คุณค่าแก่พวกเขาในทันที โครงการเหล่านั้นที่โชคดีพอที่จะมองเห็นได้และมีความคิดร่วมกันเพื่อดึงดูดเงินทุนมีความรับผิดชอบในการพึ่งพาของพวกเขาเพื่อให้แน่ใจว่าระบบนิเวศทั้งหมดอยู่รอด หากเราสามารถลงเอยในสถานที่ที่บริษัทบริจาคให้กับโครงการโอเพ่นซอร์สจำนวนเล็กน้อย และในทางกลับกัน โครงการเหล่านั้นบริจาคให้ผู้อื่น เราจะช่วยกระจายเงินทุนไปทั่วทั้งระบบนิเวศและสร้างเส้นทางสู่ความยั่งยืนอย่างแท้จริง
ขอบคุณ Fred Schott และ Ben Nickolls สำหรับการทบทวนฉบับร่างต้นของโพสต์นี้