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.

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.

Kebanyakan isi dan ekstensi MediaWiki ditulis dengan bahasa pemograman PHP. JavaScript digunakan untuk menyediakan elemen-elemen antarmuka inteaktif dengan jQuery dan Vue.js sebagai pustaka JavaScript klien.

Beberapa alat dukungan ditulis dalam bahasa lain, termasuk berkas tumpak, skrip shell, makefile dan Python.

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, , dan saluran IRC. Daftar pengembang utama adalah wikitech-l. Saluran IRC pengembang utama adalah dan.
 * Kode sumber disimpan di dan 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 permohonan fitur diisi dan proyek dikoordinasikan di dan bisa dilihat di sini.

Find or create a task
Before you ever develop a feature or fix a bug in a MediaWiki project, it is important that you do your research about it. This includes:


 * 1) Search Phabricator if an open or closed Task (Document Types field) already exists. If it doesn't, create one. If this is a very small change, don't create one.
 * 2) Find and investigate the code that needs to be changed to implement the feature. Comment your findings on the Phabricator Task if they might be helpful to others who implement it or review your changes.
 * 3) Determine if you can likely add the feature or fix the bug based the code you investigated and the changes needed. If the task is large or complex, you should find something easier and work your way up to eventually be able to handle tasks of that size. If you believe you can complete it, assign yourself to the Task and begin working on it.



Mengatur lingkungan pengembangan Anda
Once you have found something you can work on, the next step to developing MediaWiki or an extension is creating an environment to run MediaWiki, its database, and any other external features so that you can develop and test them.

You can install and develop MediaWiki on Linux, Windows, or macOS using any of the three solutions below.

Docker

 * MediaWiki Docker – Menjalankan MediaWiki menggunakan Docker.

Docker adalah pilihan yang bagus jika Anda ingin menyetel instalasai MediaWiki dengan cepat dan tidak berencana menginstal banyak ekstensi.

Anda juga bisa mencoba mwcli yang menyetel Docker dengan sedikit perintah sederhana dan menyediakan fungsionalitas dasar untuk memadukan MediaWiki, MySQL, ElasticSearch, Memcached, dan tipe-tipe kontainer lain.

Vagrant

 * MediaWiki Vagrant – Menjalankan MediaWiki di mesin virtual Linux menggunakan Vagrant.

Vagrant allows you start a MediaWiki instance you can develop as well as allowing you to add and develop any of 250+ extensions - all with a single command.

This saves you installation and configuration time compared to manually adding extensions in a Docker or local installation, but it runs a bit slower than the other two options.



Instalasi lokal
MediaWiki bisa dikembangkan dengan menginstalnya beserta dependensinya secara lokal di sistem Anda.

Memasang dengan cara ini butuh lebih banyak waktu daripada dengan Docker atau Vagrant.


 * 1)  — Periksa kebutuhan perangkat keras dan instal dependensi
 * 2)  — Unduh kode sumber terbaru dari Git.
 * 3)  — Lanjutkan pemasangan dan konfigurasi awal.
 * 4) Atur berbagai mode awakutu di lingkungan Anda untuk menampilkan peringatan dan galat sejak awal.

Open a code editor
The two recommended code editors for editing MediaWiki are VSCode and PhpStorm. VSCode is free and PhpStorm is paid, however, you can acquire a PhpStorm license for free if you are a student by linking your GitHub Education account to your JetBrains account, or by requesting a license granted to Wikimedia.

To determine which editor you should install and use, know that all-around, PhpStorm has more and more-powerful features than VSCode. However, PhpStorm takes significantly longer to load on start than VSCode as it builds an index of the entire repository whereas VSCode progressively loads. Therefore, VSCode is typically useful for file-viewing sessions or small changes and PhpStorm for larger changes. It makes sense to have both installed for these reasons.

To develop the MediaWiki codebase that is inside a Docker container you can establish a remote connection to it and open the MediaWiki folder inside it using VSCode or PhpStorm.

Change and test the code
Change the code and view your changes by reloading your MediaWiki browser tab. Make sure to follow. Write and run tests on your code to make sure it works and is formatted properly.

Note, you can save time by ensuring your changes will be accepted before taking the time to write tests. Create a patch without needed tests and ask for someone to review it stating that you will add tests after they review it.

Create a patch
Finally, to submit your code to be reviewed and added to the repository you are contributing to, follow.



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 di Wikibooks.
 * PHP di 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

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 di 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 dan CSS di Wikibooks.
 * Memulai dengan jQuery — Tutorial jQuery.
 * Belajar JavaScript — rujukan dan sumber.


 * 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 mengawasi 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



Kulit MediaWiki
bisa membantu jika Anda ingin mengerjakan kulit MediaWiki.



Lihat pula

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