Il mio albero da Bugfinder

Posted 25. aprile 2011 21.26 in Informatica

SandroRizzettoSono molto orgoglioso di aver appreso che, in qualità di scopritore di un bug del noto prodotto KenticoCMS, hanno piantato un albero a mio nome.

Kentico infatti per la seconda volta in 2 anni ha intrapreso la sfida di piantare un albero per ogni bug trovato (Tree for Bugs) e soprattutto di risolverlo entro soli 7 giorni. Durante questa tornata sono stati trovati 45 bugs (non sono pochi, ma bisogna considerare la vastità del prodotto e le decine di migliaia di righe di codice che probabilmente lo compongono) anche se gli alberi piantati sono stati 300.

Divertente il sito appositamente creato che mette in competizione i vari team (con tanto di nome e cognome del team leader) sul numero di bug di loro competenza e mostra i dettagli della fase di messa a dimora degli arbusti (e ovviamente non poteva mancare la pagina Facebook).

Chissà, avendo le coordinate esatte, magari un giorno potrò andare a vederlo a distendermi sotto le sue fronde (magari degustando un vino locale visto che si trova nel più grande winery village - Novosedly- della Repubblica Ceca; potevano mica piantare una vite ?).

SAM_4532

I piantatori del mio albero (Daniela, Tester e Marketplace Administrator e il suo ragazzo); non sembrano Cripstac e Petrectec di Zelig ? Smile

map

L’esatta ubicazione dell’albero

208672_195563000485707_178343475540993_459271_863283_n

La piantagione

215371_195563143819026_178343475540993_459284_7006764_n

Umorismo informatico

 

Il video che spiega l’iniziativa

Web Security in KenticoCMS e non solo…

Posted 21. marzo 2011 19.33 in Informatica

Mi fa molto piacere constatare che KenticoCMS, il prodotto che ho scelto per i miei sviluppi di siti piú o meno grandi (come ad esempio il nostro sito aziendale che conta piú di 2000 pagine), prenda in seria considerazione tutti gli aspetti legati alla sicurezza delle applicazioni web.

Ne è riprova il fatto che è stato appena pubblicato un interessante white paper sulle più comuni tipologie di vulnerabilità, ovvero:

  • XSS (cross site scripting)
  • SQL Injection
  • Argument Injection
  • Code Injection
  • XPath Injection
  • CSRF/XSRF (cross site request forgery)
  • Session Attacks
  • Directory Traversal
  • Unvalidated Redirects and Forwards
  • DoS (Denial of Service)

Consiglio la lettura del documento anche a chi non usa questo CMS, sia per capire meglio le varie vulnerabilità nel caso le si ignorasse, sia per imparare come evitarle.

Kentico 5.5R2: un’alternativa a Sharepoint ?

Posted 6. gennaio 2011 16.35 in Informatica

E’ uscita da poco una nuova “intermediate” release di KenticoCMS, il CMS che uso da qualche tempo per i miei progetti e del quale ho già parlato in questo post.

La novità maggiore di questa versione è sicuramente la presenza di un modulo per costruirsi rapidamente una intranet aziendale. Nell’ottica dell’Enterprise 2.0, sfruttando molti moduli già esistenti (il Content Management ovviamente, ma anche forum, blog, wiki, boards, news, events, media library, ecc) ci si può costruire in pochi clic una intranet out-of-the-box.

Intranet Solution

Il template “Intranet” che possiamo scegliere durante il setup ci installerà una soluzione che copre molte delle esigenze di una tipica intranet aziendale e che comunque potremmo andare ad arricchire con le nostre webparts, widget, pagine aspx o intere applicazioni sfruttando le estese API del CMS.

Dopo aver inserito i nostri dipendenti (Employee Directory) che saranno anche gli User del portale, tramite i moduli citati prima potremmo cominciare a riempire il sito di tutte le informazioni inerenti la Società: pagine relative alla Politica dell’azienda, organigrammi, policy interne, news, eventi con calendario, contenuti multimediali (foto e videogalleries), blog aziendali e singoli per ogni utente, forum interni, ecc. Il tutto sarà indicizzato (compresi PDF e documenti Office) e facilmente ricercabile.

image

Document Management

