Come diventare un hacker di MediaWiki

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page How to become a MediaWiki hacker and the translation is 8% complete.

Outdated translations are marked like this.
Other languages:
العربية • ‎български • ‎dansk • ‎Deutsch • ‎Ελληνικά • ‎English • ‎español • ‎فارسی • ‎français • ‎magyar • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎occitan • ‎ਪੰਜਾਬੀ • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎српски / srpski • ‎svenska • ‎ไทย • ‎Türkçe • ‎Tiếng Việt • ‎中文
Questo articolo è scritto per aiutare gli sviluppatori apprendisti per acquisire le abilità necessarie a contribuire allo sviluppo di MediaWiki .

Se sei uno sviluppatore avanzato, visita l'Hub degli SviluppatoriDeveloper hub invece.

Panoramica[edit]

MediaWiki è il software che permette di lavorare su Wikipedia, suo progetto sorella, e su migliaia di pagine contenenti il codice sorgente MediaWiki in tutto il mondo. MediaWiki funziona sulla maggior parte dei sistemi operativi, è scritto in PHP e utilizza soprattutto i server di database MySQL, MariaDB e jQuery come client della libreria di JavaScript. Lo sviluppo di MediaWiki è principalmente supportato dalla Fondazione Wikimedia, comunque sviluppatori volontari della community svolgono un enorme ruolo.

Questa pagina ti aiuterà a iniziare il cammino per diventare un collaboratore di MediaWiki. It is not a tutorial; it just points you to various places where you can go learn whatever is necessary.

Per incominciare[edit]

Most projects use Git and Gerrit. Start by registering for Developer accessDeveloper access and reading the Gerrit tutorial. Then you can move on to downloading our code, making changes, testing them, and submitting patches. There are two ways to set up your development environment: using a pre-configured virtual machine setup (vagrant), or manual.

Virtual Machine with Vagrant[edit]

  • Vagrant installation - These steps will install MediaWiki server with all the requirements inside a Linux virtual machine (can be used on Linux, Windows, or Mac hosts)

Manuale di installazione[edit]

It's not necessary to download Wikipedia database dumps in order to develop MediaWiki features. In fact, in many cases it's easier to use a near-empty database with a few specially-crafted test pages. However, if for some reason you want to have a copy of Wikipedia, you can get a dump.

Suggested reading[edit]

General recommendations[edit]

If you choose to work on a bug report that requires writing or changing code:

Watch as a developer fixes a bug, including investigation, git commit, getting it reviewed and merged, and closing the Bugzilla ticket (now replaced by PhabricatorPhabricator).


Feedback, questions and support[edit]

  • You are expected to do some basic research yourself first: Look at the code, try to get some understanding what it is supposed to do, read related documentation, try to find the probable place(s) where you need to make changes in order to fix the bug.
  • If you have general questions about infrastructure, the software architecture or workflows which are not tied to the specific bug that you want to work on, use generic channels like IRCIRC, mailing lists, or wiki discussion pages. For example, if you have a problem with Gerrit, the Gerrit discussion page could be a good place to ask.
  • If you have a specific question about the bug itself, comment in the corresponding bug report (normally a task in PhabricatorPhabricator). "What do I have to do to fix this bug?" is not a good question to start with: The more specific your questions are, the more likely somebody can answer them quickly. If you have no idea at all how to fix the bug, maybe that bug is not (yet) for you - please consider finding an easier one first.
  • When asking, elaborate what you have tried and found out already, so others can help at the right level. Try to be specific - for example, copy and paste your commands and their output (if not too long) instead of paraphrasing in your own words. This avoids misunderstandings.
  • Avoid private email or support requests in our social media channels.
  • Please be patient when seeking input and comments. On IRC, don't ask to ask, just ask: most questions can be answered by other community members too if you ask on an IRC channel. If nobody answers, please ask on the bug report or wiki page related to the problem; don't just drop the question.
  • Learn more at ComunicazioneCommunication.
  • You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech


Communicate that you work on a bug[edit]

