การสนับสนุนการพึ่งพา: ขั้นตอนต่อไปในความยั่งยืนของโอเพ่นซอร์ส

favicon.png

เมื่อโปรเจ็กต์ 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 สำหรับการทบทวนฉบับร่างต้นของโพสต์นี้

อ้างอิง

  1. JavaScript สไตล์มาตรฐาน

  2. npm ติดตั้งเงินทุน

  3. StandardJS หยุดการทดสอบโฆษณาในเทอร์มินัลหลังจาก Linode ดึงผู้สนับสนุน

  4. วิว

  5. he

  6. ยักษ์ใหญ่ด้านเทคโนโลยีถูก Heartbleed ตำหนิ ในที่สุดก็ตกลงที่จะให้เงินสนับสนุน OpenSSL

  7. JavaScript dev ตั้งใจสร้างแพ็คเกจ npm ยอดนิยมของตัวเองเพื่อสร้างประเด็น

  8. กลุ่มเปิด: Webpack

  9. เปิดกลุ่ม: Babel

  10. กลุ่มเปิด: ESLint

  11. Open Collective: Vue

  12. BackYourStack

  13. Open Collective: ทำสัญญา

  14. ESLint: รองรับการพึ่งพาของเรา

  15. ประกาศการบริจาคการพึ่งพา Astro

  16. ผู้สนับสนุน GitHub

  17. กลุ่มโอเพ่นซอร์ส: สิ่งที่เรานำเสนอ