Gran parte delle informazioni aziendali sono ovviamente sotto forma di documenti e quindi grande attenzione è stata posta al modulo di Document Library che è stato molto migliorato.

La webpart Document Library ci presenterà la lista documenti uploadati ognuno corredato da un menu contestuale che permette le classiche operazioni di Copy/Delete/Open/Edit/Upload, di gestione dei permessi, di versioning e di archiviazione. Se abilitato è possibile anche l’associazione a un workflow e le classiche operazioni di check-in/check-out.

Molto comoda l’integrazione con WebDAV che ci permette di aprire e salvare i documenti direttamente dentro l’applicazione associata (es. Office) senza dovere rifare l’upload o usare l’opzione di update. Coerente con il modulo di Content Management la possibilitá di caricare un documento in un’altra lingua se la nostra intranet è di tipo multi-language (e in Alto Adige l’esigenza non è poi così remota).

image

Departments e Workgroups

Anche se l’azienda è piccola, sarà sicuramente suddivisa in qualche reparto (IT, Commerciale, Marketing, ecc) e mediante questo modulo possiamo gestire i vari settori come sotto-siti di quello generale. Le informazioni e i documenti inseriti in un department, che può avere un theme grafico diverso da quello generale, saranno accessibili solo ai membri del reparto, permettendo così una gestione della security molto semplice da parte dell’administrator (che è l’unico che può creare e gestire i department).

Al contrario i Workgroups possono essere creati da qualsiasi utente e nascono come strumento per la collaborazione e cooperazione di un team di lavoro (es. per la gestione di un progetto). Anche loro sono website separati con un loro tema e design schema e sia l’accesso che i documenti possono essere privati (riservati solo ai membri del workgroup) oppure anche pubblici.

image Department Home image Workgroup Home

 

Project Management e Task

imageOgni utente con i giusti permessi può creare e gestire un progetto che includerà una serie di task. L’avanzamento del progetto sarà legato al progresso dei suoi task figli e visualizzato sul live-site o nel backoffice tramite semplici percentuali di completamento. E’ovviamente possibile l’integrazione con il modulo di Workgroup. Tutti gli status con i suoi relativi colori (completato, in corso, critico, ecc) e le priorità sono completamente customizzabili dal backoffice.

imageOgni utente può inoltre crearsi una serie di Personal Task non legati a un singolo progetto, e vedere in una dashboard rapidamente lo status dei suoi task, di quelli a cui è stato assegnato da altri e dei progetti in cui è coinvolto.

E’ chiaro che non ci avviciniamo nemmeno ai livelli di un Project Management vero come puó essere Ms Project e neppure ai “Project Task” di Sharepoint che seppur semplici almeno visualizzano un Gannt, ma per gestire le informazioni basiche di un progetto (goal, status, estimated time, priority, deadline, progress, ecc), il modulo fa il suo dovere.

 

Personalization e User Contribution

Sappiamo benissimo che la fortuna del Web 2.0 è stato lo User Generated Content, e anche nell’Enterprise 2.0 dobbiamo consentire all’utente finale di arricchire il nostro portale con contenuti e documenti. Tutto ciò è possibile direttamente dal live-site senza che il dipendente debba entrare nel Backoffice di Amministrazione. Tramite semplici comandi e con un training molto basico (forse qualche nozione sul FCKeditor html) potremmo quindi consentire al nostro utente di inserire news o articoli o di uploadare documenti.

L’interfaccia e i contenuti delle varie pagine potranno inoltre essere customizzati secondo i vari livelli: l’admin potrà personalizzare la parte corporate, i capi-settore i loro department, i responsabili progetto i loro workgroup e ogni utente il proprio “My Dashboard”. Il metodo per farlo è quello classico del drag’n drop di webparts (dal CmsDesk quando si preparano i template) o di widget (direttamente nel live site) e la quantità messa a disposizione dal sistema è veramente notevole.

image

 

Microsoft Sharepoint 2007/2010 Connector

