Questo sito web impiega cookie tecnici e di profilazione, proseguendo nella navigazione si acconsente al loro utilizzo [info] chiudi

Dopo due anni di duro lavoro (in collaborazione con Chialab) abbiamo finalmente pubblicato e rilascato la prima beta pubblica con licenza open source del progetto BEdita: un framework per creare applicazioni Web pensato per il Web2.0, che ambisce a diventare uno strumento di riferimento per il prossimo Web3.0 e per il futuro Web Semantico

La beta scaricabile la trovate su http://www.bedita.com/be-download

Framework o CMS?

BEdita presenta molte analogie con i cosiddetti CMS (Content Management Systems) e spesso è presentato così per semplicità, ne rispetta infatti (almeno in parte) la definizione: a tool that enables technical and non technical staff to create, edit, manage and finally publish a variety of content (such as text, graphics, video, documents etc). Con la differenza che lato publishing non fornisce volutamente una soluzione di default finita e univoca.

Una buona definizione di framework software ci può aiutare a capire meglio: a framework is incomplete, though concrete, driving solution to recurring high-value problem. In questo senso BEdita è:

  1. incomplete – non è uno software che da solo risolve un problema/bisogno di un utente; piuttosto è un potente strumento per [web]designer/[web]developer che vogliono creare applicazioni frontend;
  2. driving solution to recurring high-value problem – è utile in tutte le situazioni in cui debba costruire un'applicazione (frontend) in cui è necessario gestire contenuti complessi e multimediali, e le loro relazioni semantiche; evita a un designer/developer di dover affrontare e risolvere tutte le tipiche problematiche correlate.

Architettura e principali features

A livello architetturale gli elementi fondamentali del semantic framework sono due:

  1. un'applicazione Web di backend per la redazione dei contenuti e delle loro proprietà e relazioni semantiche, con un'interfaccia utente innovativa per l'ergonomia tramite l'associazione cromatica fra tipologie di oggetti, l'uso estensivo del drag'n'drop e altre tecniche AJAX;
  2. un API di frontend, servizi e specifiche per creare applicazioni frontend; con interfaccia Web in prima battuta, ma anche desktop/mobili sfruttando, per esempio, l'interfaccia nativa REST/XML.

L'applicazione backend è unica ed è la medesima per ogni installazione del sistema o istanza, le applicazioni frontend sono costruite tramite un'API ed ereditano dal core del sistema classi Model e business logic: possono essere poche linee di codice PHP o strutture più complesse. Questa separazione è una scelta fatta per ragioni di sicurezza, efficienza, scalabilità e per lasciare maggiore libertà possibile al lavoro del designer/developer.

Riassiumiamo di seguito le caratteristiche/features più interessanti del sistema nel suo complesso:

  • internazionalizzazione completa: gestione di contenuti e interfaccia utente in qualunque lingua (tutte le lingue definite dallo standard ISO-693-3 sono in teoria supportate) – lato UI è utilizzato il formato gettext, mentre per oggetti/contenuti è stata creata una struttura dati dedicata;
  • sistema a oggetti: ogni tipo di contenuto dentro BEdita è un oggetto, che può essere taggato, categorizzato, tradotto, geolocalizzato; quindi non solo documenti, ma anche immagini, video, eventi, schede anagrafiche, gallerie multimediali, newsletter...
  • estensione oggetti: possibilità di creare nuovi tipi di oggetti, possibilità di aggiungere proprietà custom tipizzate agli oggetti stessi;
  • modularità: moduli software specifici per task e tipi di contenuti differenti (cioè multimedia, events, news, administration, publishing, addressbook, newsletter,...)
  • posibilità di creare relazioni semantiche libere fra oggetti;
  • sistemi di autenticazione interno o esterno/pluggable tipo LDAP o OpenID;
  • gestione integrata di sistema di newsletter (modulo dedicato);
  • statistiche redazionali, integrazione di statistiche con sistemi come Google analytics, Piwik e log del web server (apache logs);
  • granularità di accesso: definizione dinamica di gruppi di utenti con accesso in lettura/scrittura ai singoli moduli software;
  • interfaccia XML/REST e JSON nativa per gli oggetti pubblicati;
  • ogni oggetto è identificato da un nome proprio alfanumerico detto nickname che può essere usato nelle URL e applicazioni frontend per referenziarlo; è l'equivalente semantico dell'ID;