You do not need to ask if you can work on a bug. You do not need to be set as the assignee in a bug report or announce your plans before you start working on a bug, but it would be welcome. At the latest when you are close to creating a patch for the bug, it is good to announce in a comment that you are working on it. Your announcement also helps others to not work on the bug at the same time and duplicate work.

Also note that if a bug report already has a recent link to a patch in Gerrit and has the project "Patch-For-Review" associated, you should choose a different bug to work on instead - avoid duplicating work. If the patch in Gerrit has not been merged and has not seen any changes for a long time, you could also pick up that existing patch and try to improve it.

If you stop working on a task you should remove yourself as the assignee of a bug report and reset the assignee to the default assignee, so others know that they can work on the bug report and don't expect you to still work on it.

By communicating early you will get more attention, feedback and help from community members.


Working on extensions[edit]

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

MediaWiki extensions primers
MediaWiki extensions resources


Hands-on suggestions[edit]

Le sezioni seguenti descrivono alcune aree di esempio in cui è possibile contribuire, ma non limitatevi a queste aree!

Nell'angolo in alto a destra di una task (bug report) su Phabricator è possibile vedere il prodotto e il componente in cui si trova il problema. Ciò fornisce un suggerimento riguardo il repository Git che in cui si trova il codice, e riguardo il team di sviluppo che si potrebbe contattare se si desidera discutere in modo "più generale" (come i commenti nei report bug dovrebbero preferibilmente fare riferimento al solo problema specifico descritto nella relazione)

Documentazione[edit]

Pywikibot[edit]

PyWikibot è un framework basato su Python per scrivere bot per MediaWiki Chiedi i tuoi dubbi generali sullo sviluppo sulla Mailing list Pywikibot e sul #pywikibot IRC channel

Multimedia[edit]

Ponete le vostre domande sullo sviluppo generale Multimedia sulla e su Canale IRC #wikimedia-multimedia

Applicazioni mobili[edit]

Ci sono numerose applicazioni per i dispositivi mobili (Android, iOS, Windows Phone, ...) per accedere alle wiki Wikimedia. Leggi le informazioni generali sullo sviluppo e poni le tue domandi sulla Mailing list Mobile e sul Canale IRC #wikimedia-mobile

Lettura[edit]

Il equipaggio di lettura costruisce il software che serve i nostri lettori. Gestiamo anche l'esperienza del web mobile. Leggi l'informazione generale di sviluppo e poni le tue domande sull Mailing list Mobile e si Canale IRC #wikimedia-mobile (in inglese).

Wikidata[edit]

Wikidata è una base di conoscenza centralizzata per dati strutturati, come riferimenti di interwiki e informazione statistica. Poni le sue domande sullo sviluppo in generale nella Mailing list Wikidata (inglese), sul Canale IRC #wikidata (inglese) e qui nel wiki.

Huggle[edit]

Huggle è un'applicazione desktop per eliminare vandalismi sui progetti Wikimedia, scritti in C ++.


Test dei browser e garanzia della qualità[edit]

I test browser automatizzati aiutano gli ingegneri di Wikimedia a produrre software di qualità e più veloci rivolto agli utenti. Guarda la pagina Test del browser Per ulteriori informazioni su quali tecnologie utilizziamo e come partecipare. Per maggiori informazioni leggi Quality Assurance

Ingegneria della Lingua (Localizzazione/Traduzione/Internazionalizzazione)[edit]

Poni le tu domande generali riguargo lo sviluppo Ingegnaria della Lingua sulla Mailing list mediawiki-i18n e sul Canale IRC #mediawiki-i18n

VisualEditor e Parsoid[edit]

Editor Visuale è l'editor WYSIWYG di MediaWiki. Poni le tue domande generali sullo sviluppo di VisualEditor nella Mailing list wikitech e sulCanale IRC #mediawiki-visualeditor.

VisualEditor è curato da Parsoid, un parser wikitext e un runtime. Poni le tue domande generali sullo sviluppo di Parsois sulla Mailing list wikitext e sul Canale IRC #mediawiki-parsoid

Scopri / Cerca[edit]

Il team di Scoperta costruisce il percorso della scoperta anonima a una fonte di conoscenza attendibile e rilevante. Poni le tue domande sullo sviluppo generale sulla mailing list Discovery e sul Canale IRC #wikimedia-discovery