imageCome vedremo più avanti, KenticoCMS 5.5R2 potrebbe essere una valida alternativa a Sharepoint. E se invece li volessimo far convivere? O se già avessimo catalogato in Sharepoint migliaia di files e non volessimo cambiarne il repository, ma solo pubblicarne l’elenco sulla mia nuova intranet? Kentico ci viene in aiuto con un connector (disponibile addirittura nella versione Free!) che invoca i classici webserver di Moss (lists.asmx e imaging.asmx) e tramite 4 diversi webparts (DataSource, DataGrid, DataList e Repeater) ci permette di includere nel portale informazioni provenienti dall’ambiente Microsoft.

Supporto a Windows Azure

Da questa release KenticoCMS supporta l’ambiente di Cloud Computing di Microsoft pur se con qualche limitazione. Sql Azure ad oggi non supporta il Full Text e quindi l’indicizzazione di doc e pdf non è possibile. Data la mancanza di un file-system tutte le operazioni/feature che richiedono un accesso diretto ai file (import/export, smart search, media library, ecc) non sono supportate. Inoltre per problemi con lo session state provider e la web-farm synchronization viene supportato solo il SINGLE INSTANCE mode. Infine il setup è manuale anche se molto ben documentato da un whitepaper.

L’obiettivo della software house è stato quello di non creare due versioni diverse per il cloud e l’on-premise e quindi in questa versione ci dobbiamo accontentare di quanto offerto. La prossima major relase 6.0 (disponibile a Q2/Q3 2011) nasce già con Windows Azure in mente e quindi sarà completamente riscritto il supporto al file-system (che riconoscerà se sta girando su Azure o su un server normale), sarà implementato un nuovo session provider per supportare multiple instances e webfarms, sarà cambiato il componente di Smart Search nel caso Sql Azure continuasse a non avere la parte di Fulltext e il setup consentirà l’installazione di un Windows Azure Project.

Altre novità

  • Versioning without workflow”: è ora possibile usare le features di versioning e check-in/check-out senza necessariamente creare un workflow; i documenti sono direttamente pubblicati (questo è diventato il comportamento standard delle Document Libraries; come spesso accade semplificare al massimo i processi è la chiave per il successo).

Prezzi e Licensing

Tutto bello, ma quanto costa tutto ciò? Con questa nuova release entra nel listino un nuovo pacchetto chiamato Document Management Package che comprende appunto il Document Management, il Project Management, il Task Management e il supporto WebDAV e che costa al pubblico $1,499. A questo bisogna aggiungere il prezzo del pacchetto Base di $1,999 per un totale di 3500$ (circa 2700 euro). La versione Ultimate che da oggi comprende anche il Document Management oltre a tutti gli altri Package (Advanced, Ecommerce e Social Network) non ha subito nessun aumento rimanendo a $4,499 ed essendo spesso oggetto di sconti e promozioni.

Il modello di pricing come si vede non è legato al numero di utenti (CAL) o di subsite, quindi con questo prezzo non si hanno limiti sul numero di department/workgroups/users creabili.

La Kentico Intranet Solution, ovvero il sito ready-to-use da cui ho tratto gli screenshot di cui sopra è fornita a titolo gratuito così come gli altri starter kit (corporate, personal, ecommerce e community) ma a differenza degli altri fornisce a mio parere un base molto più sostanziosa e ricca per partire con lo sviluppo della propria intranet.

Infine il Licensing per la parte Cloud è stato molto semplificato (o per meglio dire cancellato): per mettere il sito on the cloud non si deve pagare niente in più rispetto alla licenza normale, vedremo con la 6.0 se la multiple instance cambierà nuovamente le carte in tavola.

KenticoCMS vs Sharepoint

Leggendo i vari moduli (e anche io stesso testando la soluzione) qualcuno avrà fatto un parallelo con la più nota piattaforma per creare Intranet e soluzioni di Document Management. Possiamo paragonarle? Il confronto è veramente difficile a partire dal prezzo, dove Sharepoint può essere molto più economico in certi casi (i WSS / Sharepoint Foundation sono gratis) ma estremamente più caro in caso di molti utenti (secondo questo sito per una intranet di 1000 utenti si spendono all’incirca 80.000 euro, ma prendetelo con le pinze perchè si sa che il licensing di Microsoft è molto piú complicato della Teoria Quantistica di Yang-Mills Smile ).

