How to become a MediaWiki hacker/id

Artikel ini ditulis untuk membantu para pengembang belajar keterampilan dasar untuk berkontribusi dalam pengembangan inti MediaWiki dan ekstensi MediaWiki. Perhatikan bahwa dalam kebanyakan kasus ketika mengerjakan MediaWiki, Anda jangan meretas inti MediaWiki kecuali Anda tahu apa yang Anda lakukan.

Jalur utama untuk mulai mengikuti pengembangan Wikimedia adalah berkontibusi ke proyek Wikimedia yang menawarkan pendampingan. Cara alternatif tanpa pendampingan adalah dengan memperbaiki sebuah kutu pertama yang baik.

Jika Anda merupakan seorang pengembang berpengalaman yang sudah mengenal MediaWiki, kunjungi .

Untuk langkah lain untuk bergabung dengan komunitas Wikimedia, lihat .

Gambaran umum
MediaWiki adalah perangkat lunak yang menenagai Wikipedia, proyek saudaranya dan ribuan wiki di dunia.

MediaWiki ditulis dengan bahasa pemograman PHP. MediaWiki menggunakan jQuery sebagai pustaka JavaScript klien.

MediaWiki ditulis utamanya untuk platform LAMP dan dijalankan di kebanyakan sistem operasi. MediaWiki pada umumnya menggunakan peladen basis data MySQL atau MariaDB.

Pengembangan dilakukan dalam gaya sumber terbuka, dikoordinasikan secara daring, dan didukung oleh Yayasan Wikimedia, tetapi komunitas sukarelawan memainkan peran penting juga.

Halaman ini seharusnya membantu Anda menjadi seorang kontributor MediaWiki. Halaman ini bukanlah sebuah tutorial; ini hanya mengarahkan Anda ke berbagai tempat di mana Anda bisa mempelajari semua yang dibutuhkan.
 * Diskusi pengembangan dilakukan di berbagai milis dan saluran IRC. Daftar pengembang utama adalah wikitech-l. Saluran IRC pengembang utama adalah #mediawiki dan #wikimedia-dev.
 * Kode sumber dikelola menggunakan sistem kendali revisi Git.
 * Peninjauan kode dilakukan di . Ikuti tutorial ini untuk mengatur Git dan Gerrit agar bisa mengajukan tambalan.
 * Laporan kutu dan tugas dikelola di Phabricator.

Mengatur lingkungan pengembangan Anda
Kebanyakan proyek menggunakan Git dan Gerrit. Ikuti tutorial Gerrit untuk mengatur akun pengembang Anda. Kemudian Anda bisa mulai mengunduh kode kami, melakukan pengubahan, dan mengajukan tambalan. Ada dua cara untuk mengatur lingkungan pengembangan Anda: menggunakan mesin virtual yang sudah dikonfigurasi (Vagrant atau Docker), atau melakukan konfigurasi manual.

Mesin Virtual dengan Vagrant

 * Pemasangan Vagrant — Langkah-langkah ini akan memasang peladen MediaWiki dengan semua kebutuhannya di dalam sebuah mesin virtual Linux (bisa digunakan di hos Linux, Windows, atau Mac).

Lingkungan pengembangan Docker

 * MediaWiki Docker – Menjalankan MediaWiki menggunakan Docker (bisa digunakan di hos Linux, Windows atau macOS).

Instalasi manual

 * Persyaratan instalasi — Periksa persyaratan perangkat keras, dan pasanglah sebuah peladen LAMP, MAMP atau WAMP (Linux, Mac atau Windows, plus Apache, MySQL/MariaDB dan PHP).


 * — Unduh kode sumber terbaru dari Git.
 * — Lanjutkan pemasangan dan konfigurasi awal.
 * Atur berbagai mode awakutu di lingkungan Anda untuk menampilkan peringatan dan galat sejak awal.

Tidak perlu mengunduh dump basis data Wikipedia untuk mengembangkan fitur MediaWiki. Bahkan, dalam banyak kasus lebih mudah menggunakan basis data yang hampir kosong dengan beberapa halaman uji coba yang dibuat khusus. Akan tetapi, jika untuk suatu alasan Anda menginginkan salinan Wikipedia, Anda bisa mendapatkan dump-nya.

Bacaan lebih lanjut


Umpan balik, pertanyaan dan dukungan

 * Anda diharapkan telah melakukan penelitian dasar sendiri terlebih dahulu: Perhatikan kodenya, coba pahami apa yang seharusnya kode itu lakukan, baca dokumentasi yang terkait, coba cari tempat yang kemungkinan Anda perlu ubah untuk memperbaiki kutunya.
 * Jika Anda punya pertanyaan umum yang tidak berkaitan dengan tugas tertentu yang ingin Anda kerjakan, gunakan saluran generik seperti obrolan IRC atau milis bukan di tugas tertentu.
 * Jika Anda punya pertanyaan spesifik mengenai kutu itu sendiri, berikan komentar di laporan kutu yang sesuai (biasanya sebuah tugas di ). "Apa kalian bisa memberitahuku cara memperbaiki kutu ini?" bukanlah pertanyaan yang bagus untuk memulainya: Semakin spesifik pertanyaan Anda, semakin mungkin seseorang segera menjawabnya. Jika Anda sama sekali tidak tahu cara memperbaiki kutunya, mungkin kutu itu bukan (belum) untuk Anda – tolong pertimbangkan untuk mencari yang lebih mudah dulu.
 * Ketika bertanya, jelaskan apa yang Anda telah coba dan temukan, agar orang lain bisa membantu di tingkat yang tepat. Spesifiklah – sebagai contoh, salin dan tempel perintah Anda dan keluarannya (jika tidak terlalu panjang) bukannya menjelaskan dengan kata-kata Anda sendiri. Ini menghindari kesalahpahaman.
 * Jangan bertanya jika Anda dapat mengerjakan tugasnya.
 * Hindari surel pribadi atau permohonan dukungan di saluran media sosial kami.
 * Bersabarlah ketika meminta masukan dan komentar. Di IRC, jangan meminta untuk bertanya, bertanyalah: kebanyakan pertanyaan bisa dijawab oleh anggota komunitas lainnya apabila Anda bertanya di sebuah saluran IRC. Jika tidak ada yang menjawab, tolong tanyakan di laporan kutu atau halaman wiki yang terkait dengan masalahnya; jangan menyerah begitu saja.

