How to become a MediaWiki hacker/th

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


 * มูลบทส่วนขยายมีเดียวิกิ:
 * Developing extensions — How to write an extension for MediaWiki.
 * Writing an extension for deployment — If you intend to have your extension deployed on Wikimedia sites (including possibly Wikipedia), additional scrutiny is warranted in terms of performance and security.
 * Extension writing tutorial


 * MediaWiki extensions resources:
 * List of simple extensions — A simple way to become more familiar with how extensions work.
 * A brief introduction to MediaWiki extension development — A video presentation about how to create a MediaWiki extension (slides).
 * Making a MediaWiki extension — Covers how to develop an extension for Mediawiki, best practices, and how to engage the Mediawiki community. From February 2011.
 * Special page template — Add a special page to display some handy information.
 * Extending wiki markup — Add a parser hook to modify the content of wikitext.

PHP
MediaWiki is written in PHP, so you'll need to get familiar with PHP to hack MediaWiki's core.


 * Learn PHP
 * PHP tutorial — Available in many different languages. If you have no knowledge of PHP but know how to program in other object-oriented programming languages, PHP will be easy for you to learn.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * PHP resources:
 * The PHP manual — Available in many different languages.
 * PHP coding conventions within the MediaWiki community.


 * Stuff to know:
 * The script  in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.

Database
Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB.


 * Learn MySQL/MariaDB
 * MySQL tutorial — From the MySQL 5.0 reference manual.
 * MySQL at Wikibooks.


 * MySQL/MariaDB resources
 * MySQL Reference Manuals — Available in many different languages.
 * MariaDB Knowledge Base
 * Database coding conventions within the MediaWiki community.


 * Stuff to know:
 * Test your code with MySQL/MariaDB.
 * MediaWiki currently uses MySQL and MariaDB as the primary database back-end. It also supports other DBMSes, such as PostgreSQL and SQLite. However, almost all developers use MySQL/MariaDB and don't test other DBs, which consequently break on a regular basis. You're therefore advised to use MySQL/MariaDB when testing patches, unless you're specifically trying to improve support for another DB. In the latter case, make sure you're careful not to break MySQL/MariaDB (or write queries that are horribly inefficient in it), since MySQL/MariaDB is what everybody else uses.

JavaScript and CSS
JavaScript and CSS have become omnipresent in front-end code. You don't have to be familiar with JavaScript, jQuery and CSS to work on MediaWiki, but you might need to, depending on what you choose to work on.


 * Learn JavaScript and CSS
 * JavaScript and CSS at Wikibooks.
 * Getting Started with jQuery — A jQuery tutorial.


 * JavaScript and CSS resources
 * JavaScript coding conventions within the MediaWiki community.
 * CSS coding conventions within the MediaWiki community.

MediaWiki
The MediaWiki code base is large and some parts are ugly; don't be overwhelmed by it. When you're first starting off, aim to write features or fix bugs which are constrained to a small region of code.


 * MediaWiki primers and must-reads:
 * MediaWiki architecture — A high-level overview of the main components of MediaWiki and how they work with each other.
 *  — An overview of why and how to write secure code.


 * MediaWiki resources:
 * — A list of important files and links to more detailed information.
 * — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.
 * — An overview of general coding conventions within the MediaWiki community.
 * — Ways to hack MediaWiki, from user preferences to extensions and core.
 * Code documentation — Automatically generated documentation from the code and code comments.
 * — A guide to debugging MediaWiki.
 * — A tool to interact with MediaWiki objects live.

ดูเพิ่ม

 * – When you've thoroughly read the information in this article, it's time to move on to the information in the developer hub.
 * 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.