How to become a MediaWiki hacker/th

บทความนี้เขียนขึ้นเพื่อช่วยให้นักพัฒนาได้เรียนรู้ทักษะพื้นฐานที่จำเป็นเพื่อนำไปสู่การพัฒนามีเดียวิกิ

หากคุณเป็นนักพัฒนาที่มีประสบการณ์ที่มีความคุ้นเคยกับการใช้มีเดียวิกิอยู่แล้ว ให้เยี่ยมชมแทน

ภาพรวม
มีเดียวิกิเป็นซอฟต์แวร์ที่ทรงอานุภาพของวิกิพีเดีย, โครงการพี่น้อง และวิกินับพันทั่วโลก มันทำงานบนระบบปฏิบัติการส่วนใหญ่ ซึ่งเขียนในภาษาพีเอชพี ส่วนใหญ่ใช้มายเอสคิวเอลและเซิร์ฟเวอร์ฐานข้อมูลมาเรียดีบี และใช้เจเควียรี ในฐานะไลบรารีจาวาสคริปต์ การพัฒนาของมีเดียวิกิได้รับการสนับสนุนหลักโดยมูลนิธิวิกิมีเดีย ผ่านนักพัฒนาชุมชนอาสาสมัครส่วนใหญ่ที่ทำหน้าที่ได้เป็นอย่างดี

หน้านี้จะช่วยให้คุณเริ่มต้นบนเส้นทางที่จะกลายเป็นผู้มีส่วนร่วมกับมีเดียวิกิ นี่ไม่ได้เป็นเกี่ยวกับการสอน มันเป็นเพียงแค่จุดที่คุณไปยังสถานที่ต่าง ๆ ที่คุณสามารถไปเรียนรู้ต่อสิ่งที่จำเป็น

เริ่มต้น
เริ่มต้นด้วยการลงทะเบียน และอ่านเกี่ยวกับการสอนเกอร์ริต จากนั้นคุณสามารถย้ายไปยังการดาวน์โหลดโค้ดของเรา, การทำการเปลี่ยนแปลง, การทดสอบเหล่านั้น และการยื่นเสนอแพตช์ มีสองวิธีการตั้งค่าพัฒนาสิ่งรอบข้างของคุณ: โดยติดตั้งเครื่องเสมือนที่กำหนดไว้ล่วงหน้า (vagrant) หรือคู่มือ

เครื่องเสมือนกับวาแกรนต์

 * การติดตั้งวาแกรนต์ - ขั้นตอนเหล่านี้จะติดตั้งเซิร์ฟเวอร์มีเดียวิกิ กับความต้องการทั้งหมดภายในเครื่องเสมือนลินุกซ์ (สามารถนำมาใช้บนปฏิคมลินุกซ์, วินโดวส์ หรือแมค)

การติดตั้งด้วยตนเอง

 * ความต้องการการติดตั้ง — ตรวจสอบความต้องการของฮาร์ดแวร์ และติดตั้งเซิร์ฟเวอร์แลมป์, แมมป์ หรือแวมป์ (ลินุกซ์, แมค หรือวินโดวส์ บวกกับอะแพชี, มายเอสคิวแอล/มาเรียดีบี และพีเอชพี)
 * — ดาวน์โหลดซอร์สโค้ดล่าสุดจากซอฟต์แวร์กิต
 * — ต่อด้วยการติดตั้งและกำหนดค่าเริ่มต้น
 * ตั้งค่าโหมดการแก้ปัญหาต่าง ๆ ในสภาพแวดล้อมของคุณ เพื่อแสดงคำเตือนและข้อผิดพลาดในช่วงต้น

มันไม่จำเป็นต้องดาวน์โหลดฐานข้อมูลวิกิพีเดียกองไว้ เพื่อพัฒนาคุณลักษณะมีเดียวิกิ ในความเป็นจริง ในหลายกรณีก็ง่ายต่อการใช้ฐานข้อมูล ที่อยู่ใกล้กับที่ว่างเปล่ามีเพียงไม่กี่หน้าทดสอบพิเศษที่สร้างขึ้น อย่างไรก็ตาม หากมีเหตุผลบางอย่างที่คุณต้องการที่จะมีสำเนาของวิกิพีเดีย คุณสามารถได้รับการถ่ายโอนข้อมูล

แนะนำให้อ่าน