A livello di potenzialità chiaramente Sharepoint offre molto di più (ad esempio tutta la parte di Business Intelligence disponibile nella versione Enterprise) e ormai è un ambiente talmente vasto che è difficile considerarlo come un’applicazione. E forse proprio questa vastità -che talvolta si può trasformare in complessità- potrebbe “spaventare” qualcuno del reparto IT e fargli preferire una soluzione più semplice da gestire (per installare KenticoCMS non ci vuole certo un sistemista, per una soluzione MOSS non ci giurerei…). Idem dal punto di vista del Developer: avete mai provato in Sharepoint a fare il deploy di una feature oppure a customizzarlo tramite un .wsp file? Bene, per creare una webpart o un nuovo template di Kentico basta aprire Visual Studio (o anche Notepad volendo), scrivere il file ascx/aspx e copiarlo! E il bello è che è completamente basato su feature STANDARD di Asp.Net (es. la Form Authentication è quella di asp.net, provate invece a implementarla su MOSS!) e il processo di integrazione/estensione è molto fluido (per fare debug premo F5 e basta, non impazzisco mezza giornata!).

Conclusioni

KenticoCMS continua a sorprendermi e a piacermi sempre di piú e con questi nuovi moduli per intranet/extranet/collaboration aggiunge un mattone importante per incrementare la sua popolarità. E non pensate che sia rivolto solo a piccole entità; il software è molto scalabile, sfrutta molto bene il caching e offre il supporto per il load balancing e le web-farms (altrimenti intranet da 30.000 utenti o siti con High Availibility e molte pageviews non sarebbero possibili).

KenticoCMS, il CMS che avrei voluto scrivere io

Posted 5. gennaio 2010 13.41 in Informatica

Nella mia precedente vita di DEV mi sono occupato principalmente di quel tipo di applicazioni chiamate Content Management System (CMS). Uno dei prodotti (acoCMS) che ho sviluppato nell’arco degli anni ruggenti di Internet (dal 1998 al 2005 circa) ha avuto un discreto successo e ancora oggi è usato da uno dei canali di Yahoo Italia e presumo da qualche altra decina (centinaia ? all’epoca era 800) di clienti che non hanno avuto la voglia di upgradare a una soluzione più moderna. Successivamente ho collaborato e supervisionato allo sviluppo di una suite più avanzata ( Structura eCMS ) scritta in .NET anch’essa tuttora in uso presso portali ad alto traffico ( DolomitiSuperski.com per citarne uno).

Quando l’anno scorso ho avuto la necessità di implementare un portale per la mia azienda, mi sono messo alla ricerca di un CMS con determinate caratteristiche e posso dire di avere trovato in KenticoCMS quell’applicazione che per molti aspetti invidio per non averla scritta io !

Questo post non vuole essere una dettagliata recensione del prodotto (ce ne sono sul loro sito e in molti altri blog), ma solo una testimonianza di un cliente che si è trovato bene e che non ha remore a consigliarlo ad altri.

Partiamo subito a rispondere alla domanda che purtroppo è diventata una delle prime nel settore (svilito ?) dei CMS: E’ un prodotto free/open source/gratis/mi pagano loro se lo uso ?!
Riposta: SNI ! Nel senso che esiste una versione free che per moltissimi usi basta e avanza, ma appena si hanno esigenze un attimo più evolute (primo tra tutti il multilanguage), allora è a pagamento, ma con costi tutto sommato accettabili -seppure in crescita rispetto a 12 mesi fa- per un’azienda.

L’architettura è basata sull’ambiente Microsoft, ovvero, IIS (6/7/7.5), ASP.NET 2.0 e MS-Sql Server 2005/2008 (anche la Express) come base dati. Questo può ovviamente essere un “limite” per qualcuno che preferisce prodotti LAMP, ma era invece un requirement fisso per me, visto che volevo un prodotto aperto e customizzabile da Visual Studio, sfruttando le mie conoscenze di asp.net, c#, ecc.