Analitiche[edit]

L'equipaggio di Analitiche anima e sostiene le decisioni data-informed fatte in Wikimedia. Poni le tue domande generali sullo sviluppo nella mailing list Analytics

Design[edit]

Correggere i bug o le richieste di progettazione richiede competenze grafiche esistenti che lavorano con una applicazione di Grafiche vettoriali (ad esempio Inkscape). Conoscenza di base del CSS può anche essere di aiuto per l'integrazione. Poni le due domande generali sullo sviluppo sulla mailing list Design e sul Canale IRC #wikimedia-design.

Rivestimento[edit]

Il Rivestimento permette agli utenti di personalizzare l'aspetto e l'atmosfera di MediaWiki Conoscenze di vase di CSS e PHP sono utili. Controllare la pagina del progetto in Phabricator per ulteriori informazioni sul rivestimento e contatto.

Messaggi di sistema e problemi di localizzazione/traduzione[edit]

I messaggi di sistema in MediaWiki o le loro estensioni spesso hanno bisogno di piccole correzione al testo inglese, ma il testo sorgente può essere cambiato nel codice solo dagli sviluppatori, contrariamente alle traduzioni. Questo è cresciuto in un grosso problema di riparazioni di solito molto facili (che potrebbe essere facile come la correzione di un carattere)

Inoltre, molti messaggi non sono chiari e richiedono una migliore documentazione (guarda Documentazione sui messaggi). La documentazione mancante può anche essere aggiunta solo editando la /qqq sottopagina dei messaggi su translatewiki.net, come tutte le traduzioni, ma potrebbe richiedere lo studio del codice per capire a cosa si riferisce il messaggio: è quindi ottimale iniziare a comprendere il codide ed è molto utile per i traduttori (Che non hanno tali competenze)

Collaborazione[edit]

Il team di Collaborazione principalmente lavora su Echo e Flow.

Poni le domando riguardoi progetti del team Collaborazione sul Canale IRC#wikimedia-collaboration.

MediaWiki[edit]

MediaWiki è il nucleo software che povvede alle funzionalità di base wiki È complesso, scritto in PHP, e alcune aree potrebbere non avere una chiara manutenzione. Poni le tue domande generali sulla mailing list wikitech e sui Canali IRC #wikimedia-dev e #mediawiki

Phlogiston[edit]

Phabricator è ustato da Wikimedia per la gestione dei progetti, segnalazione di bug software e richieste di funzionalità. Phlogiston è un insieme di script SQL, Python e R per segnalare i dati Phabricator, particolarmente rapporti di masterizzazione e previsione.

Semantic MediaWiki[edit]

Semantic MediaWiki is one of the biggest and most popular MediaWiki extensions.

Maps[edit]

Maps is a popular MediaWiki extension that allows for, amongst other things, embedding of dynamic maps into wiki pages

E molto di più…[edit]

Ancora non abbastanza idee? Ci sono molti campi che puoi esplorare - MediaWiki ha centinaia di estenzioni e strumenti! Controlla l'elenco completo dei bug consigliati per i nuovi contributori:

Se hai dubbi e domande, per favore chiedi aiuto via IRC o sentiti libero di conttare Andre Klapper o Quim Gil.

Appendix[edit]

MediaWiki contributors at work in Bangalore, India.

PHP[edit]

MediaWiki is written in PHP, so you'll need to get familiar with PHP to hack MediaWiki's core.

Learn PHP
  • PHP tutorial — Available in many different languages. If you have no knowledge of PHP but know how to program in other object-oriented programming languages, PHP will be easy for you to learn.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
PHP resources
Stuff to know
  • The script maintenance/eval.php in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.

Database[edit]

Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB.

Learn MySQL/MariaDB
MySQL/MariaDB resources
Stuff to know
  • Test your code with MySQL/MariaDB.
    • MediaWiki currently uses MySQL and MariaDB as the primary database back-end. It also supports other DBMSes, such as PostgreSQL and 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[edit]

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 resources

MediaWiki[edit]

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 are constrained to a small region of code.

MediaWiki primers and must-reads
MediaWiki resources

See also[edit]