คำแนะนำทั่วไป
หากคุณเลือกที่จะทำงานในรายงานข้อผิดพลาดที่ต้องมีการเขียนหรือการเปลี่ยนรหัส คุณอาจต้องการดูหน้าเหล่านี้อย่างเผิน ๆ เป็นอย่างน้อยก่อน:

ทั้งสองเส้นทางหลักในการเริ่มกับการพัฒนามีเดียวิกิจะรับการแก้ไขข้อผิดพลาดเล็ก ๆ น้อย ๆ ในรหัสที่มีอยู่ หรือเพื่อเพิ่มคุณลักษณะใหม่ ซึ่งมักจะผ่านส่วนขยายของมีเดียวิกิ  
 * การเข้ารหัสการประชุม และหน้าเว็บใด ๆ ที่เกี่ยวข้องกับงานของคุณ (,, , …)
 * ตามแนวทางข้อความผูกมัด โดยเฉพาะอย่างยิ่งส่วนตัวอย่างที่ด้านล่าง จะเพิ่มการแจ้งเตือนเกี่ยวกับเส้นทางของการรายงานที่สอดคล้องกันในโดยอัตโนมัติ ดังนั้นไม่มีความจำเป็นอีกต่อไปที่จะเพิ่มความคิดเห็น"โปรดตรวจสอบ"ในรายงาน
 * ตรวจสอบรหัสของคุณกับก่อนกระทำรายการตรวจสอบ อย่าข้ามขั้นตอนนี้ ; คุณจะมีความสุขที่คุณไม่ได้ทำ
 * ได้รับการตรวจสอบรหัส ค้นหาและเพิ่มผู้ตรวจสอบที่มีศักยภาพต่อแพตช์ของคุณ
 * การแก้ไขเปลี่ยนแปลง อย่าสร้างเซ็ตการแก้ไขเกอร์ริตใหม่ในการแก้ไขปัญหาอย่างใดอย่างหนึ่งก่อนหน้าของคุณ !
 * ในกรณีส่วนใหญ่เมื่อทำงานกับมีเดียวิกิ คุณไม่ต้องการที่จะแฮกแกนวิกิมีเดีย จนกว่าคุณจะรู้ถึงสิ่งที่คุณกำลังทำจริง ๆ

ข้อเสนอแนะ, คำถาม และการสนับสนุน
 
 * คุณคาดว่าจะทำวิจัยพื้นฐานของตัวเองบางส่วนก่อน: ดูที่รหัส, พยายามที่จะทำความเข้าใจบางอย่างว่ามันควรจะทำอย่างไร, อ่านเอกสารที่เกี่ยวข้อง, พยายามหาสถานที่ที่น่าจะเป็น ที่คุณจำเป็นต้องทำการเปลี่ยนแปลงเพื่อแก้ไขข้อผิดพลาด
 * ส่วนสถาปัตยกรรมซอฟต์แวร์ หากคุณมีคำถามทั่วไปเกี่ยวกับโครงสร้างพื้นฐาน หรือขั้นตอนการทำงานที่ไม่ได้ผูกติดอยู่กับข้อผิดพลาดเฉพาะที่คุณต้องการที่จะทำงานด้วย ให้ใช้ช่องทางทั่วไป เช่น, รายชื่อผู้รับจดหมาย หรือหน้าอภิปรายวิกิ ตัวอย่างเช่น หากคุณมีปัญหากับเกอร์ริต ส่วนหน้าอภิปรายเกอร์ริตอาจจะเป็นส่วนที่ดีในการสอบถาม
 * หากคุณมีคำถามเกี่ยวกับข้อผิดพลาดของตัวมันเอง ให้แสดงความคิดเห็นในรายงานที่สอดคล้องกัน "ฉันจะต้องทำอะไรเพื่อแก้ไขปัญหานี้หรือไม่ ?" ไม่ได้เป็นคำถามที่ดีสำหรับการเริ่มต้น: คำถามเฉพาะเจาะจงมากขึ้นของคุณ คือ มีใครสักคนที่สามารถตอบได้อย่างรวดเร็วมากกว่า หากคุณไม่มีความคิดในการแก้ไขข้อผิดพลาดทุกวิธี บางทีข้อผิดพลาดยังไม่ได้เกิดขึ้นกับคุณ - โปรดพิจารณาการค้นหาสิ่งที่ง่ายกว่าเป็นอันดับแรก
 * เมื่อถาม, อธิบายรายละเอียดสิ่งที่คุณมีความพยายามและพบแล้ว เพื่อให้ผู้อื่นสามารถช่วยในระดับที่เหมาะสม พยายามเจาะจง - ตัวอย่างเช่น คัดลอกและวางคำสั่งของคุณและข้อมูลที่ส่งออกมาของพวกเขา (ถ้าไม่ยาวเกินไป) แทนการถอดความในคำของคุณเอง หลีกเลี่ยงความเข้าใจผิดนี้
 * หลีกเลี่ยงอีเมลส่วนตัวสำหรับการร้องขอการสนับสนุนในช่องทางสังคมออนไลน์ของเรา
 * กรุณารอสักครู่เมื่อกำลังมองหาการป้อนข้อมูลและแสดงความคิดเห็น ในไออาร์ซี ไม่ต้องร้องขอที่จะถาม หรือเพียงแค่ถาม: คำถามส่วนใหญ่จะสามารถตอบโดยสมาชิกในชุมชนอื่น ๆ ด้วย หากคุณถามในช่องไออาร์ซี หากไม่มีใครตอบ กรุณาสอบถามเกี่ยวกับรายงานข้อผิดพลาดหรือหน้าวิกิที่เกี่ยวข้องกับปัญหาที่เกิดขึ้น อย่าเพียงแต่วางคำถามทิ้งไว้
 * เรียนรู้เพิ่มเติมที่
 * You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech

