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.


 * Diskusi pengembangan dilakukan di berbagai milis dan saluran IRC. Daftar pengembang utama adalah wikitech-l. Saluran IRC pengembang utama adalah dan.
 * Kode sumber dikelola menggunakan sistem kendali revisi Git dan bisa dilihat di sini.
 * Peninjauan kode dilakukan di dan bisa dilihat di sini. Ikuti tutorial ini untuk mengatur Git dan Gerrit agar bisa mengajukan tambalan.
 * Laporan kutu dan tugas dikelola di dan bisa dilihat di sini.

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.

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 (Docker atau Vagrant), atau melakukan konfigurasi manual.

Lingkungan pengembangan Docker

 * MediaWiki Docker – Menjalankan MediaWiki menggunakan Docker (bisa digunakan di hos Linux, Windows atau macOS). This is the recommended method.

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

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).

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.

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.

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 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.
 * 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
 * — Panduan mengawakutu MediaWiki.
 * — Peralatan untuk berinteraksi dengan objek MediaWiki secara langsung.

Ekstensi MediaWiki
Jika Anda memutuskan untuk mengerjakan kode ekstensi MediaWiki, pranala berikut menyediakan informasi lebih lanjut.


 * Dasar ekstensi MediaWiki:
 * Mengembangkan ekstensi — Bagaimana cara menulis ekstensi untuk MediaWiki.
 * Tutorial menulis ekstensi


 * Sumber daya ekstensi MediaWiki:
 * Praktik terbaik untuk ekstensi
 * Pengenalan singkat pengembangan ekstensi MediaWiki — Sebuah presentasi video mengenai cara membuat sebuah ekstensi MediaWiki (salindia).
 * Membuat sebuah ekstensi MediaWiki — Membahas mengenai cara mengembangkan sebuah ekstensi untuk MediaWiki, praktik terbaik, dan bagaimana cara mengikutsertakan komunitas MediaWiki. Dari Februari 2011.
 * Bantuan untuk pengembang ekstensi di Pusat Pengembang

Lihat pula

 * Cari kode di seluruh repositori
 * – Ketika Anda telah membaca seluruh informasi di artikel ini, waktunya Anda pindah ke informasi di pusat pengembang.