How to become a MediaWiki hacker/it


 * ''Per altri modi per partecipare alla comunità di MediaWiki, vedi come contribuire.

Questa pagina intende aiutare gli sviluppatori nuovi ad apprendere quanto necessario per contribuire allo sviluppo di MediaWiki.

Se sei uno sviluppatore esperto, visita invece il developer hub.

Panoramica
MediaWiki è il software che fa girare Wikipedia, i suoi progetti fratelli e migliaia di wiki in tutto il mondo. Gira sulla maggior parte dei sistemi operativi, è scritto in PHP, usa primariamente il server di database MySQL e usa jQuery come libreria client di Javascript. Lo sviluppo di MediaWiki è sostenuto principalmente dalla Wikimedia Foundation, anche se la comunità degli sviluppatori volontari gioca un ruolo importantissimo.

Questa pagina dovrebbe aiutarti a muovere i tuoi primi passi nella partecipazione allo sviluppo del MediaWiki. Non è un tutorial; si limita ad indirizzarti a diversi luoghi in cui puoi apprendere ciò che ti occorre sapere.

PHP
MediaWiki è scritto in PHP, perciò devi avere un po' di familiarità con il PHP per entrare nel vivo di MediaWiki.


 * Studia il PHP
 * tutorial PHP — Disponibile in molte lingue. Se non conosci affatto il PHP, ma sai programmare in altri linguaggi object-oriented, apprendere il PHP non ti sarà difficile.
 * Programmazione in PHP su Wikibooks.
 * Argomento PHP su Wikiversity.


 * Risorse PHP:
 * Il manuale di PHP — Disponibile in molte lingue.
 * Convenzioni di PHP coding nella comunità di MediaWiki.


 * Cose da sapere:
 * Lo script maintenance/eval.php in MediaWiki fornisce un interprete PHP di base con gli oggetti e le classi MediaWiki caricate.

Database
Molte funzioni richiedono un po' di manipolazione del database, spesso ti verrà comoda una certa familiarità con il MySQL.


 * Impara il MySQL:
 * tutorial MySQL — Dal manuale MySQL 5.0.
 * MySQL su Wikibooks.


 * Risorse MySQL:
 * MySQL Reference Manuals — Disponibile in molte lingue.
 * Convenzioni di coding sul database nella comunità MediaWiki.


 * Cose da sapere:
 * Prova il tuo codice con MySQL.
 * MediaWiki attualmente usa MySQL (e compatibili) come back-end primario del database. Supporta altri DBMS, come PostgreSQL e SQLite. Ad ogni modo, quasi tutti gli sviluppatori (developers, o dev) usano MySQL e non testano con altri DB, che conseguentemente ogni tanto si scassano con regolarità. Ti consigliamo dunque di usare MySQL quando testi delle patch, a meno che tu non stia specificamente lavorando a migliorare il supporto per un altro DB. In quest'ultimo caso, fai bene attenzione a non arrecare danni a MySQL (e non scrivere query che sono terribilmente inefficienti su di esso), perché MySQL è ciò che tutti gli altri usano.

JavaScript e CSS
JavaScript e CSS sono diventati onnipresenti nel codice front-end. Non devi avere familiarità con JavaScript, jQuery e CSS per lavorare su MediaWiki, ma potresti averne bisogno, a seconda di ciò su cui tu scegli di lavorare.


 * Impara JavaScript e CSS
 * JavaScript e CSS su Wikibooks.
 * Iniziare con jQuery — Un tutorial jQuery.


 * Risorse per JavaScript e CSS
 * convenzioni di coding per JavaScript nella comunità MediaWiki.
 * convenzioni di coding per CSS nella comunità MediaWiki.