การติดต่อสื่อสารที่คุณทำงานเกี่ยวกับข้อผิดพลาด
คุณไม่จำเป็นต้องได้รับการกำหนดให้เป็นผู้รับโอนในรายงานข้อผิดพลาดหรือประกาศแผนการของคุณก่อนที่คุณจะเริ่มต้นทำงานกับข้อผิดพลาด แต่มันก็เป็นที่น่ายินดี ในช่วงล่าสุด เมื่อคุณอยู่ใกล้กับการสร้างแพตช์สำหรับข้อผิดพลาด มันเป็นสิ่งที่ดีที่จะประกาศในความคิดเห็นที่คุณกำลังทำงานอยู่ นอกจากนี้ การประกาศของคุณยังช่วยให้คนอื่นไม่ต้องทำงานเกี่ยวกับข้อผิดพลาดในเวลาเดียวกัน รวมถึงการทำงานที่ซ้ำกัน

นอกจากนี้ โปรดทราบว่า หากมีการรายงานข้อผิดพลาดแล้วมีลิงก์ก่อนหน้าสำหรับแพตช์ในเกอร์ริต และมีโครงการ "แพตช์สำหรับการทบทวน" (Patch-For-Review) ที่เกี่ยวข้อง คุณควรเลือกข้อผิดพลาดที่แตกต่างกันในการทำงานแทน - โดยหลีกเลี่ยงการทำงานซ้ำ หากแพตช์ในเกอร์ริตไม่ได้ทำการรวมกันและยังไม่เห็นการเปลี่ยนแปลงใด ๆ เป็นเวลานาน คุณยังสามารถรับแพตช์ที่มีอยู่และลองที่จะปรับปรุงมัน

หากคุณหยุดการทำงานในภารกิจ คุณควรจะนำตัวเองออกในฐานะผู้รับโอนรายงานข้อผิดพลาด และตั้งค่าผู้รับโอนไปเป็นผู้รับโอนที่ค่าเริ่มต้น เพื่อให้ผู้อื่นรู้ว่าพวกเขาสามารถทำงานในการรายงานข้อผิดพลาดและไม่ได้คาดหวังให้คุณยังคงทำงานกับมัน

โดยการสื่อสารในช่วงต้นคุณจะได้รับความเอาใจใส่, ข้อเสนอแนะ และความช่วยเหลือจากสมาชิกในชุมชนมากขึ้น 