Komunikasikan bahwa Anda mengerjakan suatu tugas
Jangan bertanya apakah Anda bisa mengerjakan suatu tugas. Anda tidak perlu mengumumkan rencana Anda sebelum Anda mulai berusaha memperbaiki sebuah kutu, tetapi itu akan diterima. Anda dibolehkan menetapkan diri Anda sebagai penerima suatu tugas: Gunakan dropdown Add Action… → Assign/Claim di Phabricator. Paling akhir ketika Anda akan mengusulkan sebuah tambalan untuk tugasnya, sebaiknya umumkan di komentar bahwa Anda sedang mengerjakannya. Pengumuman Anda membantu orang lain agar tidak mengerjakan kutu tersebut pada waktu yang sama dan agar tidak menggandakan pekerjaan.

Juga perhatikan bahwa apabila sebuah tugas sudah punya pranala baru ke sebuah tambalan di Gerrit dan memiliki "Patch-For-Review" proyek yang terkait di Phabricator, pilihlah tugas lain untuk dikerjakan – hindari penggandaan pekerjaan. Jika suatu tambalan yang ada di Gerrit belum digabungkan dan belum dibuah untuk waktu yang lama, Anda juga bisa mengambil tambalan tersebut dan memperbaikinya, berdasarkan umpan balik di Gerrit dan di tugas itu.

Jika Anda berhenti mengerjakan suatu tugas, copot diri Anda sebagai penerima tugas tersebut, agar orang lain tahu bahwa mereka bisa mengerjakan tugas itu dan tidak berpikir Anda masing mengerjakannya.

Dengan mengomunikasikannya sejak awal Anda akan mendapatkan lebih banyak perhatian, umpan balik dan bantuan dari anggota komunitas. 

PHP
MediaWiki ditulis dalam bahasa PHP, jadi Anda perlu mengenali PHP sebelum meretas inti MediaWiki.


 * Belajar PHP
 * Tutorial PHP — Tersedia dalam berbagai bahasa. Jika Anda tidak tahu apa-apa tentang PHP tetapi tahu cara memprogram dalam bahasa pemrograman berorientasi objek lainnya, PHP akan mudah untuk dipelajari.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * Sumber daya PHP:
 * Manual PHP — Tersedia dalam berbagai bahasa.
 * Konvensi pengodean PHP di dalam komunitas MediaWiki.


 * Hal-hal yang perlu diketahui:
 * Skrip  di MediaWiki menyediakan sebuah interpreter PHP dasar dengan objek dan kelas MediaWiki sudah dimuat.
 * Juga, skrip  di MediaWiki adalah pengganti   berdasarkan PsySH, lihat Manual:Shell.php.

Basis data
Kebanyakan fitur memerlukan manipulasi basis data, jadi Anda sering kali perlu mengenali MySQL/MariaDB.


 * Belajar MySQL/MariaDB
 * Tutorial MySQL — Dari manual referensi MySQL 5.0.
 * MySQL at Wikibooks.


 * Sumber daya MySQL/MariaDB
 * Manual Referensi MySQL — Tersedia dalam berbagai bahasa.
 * Basis Pengetahuan MariaDB
 * Konvensi pengodean basis data di dalam komunitas MediaWiki.


 * Hal-hal yang perlu diketahui:
 * Uji coba kode Anda dengan MySQL/MariaDB.
 * MediaWiki sekarang sedang menggunakan MySQL dan MariaDB sebagai basis data bagian belakang utama. MediaWiki juga mendukugn DBMS lainnya, seperti PostgreSQL dan 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.
 * Learning JavaScript — references and sources.


 * 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 only touch a small region of code.


 * MediaWiki basics and must-reads:
 *  — 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.


 * Dokumentasi kode (class reference) — Automatically generated documentation from the code and code comments.
 * — A guide to debugging MediaWiki.
 * — A tool to interact with MediaWiki objects live.

MediaWiki extensions
If you choose to work on MediaWiki extensions code, the following links provide more information.


 * MediaWiki extensions basics:
 * Developing extensions — How to write an extension for MediaWiki.
 * Extension writing tutorial


 * MediaWiki extensions resources:
 * Best practices for extensions
 * 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.
 * Help for extension developers on the Developer Hub

Lihat pula

 * Search for code across repositories
 * – When you've thoroughly read the information in this article, it's time to move on to the information in the developer hub.
 * – a collection of related pages