How to become a MediaWiki hacker/th

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

เส้นทางหลักในการเริ่มต้นใช้งานกับการพัฒนาวิกิมีเดียคือการร่วมกับโครงการวิกิมีเดียที่ให้คำปรึกษา ทางเลือกหนึ่งที่ไม่มีการให้คำปรึกษาคือการแก้ไขบั๊กเล็กน้อยที่น่ารำคาญ

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

สำหรับวิธีการอื่น ๆ ที่จะได้มีส่วนร่วมในชุมชนวิกิมีเดีย ดู 

ภาพรวม
มีเดียวิกิเป็นซอฟต์แวร์ที่ทรงอานุภาพของวิกิพีเดีย, โครงการพี่น้อง และวิกินับพันทั่วโลก

มีเดียวิกิได้รับการเขียนขึ้นในภาษาโปรแกรมพีเอชพี ใช้เจเควียรีเป็นไลบรารีของจาวาสคริปต์

มีเดียวิกิเขียนขึ้นเป็นหลักสำหรับแลมป์ และทำงานในระบบปฏิบัติการส่วนใหญ่ มีเดียวิกิใช้เซิร์ฟเวอร์ฐานข้อมูลมายเอสคิวเอล และมาเรียดีบีเป็นหลัก

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


 * อภิปรายการพัฒนา เกิดขึ้นในหลายรายชื่อผู้รับจดหมาย และช่องไออาร์ซี รายการผู้พัฒนาหลักคือ วิกิเทค-แอล ช่องนักพัฒนาซอฟต์แวร์หลักของไออาร์ซี คือ #mediawiki และ #wikimedia-dev
 * ซอร์สโค้ด มีการจัดการโดยใช้ระบบควบคุมการแก้ไขกิต
 * รีวิวโค้ด จะดำเนินการใน ทำตามบทแนะนำนี้เพื่อตั้งค่ากิตและเกอร์ริต เพื่อที่จะส่งแพตช์
 * รายงานบั๊กและงานได้รับการจัดการในฟาบริเคเตอร์

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

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

สภาพแวดล้อมการพัฒนาดอกเกอร์

 * เดฟดอกเกอร์มีเดียวิกิ - เรียกใช้มีเดียวิกิโดยใช้ดอกเกอร์ (สามารถใช้ได้กับโฮสต์ลินุกซ์, วินโดว์ส หรือแมคโอเอส) This is the recommended method.

You can also try the exprimental mwcli tool which provides basic orchestration functionality for MediaWiki docker containers.

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

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

Vagrant is a powerful tool, but it is more complex and less robust than Docker, and significantly more resource-intensive. It is mainly aimed at developers who need to set up complex, flexible environments, e.g. for testing the interaction of multiple extensions.

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

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

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

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


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


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


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

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


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


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


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

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


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


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

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


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


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


 * รหัสเอกสาร ( class reference ) — สร้างเอกสารจากรหัส และแสดงความคิดเห็นรหัสโดยอัตโนมัติ
 * — คู่มือการแก้จุดบกพร่องมีเดียวิกิ
 * — เครื่องมือในการโต้ตอบกับอ็อบเจ็ค ของมีเดียวิกิแบบสด ๆ

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


 * ข้อมูลพื้นฐานเกี่ยวกับส่วนขยายมีเดียวิกิ:
 * การพัฒนาส่วนขยาย — วิธีการเขียนส่วนขยายสำหรับมีเดียวิกิ
 * สอนการเขียนส่วนขยาย


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

ดูเพิ่ม

 * Search for code across repositories
 * – เมื่อคุณได้อ่านข้อมูลอย่างละเอียดในบทความนี้ ก็ถึงเวลาที่จะไปสู่ข้อมูลในศูนย์กลางนักพัฒนา