การทำงานในส่วนขยาย
หากคุณเลือกที่จะทำงานในรหัสส่วนขยายมีเดียวิกิ ลิงก์ต่อไปนี้จะให้ข้อมูลเพิ่มเติม


 * มูลบทส่วนขยายมีเดียวิกิ:
 * การพัฒนาส่วนขยาย — วิธีการเขียนส่วนขยายสำหรับมีเดียวิกิ
 * การเขียนส่วนขยายสำหรับการใช้งาน — ถ้าคุณตั้งใจที่จะมีการขยายการใช้งานของคุณในเว็บไซต์วิกิมีเดีย (รวมทั้งอาจจะเป็นวิกิพีเดีย) การตรวจสอบข้อเท็จจริงเพิ่มเติมคือการรับประกันในแง่ของประสิทธิภาพและความปลอดภัย
 * สอนการเขียนส่วนขยาย


 * ทรัพยากรส่วนขยายมีเดียวิกิ:
 * Best practices for extensions
 * รายการของส่วนขยายสามัญ — วิธีง่าย ๆ ในการคุ้นเคยกับวิธีการทำงานของส่วนขยาย
 * คำแนะนำสั้น ๆ สำหรับการพัฒนาส่วนขยายมีเดียวิกิ — วิดีโอนำเสนอเกี่ยวกับวิธีการสร้างส่วนขยายมีเดียวิกิ (สไลด์)
 * การทำส่วนขยายมีเดียวิกิ — ครอบคลุมถึงวิธีการในการพัฒนาส่วนขยายสำหรับมีเดียวิกิ, การปฏิบัติที่ดีที่สุด และวิธีการที่จะมีส่วนร่วมในชุมชนมีเดีย ตั้งแต่เดือนกุมภาพันธ์ ค.ศ. 2011
 * แม่แบบหน้าพิเศษ — เพิ่มหน้าพิเศษเพื่อแสดงข้อมูลที่มีประโยชน์บางอย่าง
 * ขยายมาร์กอัปวิกิ — เพิ่มพาร์เซอร์ฮุกเพื่อแก้ไขเนื้อหาของข้อความวิกิ

PHP
มีเดียวิกิได้รับการเขียนในภาษาพีเอชพี ดังนั้นคุณจะต้องได้รับความคุ้นเคยกับภาษาพีเอชพี เพื่อที่จะแฮกแกนของมีเดียวิกิ


 * เรียนรู้ภาษาพีเอชพี
 * สอนการใช้ภาษาพีเอชพี — ใช้ประโยชน์ได้ในภาษาที่ต่างกัน หากคุณไม่ได้มีความรู้เกี่ยวกับภาษาพีเอชพีแต่รู้วิธีการเขียนโปรแกรมในจุดหมายภาษาโปรแกรมอื่น ๆ ภาษาพีเอชพีก็จะเป็นเรื่องง่ายสำหรับคุณที่จะเรียนรู้
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * ทรัพยากรภาษาพีเอชพี:
 * คู่มือภาษาพีเอชพี — ให้บริการในภาษาที่แตกต่างกัน
 * การประชุมการเข้ารหัสภาษาพีเอชพีภายในชุมชนมีเดียวิกิ


 * สิ่งที่ต้องรู้:
 * สคริปต์  ในมีเดียวิกิ ได้เอื้ออำนวยตัวแปลภาษาพีเอชพีพื้นฐาน กับอ็อบเจ็คมีเดียวิกิ และประเภทที่ทำการโหลด

ฐานข้อมูล
คุณสมบัติหลายอย่างจำเป็นต้องมีการจัดการฐานข้อมูลบางส่วน ดังนั้นคุณจึงต้องมีความคุ้นเคยกับมายเอสคิวแอล/มาเรียดีบี


 * เรียนรู้มายเอสคิวแอล/มาเรียดีบี
 * เกี่ยวกับการสอนมายเอสคิวแอล — จากคู่มืออ้างอิงมายเอสคิวแอล 5.0
 * MySQL at Wikibooks.


 * ทรัพยากรมายเอสคิวแอล/มาเรียดีบี
 * คู่มืออ้างอิงมายเอสคิวแอล — ใช้ประโยชน์ได้ในภาษาที่ต่างกัน
 * ฐานความรู้ของมาเรียดีบี
 * การประชุมการเข้ารหัสฐานข้อมูลภายในชุมชนมีเดียวิกิ


 * สิ่งที่ต้องรู้:
 * ทดสอบโค้ดของคุณกับมายเอสคิวแอล/มาเรียดีบี
 * มีเดียวิกิในปัจจุบันใช้มายเอสคิวแอลและมาเรียดีบี เป็นระบบจัดการเว็บไซต์ของฐานข้อมูลหลัก นอกจากนี้ยังสนับสนุนดีบีเอ็มเอสอื่น ๆ เช่น โพสต์เกรสคิวเอล และเอสคิวไลท์ อย่างไรก็ตาม นักพัฒนาเกือบทั้งหมดใช้มายเอสคิวแอล/มาเรียดีบี และไม่ทดสอบดีบีเอ็มเอสอื่น ๆ ซึ่งส่งผลทำลายอยู่เป็นประจำ คุณจึงควรใช้มายเอสคิวแอล/มาเรียดีบีเมื่อทำการทดสอบแพตช์ หากคุณกำลังพยายามที่จะปรับปรุงการสนับสนุนสำหรับฐานข้อมูลอื่นโดยเฉพาะ ในกรณีหลัง ให้แน่ใจว่าคุณระมัดระวังที่จะไม่ทำลายมายเอสคิวแอล/มาเรียดีบี (หรือเขียนคำสั่งที่มีความน่ากลัวที่ไม่มีประสิทธิภาพในนั้น) ตั้งแต่มายเอสคิวแอล/มาเรียดีบีเป็นสิ่งที่คนอื่นใช้

