martedì 8 novembre 2016

Licenze open source

Una delle caratteristiche che ha sempre contraddistinto Delphi è l'ampia disponibilità di componenti e librerie di terze parti, sia gratuite che a pagamento. Molti di questi hanno da sempre dato la possibilità di ottenere i sorgenti. Al giorno d'oggi è possibile trovare molto materiale interessante sui principali siti di condivisione di codice tra i quali ricordiamo: GitHubSourceForgeBitbucket e l'ormai pensionato Google code. Questi siti ospitano codice open source, che ricordo non è sinonimo di gratis, ma significa che è possibile ottenere e modificare il sorgente a patto di rispettare le varie clausole imposte dalla licenza.


Visto che molti di noi usano, e qualche volta contribuiscono alla sviluppo di questo tipo di codice, mi sembrava giusto scrivere un breve vademecum sulle licenze più usate.

Innanzitutto volevo ribadire il fatto che open source non significa gratis. Dipende ovviamente dalla licenza specifica, ma per esempio potete tranquillamente vendere un software con licenza GPL a patto di rilasciare i sorgenti a chiunque abbia una copia del vostro software. Certo, per come funziona la GPL, il licenziatario del vostro software può tranquillamente a sua volta modificare o rivendere il vostro software, di conseguenza alcuni modelli di business non sono praticabili.