Il Setup è una delle prime cose di cui ero stato “invidioso”: si lancia un exe che scompatta le centinaia (forse troppi !) di files e poi parte un “web installer” che chiesta la versione di Visual Studio e del Framework (2008 + 3.5 oppure 2005 + 2.0) e del webserver da usare (IIS locale o remoto oppure il “Cassini” di VS) configura il nostro sito come root o come virtual dir. Lanciato per la prima volta l’url nel browser vengono subito verificati alcuni diritti dell’utente anonimo e poi parte la configurazione guidata del DB su Sql Server. A questo punto abbiamo la possibilità di partire con un sito blank vuoto, di usare uno dei 4 templates (Corporate, Personal, E-Commerce, Community) già preconfigurati (non il massimo come design e come qualità del codice HTML) oppure di usare un wizard advanced che ci guiderà in tutte le opzioni. In ogni caso, nel giro massimo di 10 minuti si avrà sito + backoffice di admin pronti all’uso e questa rapidità non è da sottovalutare.

A questo punto possiamo iniziare l’editing della sitemap del nostro sito e la redazione dei contenuti ovviamente da un backoffice ad accesso riservato e via browser. L’interfaccia utente del BO è molto chiara e pulita, sempre coerente e si impara ad usarla in un baleno. Si possono ovviamente creare N utenti con diversi diritti e nell’ultima versione è possibile customizzare la UI in base all’utente loggato.

L’editing dei contenuti di una pagina avviene direttamente dentro il layout del sito reale cosi come poi andrà online. Questo è sempre stato un mio dubbio se fosse conveniente in termini di velocità e usabilità, ma devo dire che soprattutto quando le regioni editabili sono più di una (la main, dei box laterali, una news, un evento, ecc.) fa molto comodo scrivere direttamente nel posto giusto.

image

 

Dal punto di vista dell’implementatore si hanno due possibili modi di utilizzo: il cosiddetto “Portal Engine” permette ad un utente non evoluto (un htmlista senza conoscenze di programmazione .net) di preparare i layout sia usando decine di template già pronti sia inserendo nelle proprie gabbie delle webparts (in pratica dei controls ascx) che svolgono tutte le funzioni necessarie (regioni editabili, search box/results, image gallery, sitemap, subscribe, login, ecc.).

Se invece si è un po’ più smanettoni (Aspx/C#) allora conviene sicuramente usare il secondo modo chiamato “ASPX Templates” dove i templates ce li potremmo fare noi usando le Master Pages e le Webform standard di aspx (bisogna solo derivarle da una loro classe base). Anche qui possiamo avvantaggiarci dei mille UserControls messi a disposizione, da quelli molto generici (il CMSRepeater che ci permette di fare “quasi” tutto) a quelli specifici come il CMSMenu, CMSCalendar, ecc.

Non mi soffermo a parlare del contorno esistente per il “golive” di un sito come ad esempio media libraries, staging, workflow di approvazione, permessi e diritti, reporting e statistiche: sono cose che ormai ci si aspetta da ogni CMS e qui sono comunque risolte e affrontate molto bene.

Oltre al modulo redazionale sono presenti ovviamente altri moduli che completano l’offerta: alcuni li ho testati (events, forum, polls, newsletters) altri come lo shop dell’e-commerce sembrano molto completi e avanzati.

Il mio sito dove lo sto usando non è sicuramente ad alto traffico, ma penso che la scalabilità non sia un problema, sia perché è usato da portali non proprio piccoli, sia perché curiosando nel codice (sia quello dato come source sia via reflector) si vede che ci hanno pensato bene.

Infine concludo con uno degli aspetti che secondo me rendono vincente questo prodotto: il supporto !
Sia a livello commerciale, ma soprattutto a quello tecnico la qualità dell’help-desk è fenomenale. A parte che la mole di documentazione (pdf, help online, help contestuale su ogni singolo campo, knowledge base, ecc) rende spesso auto-risolvibili i problemi, se proprio capita basta una mail al support e raramente ho dovuto attendere più di 24 ore per la risoluzione. E anche con la versione Free (dove ovviamente non viene dato supporto diretto via mail/phone) è possibile cercare nei forum della ricca DevNet per trovare spesso quello che si cerca.

Riassumendo: un ottimo prodotto, scritto bene, supportato benissimo, aggiornato continuamente (almeno due major release all’anno e continui HotFix appena vengono trovati dei bug); che rabbia non averlo scritto io :-)