จาวาสคริปต์และซีเอสเอส
จาวาสคริปต์และซีเอสเอส ได้กลายเป็นรหัสส่วนหน้าเว็บไซต์ที่สามารถมองเห็นได้ในบราวเซอร์ที่มีอยู่ทั่วไปทุกหนทุกแห่ง คุณไม่ต้องคุ้นเคยกับจาวาสคริปต์, เจเควียรี และซีเอสเอสในการทำงานกับมีเดียวิกิ แต่คุณอาจต้อง โดยขึ้นอยู่กับสิ่งที่คุณจะเลือกทำงาน


 * เรียนรู้เกี่ยวกับจาวาสคริปต์และซีเอสเอส
 * JavaScript and CSS at Wikibooks.
 * เริ่มต้นกับเจเควียรี — เกี่ยวกับการสอนเจเควียรี


 * ทรัพยากรจาวาสคริปต์และซีเอสเอส
 * การประชุมการเข้ารหัสจาวาสคริปต์ภายในชุมชนมีเดียวิกิ
 * การประชุมการเข้ารหัสซีเอสเอสภายในชุมชนมีเดียวิกิ

MediaWiki
ฐานรหัสมีเดียวิกิมีขนาดใหญ่ และมีบางส่วนที่น่าเกลียด ไม่ควรต้องถูกครอบงำโดยสิ่งดังกล่าว เมื่อคุณเริ่มครั้งแรก, มีจุดมุ่งหมายที่จะเขียนคุณลักษณะ หรือการแก้ไขข้อบกพร่อง ซึ่งมีข้อจำกัดในอาณาบริเวณเล็ก ๆ ของรหัส


 * หนังสือมีเดียวิกิชั้นต้นและต้องอ่าน:
 * สถาปัตยกรรมมีเดียวิกิ — ภาพรวมระดับสูงขององค์ประกอบหลักมีเดียวิกิ และวิธีที่พวกเขาทำงานด้วยกัน
 *  — ภาพรวมของสาเหตุและวิธีการเขียนโค้ดที่เชื่อถือได้


 * ทรัพยากรมีเดียวิกิ:
 * — รายชื่อของไฟล์ที่สำคัญและเชื่อมโยงไปยังข้อมูลรายละเอียดเพิ่มเติม
 * — รายการของตะขอ หากคุณกำลังพยายามที่จะหาสิ่งที่เป็นส่วนหนึ่งของฐานรหัสทำอะไรบางอย่าง ก็มักจะเป็นตำแหน่งที่ดีที่จะเริ่มต้นด้วยการค้นหาตะขอที่เกี่ยวข้อง
 * — ภาพรวมของการประชุมการเข้ารหัสทั่วไปภายในชุมชนมีเดียวิกิ
 * — วิธีแฮกมีเดียวิกิ จากการตั้งค่าของผู้ใช้ในการขยายและส่วนกลาง
 * รหัสเอกสาร — สร้างเอกสารจากรหัส และแสดงความคิดเห็นรหัสโดยอัตโนมัติ
 * — คู่มือการแก้จุดบกพร่องมีเดียวิกิ
 * — เครื่องมือในการโต้ตอบกับอ็อบเจ็ค ของมีเดียวิกิแบบสด ๆ

ดูเพิ่ม

 * – เมื่อคุณได้อ่านข้อมูลอย่างละเอียดในบทความนี้ ก็ถึงเวลาที่จะไปสู่ข้อมูลในศูนย์กลางนักพัฒนา
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.
 * – เมื่อคุณได้อ่านข้อมูลอย่างละเอียดในบทความนี้ ก็ถึงเวลาที่จะไปสู่ข้อมูลในศูนย์กลางนักพัฒนา
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.