In effetti la maggior parte di chi sviluppa in questo ambito guadagna tramite sponsorizzazioni o supporto tecnico a pagamento.

    GPL e LGPL

    «Le licenze per la maggioranza dei programmi hanno lo scopo di togliere all'utente la libertà di condividerlo e di modificarlo. Al contrario, la GPL è intesa a garantire la libertà di condividere e modificare il free software, al fine di assicurare che i programmi siano "liberi" per tutti i loro utenti.»

    Queste sono le prime righe riportate nel preambolo della licenza. È abbastanza evidente il forte messaggio che Richard Stallman voleva dare. Fondamentalmente la licenza impone di rendere disponibili sempre i sorgenti insieme ai file binari di un software. I sorgenti poi possono essere modificati senza particolari limiti se non che versioni derivate dal software originale devono rimanere con la medesima licenza.

    La licenza di solito viene considerata piuttosto restrittiva perché per "codice derivato" si intende anche software completamente separato (come un'altro eseguibile) che usa il software licenziato sotto GPL. Questo di fatto impedisce ad un software commerciale closed source di usare una libreria GPL.

    Proprio per questo esiste anche una versione della GPL più "debole", la LGPL, che non richiede che software linkato al programma sia rilasciato con la stessa licenza. Questo tipo di licenza infatti viene di solito usata dalle librerie. Con questa licenza modifiche alla libreria devono essere rilasciate con la stessa licenza, ma applicazioni separate che usano la libreria non hanno questo vincolo.

    Riferimenti: Testo originale delle licenza, Traduzione non ufficiale in italianoFAQ

      Apache license

      La Apache License nasce con l'omonimo web server. Come la GPL permette di usare il software, modificarlo e ridistribuirlo, ma a differenza di quest'ultima non è necessario che il software derivato abbia la stessa licenza. L'unico requisito necessario è includere un'informativa sul tipo di licenza usata.

      Per quanto riguarda l'uso di librerie sotto licenza apache da parte di applicazioni proprietarie l'unico vincolo è includere nella distribuzione due file: uno in cui si dà credito agli autori della libreria e l'altro con una copia della licenza stessa.

      Riferimenti: Testo originale della licenza

      BSD license

      La licenza BSD è molto simile alla Apache License, di conseguenza è anch'essa estremamente permissiva. Tanto che il software con cui è nata la licenza, il sistema operativo Unix  Berkeley Software Distribution (BSD), è stato incorporato da Apple in Darwin che è a tutti gli affetti un OS closed source.

      La licenza consta di soli quattro punti che riporto testuali dalla traduzione italiana:


      1. Le ridistribuzioni del codice sorgente devono conservare la nota di copyright sopra riportata, questa lista di condizioni e la seguente limitazione di responsabilità.
      2. Le ridistribuzioni in forma binarie devono riprodurre la nota di copyright sopra riportata, questa lista di condizioni e la seguente limitazione di responsabilità nella documentazione e/o altri materiali forniti con la distribuzione.
      3. Ogni materiale pubblicitario che riporti caratteristiche o uso di questo software deve mostrare la seguente attestazione: Questo prodotto include software sviluppati dalla <organizzazione>.
      4. Né il nome della <organizzazione>, né i nomi dei suoi collaboratori possono essere utilizzati per avallare o promuovere prodotti derivati da questo software senza uno specifico permesso scritto.


      Di conseguenza le uniche accortezze per chi usa librerie con questa licenza sono contenute negli ultimi due punti: la necessita di citare gli sviluppatori originari ma senza che questo faccia intendere che questi ultimi promuovono il prodotto finale.

      Riferimenti: Testo originale della licenza

      MIT license

      La licenza MIT è stata creata dal Massachusetts Institute of Technology (MIT) ed è addirittura più permissiva della BSD. Chi licenzia software sotto MIT license deve solo includere il file di licenza, mentre chi lo usa a tutti gli effetti non ha nessun limite particolare. In pratica la licenza contiene solo una generica clausola di esclusione di responsabilità.

      Riferimenti: Testo originale delle licenza

      MPL

      La licenza MPL (Mozilla Public License) è stata creata da Netscape Communications Corporation durante lo sviluppo del browser open source Mozilla. La licenza nasce come un ibrido tra le licenze molto permissive come MIT/BSD e più restrittive come GPL.

      In pratica è permessa la modifica dei file sorgenti originali del prodotto solo a condizione che siano resi disponibili a chiunque abbia la versione binaria del codice con lo stesso tipo di licenza. È invece possibile aggiungere nuovi file al prodotto con licenze diverse e senza la necessità di ridistribuirli.

      Riferimenti: Testo originale della licenzaFAQ

      lunedì 7 novembre 2016

      Conferenza Delphi Porte Aperte 2016



      Wintech-Italia s.r.l. organizza anche quest’anno l’evento Delphi Porte Aperte, un incontro, gratuito, di mezza giornata per un aggiornamento sullo stato attuale di Delphi.

      L'evento in edizione 2016 raddoppia! Al pomeriggio il classico evento gratuito di mezza giornata dedicato a tutti i programmatori Delphi ansiosi di conoscere le novità dello strumento di sviluppo. Al mattino sono previsti due seminari a pagamento ad alto contenuto tecnico tenuti da Paolo Rossi e Luca Minuti.

      Conferenza: Lo stato dell'arte di Delphi


      L'incontro offre una panoramica sullo "stato dell'arte" di Delphi, a partire dagli aspetti più generali, per affrontare elementi architetturali (come linguaggio e librerie), per parlare anche delle novità più recenti con particolare attenzione all'apertura multipiattaforma di Delphi (MacOSX, iOS, Android, Linux). L'incontro si propone di essere fondamentalmente un momento di scambio e discussione tra i partecipanti.

      Il biglietto di ingresso gratuito comprende l'ingresso alla conferenza del pomeriggio e il coffee break
      Eventbrite - Delphi Porte Aperte 2016


      Seminari: Applicazioni stabili e sicure


      Nella Sala A si terrà il seminario dal titolo: Eccezioni e debug: avere il controllo delle applicazioni
      Quante volte una vostra applicazione in deployment dal cliente ha dato errori oppure si è bloccata in modo anomalo senza alcuna indicazione? Quante volte avete perso ore nel tentativo di debuggare codice complesso senza venirne a capo?
      Seguendo questa sessione imparerete tutti i trucchi per avere il controllo completo delle vostre applicazioni soprattutto quando queste diventano instabili, vedremo come tenere sotto controllo anche le applicazioni che girano sulle macchine dei clienti senza più avere errori "sconosciuti"


      Nella Sala B si terrà il seminario dal titolo: Sviluppare applicazioni (più) sicure
      La possibilità di accedere alle applicazioni fuori dalle mura aziendali ha portato una serie di problematiche sia nelle applicazioni web che in quelle tradizionali. In questo seminario parleremo dei problemi di sicurezza più rilevanti dal punto di vista dello sviluppatore. Verranno presentate le tecniche di hacking più comuni (come SQL Injection e XSS) e i metodi per prevenirle. Inoltre parleremo di sicurezza dei dati, delle password e qualche accenno sui protocolli di rete e sulla crittografia. In dettaglio, vedremo come sviluppare applicazioni più sicure

      Il biglietto di ingresso per i seminari comprende l'ingresso ai seminari, alla conferenza, al pranzo e ai coffee break
      Eventbrite - Delphi Porte Aperte 2016





      Agenda conferenza
      13:45Registrazione dei partecipanti
      14:20Delphi: Presente e Futuro
      Paolo Rossi - Wintech Italia
      Il punto della situazione sulla salute di Delphi e dell'ecosistema. Le nuove piattaforme supportate, la roadmap di Delphi in dettaglio, tutto l'occorrente per predire il futuro del nostro strumento di sviluppo
      15:00RTL: Cosa vi siete persi nelle ultime versioni di Delphi
      Luca Minuti - Wintech Italia
      Siamo abituati ad associare ogni nuova release di Delphi ad un numero limitato di caratteristiche rilevanti: il supporto ad una nuova piattaforma, un nuovo modello di sviluppo (web, mobile, ..) o l’integrazione con qualche nuovo DB. In realtà ogni nuova versione comprende tante piccole aggiunte e migliorie che sommate assieme possono cambiare il modo in cui scriviamo il codice. In questa sessione faremo una carrellata su alcune di quelle più rilevanti
      15:50Coffee Break
      16:10Delphi per Linux: Come preparare il proprio codice
      Paolo Rossi - Wintech Italia
      Delphi per Linux sta per arrivare, ma voi siete pronti a compilare il vostro codice per questa piattaforma? In questa sessione vedremo in dettaglio come cominciare già da subito a scrivere codice compatibile con la piattaforma Linux
      17:10Application Server REST con WiRL
      Paolo Rossi, Luca Minuti - Wintech Italia
      Per lo sviluppo multipiattaforma (Mac OS, Android iOS e Linux) e per lo sviluppo web l'application server è diventato un elemento basilare delle architetture software. In questa sessione vedremo come utilizzare una delle più moderne librerie REST per Delphi (WiRL) per costruire facilmente un servizio REST
      17:50Domande e discussione finale
      Spazio per le vostre domande
      18:15Conclusione



      Agenda seminari
      08:45Registrazione dei partecipanti
      09:20Track 1: Eccezioni e debug: avere il controllo delle applicazioni
      Paolo Rossi - Wintech Italia

      Quante volte una vostra applicazione in deployment dal cliente ha dato errori oppure si è bloccata in modo anomalo senza alcuna indicazione? Quante volte avete perso ore nel tentativo di debuggare codice complesso senza venirne a capo?

      Seguendo questa sessione imparerete tutti i trucchi per avere il controllo completo delle vostre applicazioni soprattutto quando queste diventano instabili, vedremo come tenere sotto controllo anche le applicazioni che girano sulle macchine dei clienti senza più avere errori "sconosciuti":
      • Le eccezioni queste.. sconosciute??
      • Salvataggio di file di log e di report sulle eccezioni
      • Il ruolo dello stack nella gestione delle eccezioni
      • L'uso di strumenti esterni di gestione delle eccezioni
      • Procedure di debug basilari ed avanzate
      • Debugging di applicazioni multithread
      • Debugging remoto con Delphi
      09:20Track 2: Sviluppare applicazioni (più) sicure
      Luca Minuti - Wintech Italia

      La possibilità di accedere alle applicazioni fuori dalle mura aziendali ha portato una serie di problematiche sia nelle applicazioni web che in quelle tradizionali. In questo seminario parleremo dei problemi di sicurezza più rilevanti dal punto di vista dello sviluppatore. Verranno presentate le tecniche di hacking più comuni (come SQL Injection e XSS) e i metodi per prevenirle. Inoltre parleremo di sicurezza dei dati, delle password e qualche accenno sui protocolli di rete e sulla crittografia.

      In dettaglio, vedremo come sviluppare applicazioni più sicure:
      • (SQL) Injection, XSS
      • Validazione dell'input
      • Social engineering
      • Sicurezza delle password
      • Sicurezza dei dati
      • Crittografia, Connessioni SSL
      • OTP, password, biometriche
      • Autenticazione e autorizzazione
      11:00Coffee Break
      12:30Conclusione e Pranzo


      La conferenza ed i seminari si svolgeranno presso:
      Hotel Sheraton Padova (Four Points)
      Corso Argentina 5
      35129 Padova