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. Akan tetapi, hampir semua pengembang menggunakan MySQL/MariaDB dan tidak menguji DB lainnya sehingga basis data lain kerap mengalami galat. Anda disarankan menggunakan MySQL/MariaDB ketika menguji tambalan, kecuali Anda memang mencoba memperbaiki dukungan untuk DB lainnya. Kalau begitu, berhati-hatilah agar Anda tidak membuat MySQL/MariaDB galat (atau menulis kueri yang tidak efisien dalam mereka), karena MySQL/MariaDB adalah yang digunakan semua orang.

JavaScript dan CSS
JavaScript dan CSS ada di mana-mana di kode bagian depan. Anda tidak harus mengenal JavaScript, jQuery dan CSS untuk mengerjakan MediaWiki, tetapi Anda mungkin perlu, bergantung pada apa yang Anda kerjakan.


 * Belajar JavaScript dan CSS
 * JavaScript and CSS at Wikibooks.
 * Memulai dengan jQuery — Tutorial jQuery.
 * Learning JavaScript — references and sources.


 * Sumber daya JavaScript dan CSS
 * Konvensi pengodean JavaScript di dalam komunitas MediaWiki.
 * Konvensi pengodean CSS di dalam komunitas MediaWiki.

MediaWiki
Basis kode MediaWiki besar dan beberapa bagiannya tidak cantik; jangan terbebani oleh itu. Ketika Anda memulai, bertujuanlah menulis fitur atau memperbaiki kutu yang hanya menyentuk wilayah kode yang kecil.


 * Dasar dan bacaan wajib MediaWiki:
 *  — Gambaran umum tingkat tinggi dari komponen utama MediaWiki dan bagaimana mereka bekerja dengan satu sama lain.
 *  — Gambaran umum mengapa dan bagaimana cara menulis kode yang aman.


 * Sumber daya MediaWiki:
 * — Daftar berkas yang penting dan pranala ke informasi yang lebih rinci.
 * — Daftar hook. Jika Anda mencoba menemukan bagian basis kode yang mana yang melakukan sesuatu, biasanya tempat yang bagus untuk memulai adalah dengan mencari hook yang terkait.
 * — Gambaran umum dari konvensi pengodean di dalam komunitas MediaWiki.


 * Dokumentasi kode (referensi kelas) — Dokumentasi yang dihasilkan secara otomatis dari kode dan komentar kode
 * — 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