MediaWiki
Il codice di MediaWiki è molto molto vasto e alcune sue porzioni sono proprio brutte; non farti scoraggiare. All'inizio, concentrati a scrivere funzioni o correggere bug che riguardano solo una piccola regione del sorgente.


 * I fondamentali di MediaWiki e le cose che vanno lette:
 * Architettura del MediaWiki — Panoramica di alto livello sui principali componenti di MediaWiki e sulla loro interazione.
 * La sicurezza per i dev — Panoramica su come scrivere codice sicuro.


 * Risorse per MediaWiki:
 * Manual:Code — Una lista di file importanti e link verso informazioni più dettagliate.
 * Convenzioni di coding — An overview of general coding conventions within the MediaWiki community.
 * Intro-to-MediaWiki workshop syllabus — Ways to hack MediaWiki, from user preferences to extensions and core.
 * Code documentation — Automatically generated documentation from the code and code comments.
 * How to debug — A guide to debugging MediaWiki.
 * eval.php — A tool to interact with MediaWiki objects live.

Imposta il tuo ambiente di sviluppo
Ci sono due modi per impostare il tuo ambiente di sviluppo: usando il setup per una macchina virtuale pre-configurata (vagrant), o manuale. La scelta della vagrant è molto più veloce e facile, ed è il metodo preferito.

Macchina virtuale con Vagrant

 * Installazione di Vagrant — Verrà installato un server MediaWikicon tutti i requisiti in una macchina virtuale Linux (fattibile su host Linux, Windows o Mac)

Installazione manuale

 * Requisiti di installazione — Controlla i requisiti hardware e installa un server LAMP, MAMP or WAMP (Linux, Mac o Windows), più Apache, MySQL e PHP.
 * Scarica da Git — Download the latest source code from Git.
 * Guida all'installazione — Continue with the installation and initial configuration
 * Imposta le modalità di debug nel tuo ambiente per avvisi di errore efficienti.

Non serve scaricarsi i dump dei database di Wikipedia per lavorare su MediaWiki. Spesso, anzi, è meglio usare un database quasi vuoto con un po' di pagine appositamente scritte per la sperimentazione. Se poi una copia di Wikipedia la vuoi lo stesso perché è sempre il miglior prodotto editoriale del mondo, puoi prelevarne un dump qui.

Iniziamo
The two main paths to get started with MediaWiki development are to fix an annoying little bug in the existing code, or to add a new feature, usually through a MediaWiki extension. In most cases when working with MediaWiki, you do not want to hack MediaWiki core unless you really know what you're doing.


 * MediaWiki extensions primers:
 * Sviluppare estensioni — Come scrivere un'estensione per 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.
 * tutorial sulla scrittura di estensioni


 * Risorse sulle estensioni di MediaWiki:
 * Lista di estensioni semplici — Un modo semplice per capire come funziona un'estensione.
 * 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.

Submit your changes
MediaWiki projects are hosted in Git repositories and code contributions are done through the Gerrit review tool. Check the short Getting started guide or the more explanatory Tutorial to learn how to work with Git for MediaWiki development.

We used to accept patches attached to Bugzilla reports but such practice is currently discouraged.

Follow these steps:


 * 1) Get developer access if you do not already have it.
 * 2) Make your change in a branch in Git.
 * 3) Check your code against the pre-commit checklist. Don't skip this step ; you'll be happy you didn't.
 * 4) Commit your change and upload it to Gerrit.
 * 5) * Include the number of any bug report your change addresses in the commit message footer.
 * 6) * A link to your change will be automatically added to the bug report, which will be set to PATCH_TO_REVIEW status.
 * 7) Ask for your code to be reviewed, watch for email updates, and make requested changes.

Discuss and get help
MediaWiki has a very friendly, large and diverse community. There are multiple places to get help. If you already have an idea for a feature you want to implement, it's also a good idea to talk to a senior developer before you start, especially if you're not sure how your feature will affect other parts of the code.


 * IRC — Specifically, the channel. The MediaWiki developer community is distributed around the world, and there most likely is someone awake, no matter what your timezone is. Hop in and start talking.
 * Mailing Lists — Since you are looking to be a developer, wikitech-l is where you should be at. You can also browse through the archives to get a feel of how the community operates.