Sviluppo software

Da Wikimedia Italia.
Vai alla navigazione Vai alla ricerca
Questa pagina è una bozza.

Pagina che descrive i requisiti base per ogni nuovo sviluppo software effettuato per conto di Wikimedia Italia.

Nota: il responsabile del tuo progetto per Wikimedia Italia potrebbe aver comunicato eventuali variazioni, ad esempio nel tuo contratto.

Variazioni non minori a questo documento devono essere concordate con la commissione Tech.

Avvertenze

Wikimedia Italia è un capitolo ufficiale riconosciuto da Wikimedia Foundation.

Questa pagina è stata scritta perché, a differenza di molte altre realtà, l'infrastruttura di Wikimedia Italia non dovrebbe essere messa a disposizione di qualsiasi nuovo team di sviluppo per implementare nuovi applicativi, e fare hosting di nuovi strumenti dedicati alla community. Allo stesso tempo, scoraggiamo l'adozione di hosting condivisi, o di propri server personali. Questo perché è possibile evitare frammentazione, costi, complessità, gatekeeping, nonché una gestione delle utenze poco efficiente.

Ecco perché questa pagina parla dell'infrastruttura di Wikimedia Foundation.

Infrastruttura di Wikimedia Foundation

Wikimedia Foundation fornisce gratuitamente un'infrastruttura piuttosto efficiente ed evoluta, basata su OpenStack e Kubernetes. Questi servizi di hosting sono a disposizione per certi utilizzi nel contesto Wikimedia.

In questa infrastruttura fanno parte due componenti principali: una di hosting condiviso, e una per la creazione di server personali (VPS).

Wikimedia Cloud VPS (OpenStack)
https://wikitech.wikimedia.org/wiki/Help:Cloud_VPS
Wikimedia Toolforge (Kubernetes)
https://wikitech.wikimedia.org/wiki/Help:Toolforge

Termini d'uso

Si richiede di accettare i termini d'uso di Wikimedia Foundation. La violazione causa l'interruzione del servizio.

https://foundation.wikimedia.org/wiki/Terms_of_Use/it

Tempo di lettura: 15 minuti.

Licenza

È già scritto nei termini d'uso: non è possibile caricare sui server Wikimedia del materiale non rilasciato dal suo autore con una licenza libera.

Per il proprio nuovo codice, si richiede di adottare una licenza libera ufficialmente approvata dalla Free Software Foundation.

Ad esempio:

  • GNU General Public License v3+ (adatta per software generico)
  • GNU Affero General Public License v3+ (particolarmente adatta per software lato-server)

Caricare il rispettivo file di licenza nel repository (esempio: LICENSE.md).

Requisiti progettuali

Sistema operativo
Debian GNU/Linux stable.
Repository Debian
main

Il software sviluppato deve essere il più possibile compatibile con il parco software già presente in Debian GNU/Linux stable nel repository main (contenente solo software libero). Questo è un requisito tecnico e pratico, determinato dal fatto che questo sistema è l'unico fornito nella OpenStack e in Kubernetes di Wikimedia Foundation, e questa cosa non cambierà a breve. Grazie per la collaborazione.

Qui puoi verificare qual è l'esatta versione da dover supportare:

Documentazione sistemistica

Si richiede di fornire una documentazione da consegnare al sistemista GNU/Linux, in lingua inglese, con tono semplice e chiaro.

L'obiettivo è permettere di (ri-)creare velocemente un ambiente che ospiti l'applicativo.

Informazioni da fornire:

  • dipendenze software (pacchetti da installare in una nuova Debian GNU/Linux minimale)
  • istruzioni installazione (comando apt, etc.)
  • istruzioni configurazione (quali sono i file di configurazione di sistema da modificare, etc.)
  • percorsi dei file di log più rilevanti per investigare problematiche con l'applicativo
  • utenti Unix in gioco (esempio: www-data, my-app, etc.)
  • percorsi che devono essere scrivibili da tali utenti (esempio: percorsi scrivibili da www-data: /var/www/myapp/cache, etc.)
  • percorsi che non devono essere scrivibili (esempio: questi file deve poterli modificare solo l'amministratore di sistema root, non l'utente www-data: /var/www/conf, etc.)
  • percorsi che non devono essere visibili dall'esterno (esempio: /var/www/tmp/, etc.)

Questa documentazione può essere semplicemente una sezione "Sysadmin documentation" nel README del repository.

Documentazione sviluppo software

Si richiede di redarre una documentazione da consegnare alle persone nel team di sviluppo, in lingua inglese, con tono semplice e chiaro.

L'obiettivo è favorire un passaggio di consegne ad altre persone nel team di sviluppo, e facilitare altre persone (spesso volontari e con poco tempo libero) nel capire la struttura del vostro progetto.

Informazioni da fornire:

  • la struttura del progetto (spiegazione del contenuto delle directory, per orientarsi)
  • come testare il codice in locale
  • come configurare l'applicativo

Questa documentazione può essere semplicemente una sezione "Development documentation" nel README del repository.

Documentazione utente

Si richiede di redarre una documentazione da consegnare agli utenti finali, in lingua italiana o inglese (da chiarire con il responsabile progetto), con tono semplice e chiaro.

L'obiettivo è aiutare gli utenti finali a padroneggiare le parti meno ovvie dell'applicativo.

Questa documentazione può essere omessa se l'interfaccia utente è già sufficientemente auto-esplicativa (ad esempio se è presente un wizard, etc.).

Questa documentazione può essere semplicemente una sezione "Usage" nel README del repository.