Chapter 0: Preface
traduzione a cura di Giovanni Cannata
web2py è stato lanciato nel 2007 ed ora, dopo tre anni di sviluppo continuo, eccoci giunti alla terza edizione di questo libro. In tutto questo tempo web2py ha ottenuto un riscontro positivo da parte di molti utenti e molti sviluppattori che condividono i suoi obiettivi ed hanno contribuito a migliorarlo in modo significativo.
Vorrei dare il giusto riconoscimento ma soprattutto ringraziare alcuni dei principali contributors: Jonathan Lundell (per il nuovo meccanismo di routes), Thadeus Burgess (per il nuovo sistema di template), Nathan Freeze (per il nuovo meccanismo di validatori e di autenticazione) e Timothy Farrell (per il nuovo server web). Nel Capitolo 1 è presente una lista molto più completa di collaboratori: il nostro impegno collettivo ha creato uno dei più completi framework web open-source esistenti.
Ho iniziato lo sviluppo di web2py come uno strumento di insegnamento perchè sono sempre stato molto preoccupato dalla crescita del divario digitale (digital divide) ed i problemi che questo crea per il libero fluire delle informazioni. La capacità di costruire applicazioni web di buona qualità, in modo veloce ed efficiente, è di importanza critica per consentire a sempre più persone di interagire con Internet in modo utile e può aiutare a prevenire la monopolizzazione dell'informazione da parte delle grandi aziende. Questo è il motivo che mi ha spinto ad iniziare a lavorare su web2py, rimane valido anche oggi ed oggi è forse ancora più importante.
Generalmente l'obiettivo di ogni framework di sviluppo per applicazioni web è di renderne lo sviluppo più semplice, più veloce e di aiutare gli sviluppatori nell'evitare errori (in modo particolare quelli relativi alla sicurezza). In web2py abbiamo cercato di soddisfare queste esigenze per mezzo dei nostri tre principali obiettivi:
La facilità d'uso è l'obiettivo primario di *web2py**. Per noi questo significa ridurre i tempi di apprendimento e di sviluppo ed è il motivo per cui abbiamo costruito web2py come un framework completo (full-stack) e senza nessuna dipendenza esterna. web2py non richiede nessuna installazione e non ha nessun file di configurazione. Ogni componente di cui si ha bisogno per iniziare a sviluppare è già presente: include un server web, un database transazionale e un ambiente di sviluppo integrato (IDE, Integrated Developing Environment) web che dà accesso a tutte le funzionalità di web2py. Le interfacce applicative di programmazione (API, Application programming Interface) sono state ridotte al minimo (il nucleo centrale di web2py è composto da solo 12 oggetti) in modo che siano facili da ricordare. Abbiamo lavorato sodo per avere il minor numero di restrizioni possibile: web2py può infatti essere utilizzato con un ampio numero di server web e di database differenti e lascia allo sviluppatore il pieno accesso alle potenti funzionalità del linguaggio Python.
Uno sviluppo più veloce è l'obiettivo secondario di web2py. Per questo motivo abbiamo creato web2py in modo che ogni funzione abbia un comportamento di default (che può comunque essere modificato). Per esempio, se viene creato solamente un modello dei dati (model, il modo in cui il database memorizza i dati), web2py crea automaticamente un'interfaccia web per operare sui dati; quando si aggiungono le azioni in un controller (il componente logico dell'applicazione), vengono automaticamente generate le relative viste (view, pagine di presentazione dei risultati) per presentare l'output in HTML, XML, JSON, RSS, ecc. Inoltre web2py genera automaticamente i moduli (form) per creare, aggiornare e cancellare i dati.
La sicurezza è il cuore di web2py e il nostro obiettivo è di bloccare ogni cosa potenzialmente pericolosa per mantere sicuri il sistema ed i dati dell'applicazione. Per questo il nostro strato di gestione del database impedisce le SQL Injections. Il linguaggio di template previene le vulnerabilità di tipo Cross Site Scripting. Le form generate da web2py prevedono la validazione automatica di ogni campo e impediscono gli attacchi di tipo Cross Site Request Forgeries. Le password sono sempre memorizzate cifrate. Le sessioni sono memorizzate di default sul server, per prevenire la manipolazione dei cookies e i cookie di sessione sono nel formato UUID per prevenire il furto del cookie stesso.
web2py è stato progettato partendo dalla prospettiva dello sviluppatore ed è costantemente ottimizzato in modo da diventare più veloce e più leggero, mantenendo sempre la compatibilità con le applicazioni scritte per le versioni precedenti.
web2py è libero e gratuito. Se otterrete dei benefici con web2py speriamo che avrete voglia di contribuire alla comunità di sviluppatori ed utilizzatori in qualsiasi modo riteniate utile.