· talk · 2 min read
10 เหตุผลในการ Contribute กับ OCA
ทำไมต้อง Contribute กับ Odoo Community Association (OCA)
สวัสดีครับ ในบทความนี้เรามาเปลี่ยนบรรยากาศมาคุยเรื่องเบาๆกันบ้างนะครับ ลองมาทำความรู้จักกับหลักคิดของ Open Source และ OCA (Odoo Community Association) กันหน่อย เพราะถ้าสังเกต Blog นี้ส่วนใหญ่จะเป็นการนำโมดูลที่ Ecosoftได้ทำหรือได้ใช้งานจาก OCA นำมาแชร์ประสบการณ์ แต่หลายคนอาจยังไม่รู้จัก OCA
OCA คือใคร?
เนื่องจาก Odoo เป็น ERP ซอฟต์แวร์ตัวหลักในองค์กร องค์กรยิ่งหลากหลาย ความต้องการด้าน Business Feature ก็หลากหลายตาม และด้วยที่ Framework ของ Odoo มีความเป็น Modular สูง ทำให้นักพัฒนาสามารถเพิ่ม Business Feature ใหม่ๆได้ง่าย แต่ในช่วงแรกๆเป็นในลักษณะต่างคนต่างทำ ทำให้มีการทำงานซ้ำซ้อนกันมากและโมดูลต่างๆก็ไม่ได้รับการดูแลอย่างเป็นระบบ (เช่น บั๊กเยอะ อัพเกรดยาก ไม่มีมาตรฐาน)
OCA จึงก่อตั้งมาเพื่อแก้ปัญหาเหล่านี้ โดยการรวมตัวของคนที่ทำงานเกี่ยวกับ Odoo ส่วนใหญ่เป็นผู้ให้บริการระบบ Odoo ซึ่งต้องเจอกับความต้องการอันหลากหลาย OCA มีหน้าที่สร้างแพลตฟอร์มและกระบวนการทำงานที่เป็นระบบ และช่วยทำหน้าที่สนับสนุนให้เกิดการทำงานร่วมกันในหมู่นักพัฒนาและผู้ใช้งาน ปัจจุบันได้มีผู้เข้าร่วมกับ OCA เกือบพันคน และสร้างโมดูลคุณภาพสูงหลายพันโมดูลในหลายๆเวอร์ชั่น
ส่วนตัวผมเองเคยเข้าร่วมกับชุมชน Open Source อื่นมาบ้างจึงเข้าใจอยู่แล้วว่า ถ้าอยากใช้ Open Source Software ให้เต็มประสิทธิภาพ เราต้องร่วม Contribute Code ด้วย ในขณะที่คนไทยส่วนใหญ่ยังรู้จักกับ Open Source ในฐานะเป็นฟรีซอฟต์แวร์เท่านั้น คือดาวน์โหลดมาใช้ฟรี หรือทำเพิ่มแล้วปิดโค้ด แล้วจบ ไม่ได้มองว่า Open Source ให้โอกาสในการทำงานร่วมกับนักพัฒนาทั่วโลกเพื่อให้ซอฟต์แวร์ที่เรารักดียิ่งๆขึ้น ไม่ผิดอะไรนะครับ แต่มันน่าเสียดาย
เมื่อเรา Ecosoft เริ่มใช้งานกับ Odoo มาตั้งแต่ version 7 เราพยายามเข้าร่วม Contribute Code กับ OCA มาตั้งแต่ตอนนั้น แต่ช่วงนั้นเรายังไม่ได้ปรับตัวเข้ากับ Workflow การทำงานแบบ OCA และด้วยโปรเจคที่ถาโถมเข้ามาในช่วงนั้น ทำให้เราแบ่งเวลาทำงานให้กับ OCA น้อยมาก ซึ่งจะว่าไปก็น่าเสียดายมาก เพราะถ้าได้ทำตั้งแต่แรก คงได้เรียนรู้มากกว่านี้ และลูกค้าเองก็คงได้อานิสงค์จากคุณภาพของโมดูล OCA
เราเพิ่งจะมีเวลาเข้าร่วม OCA ได้เต็มที่มาเพียงปีกว่า แต่ก็ได้เห็นข้อดีของการเข้าร่วมในหลายๆด้าน จึงพยายามที่จะชักชวนเพื่อนๆที่ทำงานเกี่ยวกับ Odoo ให้หันมาเข้าร่วมด้วย
10 เหตุผลในการ Contribute กับ OCA
ในฐานะส่วนบุคคล
- ได้พัฒนาตัวเอง
คุณอาจคิดว่าคุณรู้จัก Odoo ดีแล้ว แต่เอาเข้าจริงๆคุณยังไม่รู้มันดีหรอกครับ OCA เป็นที่รวมคนเก่งจากทั่วโลก และส่วนใหญ่พร้อมที่จะช่วยเหลือ แน่นอนว่าเรื่องการเขียนโค้ดคุณได้เรียนรู้อย่างมากและจากคนเก่งๆด้วย แต่ที่เจ๋งกว่านั้นคือทักษะอื่นๆเช่น การสื่อสารกับชุมชนด้วยภาษาอังกฤษ ทักษะการวิเคราะห์ปัญหา ความเป็นผู้นำ
- ผู้ช่วยรีวิวโค้ดและช่วยแก้ปัญหา
เมื่อคุณส่งโค้ด (git’s pull request) เข้ามาที่ github.com/OCA จะมีคนเข้ามาช่วยรีวิวโค้ดแบบฟรีๆ หลายครั้งคุณจะรู้สึกขอบคุณพวกเขามาก เมื่อคุณรู้ว่าสิ่งที่คุณพยายามทำ มันผิดทาง หรือไม่ก็มีอยู่แล้ว แต่ถ้าโมดูลที่คุณทำน่าสนใจ และสุดท้ายได้รับการผนวกเข้า OCA Repository คุณก็สบายใจได้ เพราะหลังจากนั้น จะมีคนมาช่วยแก้บั๊ก หรือไม่ก็ช่วยอัพเกรดให้ใช้ได้กับ version ใหม่ๆของ Odoo ด้วย
- สร้างโปรไฟล์ให้กับตัวคุณเอง
คุณอาจไม่รู้ว่า Github เป็นเพื่อนที่ดีที่สุดของ IT Recruiter ในการหาโปรแกรมเมอร์ ถ้าคุณมีผลงาน contribution อยู่ที่นั่น วันดีคืนดีก็จะมีคนเข้ามาหาคุณเอง เพราะคุณได้สร้างโปรไฟล์ที่ดีไว้โดยไม่รู้ตัว เรื่องนี้เกิดขึ้นกับตัวผมเองบ่อยครั้ง ที่มี Recruiter ทั้งในและต่างประเทศติดต่อให้ไปร่วมงาน
- ได้เป็นเพื่อนกับคนดีๆจากทั่วโลก
การ Contribute Code ก็คือการทำงานเป็นทีมรูปแบบหนึ่ง คนที่ชอบแบ่งปัน มีแนวโน้มจะเป็นคนน่ารักและเปิดใจ คนแบบนี้มีอยู่มากใน OCA ยิ่งเราให้มากเท่าไหร่ เรายิ่งเป็นที่ใส่ใจมากเท่านั้น ดังนั้นครั้งต่อไป ถ้าคุณไปต่างประเทศ อย่าลืมที่จะแวะไปทานกาแฟกับพวกเขาด้วยล่ะ :) จริงๆเรื่องนี้เป็นจุดที่ผมชอบมากที่สุดของโลก Open Source ซึ่งแตกต่างอย่างมากกับโลกของ Proprietary Software ไหนๆก็ต้องทำงานหนักอยู่แล้ว ความสุขคงอยู่ที่ได้ร่วมงานกับคนดีและคนเก่งนั่นเอง
- สร้างแรงบัลดาลใจในการเป็นส่วนหนึ่งของสิ่งที่ยิ่งใหญ่กว่าตัวเราเอง
OCA มีเป้าหมายในการโปรโมทการใช้งาน Odoo ทั่วโลก เป็นกลุ่มคนที่สร้างโมดูลจำนวนมาก เพื่อให้ Odoo เป็น ERP ระดับโลก เป้าหมายของ OCA คือการเป็น Wikipedia ของ Business Application แม้ว่าจะเดินทางมาได้ระยะหนึ่งแล้ว แต่ก็ยังห่างไกลกับเป้าหมายที่ท้าทาย และเราก็สามารถร่วมเป็นส่วนหนึ่งของหมุดหมายนี้ได้ ผมอยากเสริมด้วยว่า ERP เป็นซอฟต์แวร์ที่มีความสำคัญกับธุรกิจ SME ในประเทศไทยมาก และเราก็สามารถสร้างสิ่งมีประโยชน์มากๆให้กับประเทศของเราผ่านการทำงานแบบ OCA และความร่วมมือในหมู่คนไทย
ในฐานะองค์กร
- สร้างความรู้สึกร่วมด้านการแบ่งปันในองค์กร
ไม่ว่าใครก็คงอยากทำงานให้กับบริษัทที่มีคุณธรรมในการทำธุรกิจ การเข้าร่วม Contribute กับ OCA มีพลังในการส่งสารนั้นออกไปให้กับพนักงาน สุดท้ายแล้วสังคมเราจะดีได้ก็ด้วยเพราะหน่วยย่อยที่สุดเป็นคนดี และเราสามารถทำสิ่งดีๆได้โดยไม่ต้องแยกจากการทำงานปกติด้วยซ้ำไป
- ใช้แพลตฟอร์มในการทำงานด้าน Software ระดับโลกโดยไม่ต้องลงทุน
ไม่ว่า Code ที่ Push เข้า OCA จะได้รับการ Merge หรือไม่ แต่มันจะได้รับการตรวจสอบด้วย DevOps Tools ต่างๆของ OCA เช่น เช็คความถูกต้องและแก้ไขโค้ดอัตโนมัติด้วย (Linting, Black, pre-commit, etc.) ตรวจสอบการเขียน Unit Test (Cover Coverage) ทดสอบการติดตั้ง และรัน Unit Test (Travis Build Server) Test Server สำหรับผู้ใช้งานเข้าไปทดสอบได้ทั้นที (Runbot) แพลตฟอร์มช่วยด้านการแปลภาษา (Weblate) และอื่นๆ แต่ส่วนที่น่าสนใจและผมได้ใช้ประโยชน์มากคือ OCA Development Flow / Coding Standard ซึ่งเรานำมันมาปรับใช้กับบริษัทของเราได้เลยเพื่อช่วยยกระดับมาตรฐานการทำงานในหน่วยงานให้สูงขึ้น
- ช่วยฝึกอบรมและคัดกรองพนักงาน
การที่เรารับกระบวนการทำงานกับ OCA มาใช้เต็มตัว ทำให้สามารถลดเวลาในการอบรมพนักงานไปได้มาก โดยเฉพาะกับโปรแกรมเมอร์ เมื่อพนักงานใหม่เข้ามา เราส่งเข้าทำงานกับ OCA ทันที โดยเบื้องต้นอาจให้ไปช่วย Migrate โมดูลที่มีอยู่แล้วข้ามไปเวอร์ชั่นใหม่ๆ โปรแกรมเมอร์ใหม่ๆ ซึ่งอาจเคยทำงานมาคนละแบบสามารถปรับตัวไปในทางเดียวกัน ได้เรียนรู้ Odoo Framework, ได้รับรู้มาตรฐานการโค้ดที่สูงลิ่วของ OCA, ได้เรียนรู้การใช้งาน Git/Github เพื่อทำงานเป็นทีม และที่สำคัญได้เรียนรู้วัฒนธรรมที่สำคัญขององค์กรนั่นคือการเรียนรู้และแบ่งปัน
- ทำการตลาดโดยไม่ต้องทำการตลาด
มีคนกล่าวว่า “Every line of code is a salesman” ประโยคนี้เราได้ทดสอบกับตัวเอง บริษัทเราไม่ต้องมีพนักงานขาย เราไม่จำเป็นต้องพูดเพื่อชักจูงลูกค้า เพราะลูกค้าเห็นอยู่แล้วว่าเราทำได้จริง!
- ทำโปรเจคให้ดีขึ้นเร็วขึ้นด้วยโมดูลของ OCA
ถ้าอยากให้โปรเจคจบเร็วและไม่มีปัญหาตามหลัง จงพยายามอย่า Customize อะไรเพิ่ม คำกล่าวนี้คงจะจริง แต่แทบไม่เคยเกิดขึ้นได้เลย ทุกโปรเจคที่เราทำ มักมีช่องว่างของสิ่งที่ Odoo ทำได้ กับความคาดหวังของลูกค้า และทุกครั้งเรามักจะคิดว่านั่นเป็นความต้องการซึ่งเฉพาะเจาะจงกับโปรเจคนั้นๆและไม่เคยมีมาก่อน จากนั้นเราก็พร้อมกระโจนเข้าสู่วังวนของการพัฒนาแบบไม่รู้จบ แน่นอนว่าพวกแมลงก็ตามมาแบบไม่รู้จบเช่นกัน แต่หลังจากที่ได้เข้าร่วมกับ OCA เราได้หลักคิดใหม่ โดยเราจะใช้ OCA ให้ได้มากที่สุด ถ้า OCA ไม่มีสิ่งที่ต้องการ ให้พยายาม Contribute ขึ้น OCA ไปเลย โดยออกแบบให้ใช้ได้ทั่วไปก่อน และสุดท้าย ส่วนที่เฉพาะทางของโปรเจคนั้นๆจริงๆจึงค่อยมา Customize
ที่ผ่านมาเราพบว่าหลายฟังก์ชั่นงานที่คิดว่าไม่มีแน่ มักมีใน OCA แล้ว ในแต่ละโปรเจคเราจะพยายามจัดการให้ใช้ OCA ประมาณ 90% เหลืออีก 10% จะเป็นส่วนที่ต้อง Customize เพิ่มเติม ซึ่งส่วนใหญ่จะเป็นการเพิ่มหรือลดฟิลด์หรือปรับฟอร์มให้สอดคล้องกับความต้องการ โดยไม่ได้กระทบกับ Process หลัก
นั่นคือ 10 เหตุผลที่ Ecosoft เลือกแนวทาง Contribution แทนที่จะปิดโค้ด
แม้ว่าจะมีประโยชน์ทั้งทางตรงและทางอ้อม ผมก็ต้องเตือนว่ามันอาจไม่ง่ายนักในตอนเริ่มต้น สิ่งที่คุณต้องเรียนรู้ในช่วงแรกมันต้องใช้เวลาในการปรับตัว ถ้าคุณมีงานล้นมือและไม่มุ่งมั่นมากพอ คุณอาจล้มเลิกความตั้งใจไปในที่สุด จนกระทั่งคุณสามารถโอบรับการทำงานกับ OCA มาเป็นส่วนหนึ่งในการทำงานโปรเจคของคุณนั่นแหล่ะทุกอย่างถึงจะเริ่มเข้าที่เข้าทาง จากนั้นจึงสามารถทำประโยชน์จาก OCA ได้อย่างเต็มที่
ถ้าคุณเริ่มสนใจแนวทางนี้ ผมแนะนำให้อ่านบทความนี้ครับ How to involve the OCA in your project delivery process?
ถ้าเริ่มสนใจว่า OCA คืออะไร ลองไปดูรายละเอียดได้ที่เว็ปไซต์ https://odoo-community.org/ ส่วนโค้ดที่นักพัฒนา Odoo โลกร่วมกัน Contribute ดูได้จาก https://github.com/OCA
by Kitti U.