Cannonball 0.3.5 – novos conceitos para CMS e aplicações web
A versão 0.3.5 do Cannonball foi lançada. As mudanças desde o último lançamento foram enormes – o projeto foi totalmente refatorado, e o framework central (que nós já estamos chamando de Kernel) está cada vez mais isolado do resto da aplicação. Estou chegando perto de começar de fato o desenvolvimento do CMS (até então o foco do trabalho tem sido o framework – o sistema de Wiki, padrão na instalação do Cannonball, é utilizado apenas como prova de conceito).
Cannonball é um sistema de gerenciamento de conteúdo e um framework para desenvolvimento de aplicações web. Na verdade, o sistema de gerenciamento de conteúdo é (ou está se tornando) apenas um conjunto de aplicações independentes rodando em cima do Kernel do Cannonball, que por sí só não tem noção de como apresentar conteúdos ou lidar com ações complexas – tudo o que ele faz é administrar recursos e as aplicações que lidam com estes recursos.
O Cannonball implementa uma visão razoavelmente diferente a respeito do gerenciamento de informação na web, tratando cada recurso (URL) isoladamente, funcionando de uma maneira que superficialmente (ou pelo menos filosoficamente) nos lembra um sistema de arquivos (e cada vez mais um sistema operacional). Estou desenvolvendo um artigo a respeito dos princípios aplicados ao Cannonball para explicar melhor esta visão a respeito do tratamento de informação.
Resumidamente, o Cannonball trata os recursos como uma árvore hierárquica, similar a pastas num sistema de arquivos. Cada pasta pode ter diversos conteúdos e tem associada a si uma aplicação independente do kernel, que é a responsável por lidar com requests para este recurso. Desta forma é possível criar e alterar facilmente a estrutura de qualquer website/sistema, (simples como mover pastas no seu computador) além de simplificar o desenvolvimento de novas funcionalidades. Esta “cara” de sistema operacional é o grande conceito do Cannonball.
Outro detalhe importante é a noção que o sistema tem de conteúdo. Conteúdos podem se relacionar livremente com outros conteúdos. Por exemplo: um post de blog e um comentário deste post são, para o kernel, dois conteúdos de igual valor. Ao invés de marcar o comentário como um conteúdo “diferente”, ele cria o comentário exatamente como qualquer outro conteúdo, e depois define que conteudo A se relaciona como comentário com o conteúdo B. Esta abstração é um dos pontos chaves do sistema, permitindo que sistemas razoavelmente complexos sejam definidos não com criação de novas tabelas ou políticas totalmente diferentes para tratamento de informação – ao invés disso, cada aplicação pode simplesmente relacionar os “conteúdos” da maneira como for necessário, e tratar estes relacionamentos internamente, aumentando em muito a concisão do sistema e das informações que ele administra.
A versão atual ainda é alfa. Alguns detalhes importantes ainda precisam ser definidos e estamos trabalhando nisto, prevendo que o software deve passar de alfa para beta na versão 0.4. No entanto, algumas mudanças já foram feitas para facilitar a instalação – agora é possível instalar o Cannonball em subdiretórios, entre outras coisas. Vale tentar!
Fica a URL do projeto no SourceForge: http://sourceforge.net/projects/getdown