Uma das atividades mais interessantes que a web recente tem proporcionado (qualquer que seja o rótulo que a isso se dê – web 2.o ou não – ) está na capacidade crescente de sites dinâmicos que possibilitam a produção de conteúdo de forma coletiva, associada com a atualização imediata. Dentre esse grande mapa de opções, uma criação que consolidou um nicho particular foram os CMS (sigla para Content Management System), o que para nós ficaria como Sistema de Gerenciamento de Conteúdo. Os CMS’s já estão a um tempo considerável na estrada (desde 1995, praticamente) e existe uma infinidade de projetos em andamento que oferecem ferramentas completas para as várias modalidades de CMS. Se alguém por aqui tiver interesse em investigar essa variedade, recomendo vivamente o site OpensourceCMS, que é um portal que centraliza, classifica e disponibiliza instalações padrão de CMS’s para testes, dispensando o trabalho de instalação. Para quem teve a curiosidade ou o interesse de verificar o portal irá concordar com o fato de que são tantas opções que escolher um deles se torna uma tarefa realmente difícil.
A escolha é complicada porque exige um conhecimento técnico de quem faz a seleção a respeito do modo como foi projetado o CMS (em geral um conhecimento mínimo de php e mysql), de sua potencialidade, de sua adequação ao projeto de quem irá utilizá-lo, de sua segurança e de como ele poderá ser utilizado pelos demais membros (“leigos”) da comunidade que se deseja construir com o CMS.
Um dos pontos que pessoalmente considero mais complicado da adoção dos CMS para os mais diversos projetos, é o fato de que a sua arquitetura em regra impõem duras limitações quanto ao projeto do site a ser desenvolvido. Na maioria dos casos, muitos acreditam que basta um profissional competente capaz de adaptar o CMS para os objetivos do cliente, mas no meu entender essa visão acaba desconfigurando o propósito do CMS, bem como perdendo de vista a sua razão de ser. Afirmo isso sobretudo nos casos em que se vê um projeto web que tem todas as características de um site estático (e diga-se de passagem, o estático aqui pode ser tão bom quanto o dinâmico) e que adotou um gerenciador acreditando que só por sua complexidade e riqueza de recursos está fazendo uma escolha melhor. Nesses casos é importante lembrar que o aproveitamento e o efeito final de tais sites é inferior aos estáticos: mais vale um recurso simples, bem aproveitado, coerente e efetivo do que um conjunto grande de ferramentas mal empregadas, confusas e desconectadas.
Após expor todas essas básicas explicações e discutir esses pequenos assuntos, passo a abordar os CMS’s de uma perspectiva mais aberta e descomprometida, como se fossem umas reflexões mais soltas, um bate papo; mais para refletir em conjunto e debater com os eventuais leitores deste post. Lembrando sempre que estou aberto a outras opiniões e mesmo disposto a rever alguns conceitos em caso de argumentos relevantes.
Pois bem, começando a conversa, posso afirmar que minha escolha pelo Drupal como o CMS a ser explorado nesse bate-papo não é aleatória: dos gerenciadores que já experimentei, ele se mostrou como um dos melhores e mais interessantes. Outros famosos são o Joomla, o PhpNuke e o Xoops, entre outros menos conhecidos mas que são muito promissores também que são o CmsMadeSimple e o PhpFusion. Aproveitando que já comentei deles, o Joomla tem a desvantagem de ser muito grande e complexo para projetos de web pequenos, o PhpNuke é criticado por suas falhas de segurança e o Xoops por ser um CMS um pouco mais complicado de configurar do que os outros. CmsMadesimple e PhpFusion são bem interessantes e, caso não escolhesse o Drupal talvez optaria por um deles. A limitação deles está na simplicidade de sua arquitetura e na escassez de recursos comparado aos CMS’s mais tradicionais.
Convencionalmente, nos referimos ao Drupal como mais um CMS, mas eu acredito que uma de suas grandes vantagens está justamente no fato dele ir um pouco além das idéias e dos paradigmas que constituem os CMS’s. Para começar a conversa, o modo em que foi projetada a arquitetura do Drupal (uma visão do php orientada a objetos e um sistema modular) coloca a idéia de nó (node) como uma idéia realmente maravilhosa para a construção de sites dinâmicos. Como basicamente tudo está orientado a uma estrutura de nós (o que por fim gera uma árvore de dados) o administrador pode criar qualquer coisa dentro do site, tais como fóruns, multiplos sites, blogs diversos, micro comunidades e mais algumas coisas que ainda estão para serem criadas. Essa arquitetura possibilita que as pessoas interessadas possam desenvolver ou adaptar soluções que mais correspondam aos seus anseios e objetivos. O curioso da história é que supondo que o sujeito já resolveu as questões técnicas de instalar, configurar e deixar rodando de acordo um drupal, após tudo isso, provavelmente esse sujeito ainda vai se deparar com o desafio de pensar uma estrutura adequada para o funcionamento e gerenciamento do conteúdo de seu site. Parece fácil, mas a flexibilidade é tão grande que o sujeito se perde facilmente no momento de definir o funcionamento básico do site (workflow).
Todas essas considerações se tornam ainda mais pertinentes se o indivíduo que está interessado em CMS’s ou no Drupal estuda ou tem interesse em estudar php e mysql. Um pouco foi essa a idéia primordial deste post: me parece que se um sujeito tem interesse em estudar php e mysql não existe melhor escola do que encarar os CMS’s. Obviamente, tudo isso dentro da própria internet, sem gastar em nenhuma escola e no bom e velho estilo do autodidatismo. O sujeito pode começar pegando alguns livros introdutórios em comunidades de compartilhamento de arquivos tais como o orbitfiles ou o 4shared, e depois começar a escarafunchar os CMS’s. É certo que ao fuçar no núcleo destas aplicações web tais pessoas não irão encontrar os códigos mais simples, mas sim um conjunto bastante complexo de trechos programados. De fato é bem difícil e esses núcleos somente se tornam acessíveis no momento em que se entende bem os conceitos de função, a orientação a objetos e o projeto modular como um todo. Mas, mesmo diante disto, o que me parece justificar a sugestão é que os CMS’s já colocam diante de programadores ou não programadores uma grande parte do que é possível desenvolver com php e mysql e (consequentemente) o que é possível pensar em termos de internet voltada para a produção de conteúdo dinâmico e coletivo. Não apenas isso, muda até mesmo a nossa forma de pensar a estrutura dos conteúdos, o modo como armazenamos a informação, o modo como escrevemos, entre diversas coisas relacionadas. Ao estudar e se debruçar sobre um CMS’s com muita probabilidade vc entrará em contato com a comunidade de desenvolvedores e terá a oportunidade de encontrar muito material como tutoriais, aulas, audios e videos que há momentos em que parece que estamos diante de uma academia aberta – se alguém juntar e editar todo o conteúdo espalhado no site da comunidade e nos mais próximos a ela relacionado, todo o material vira facilmente um curso completo. Neste sentido, os handbooks da comunidade do Drupal, os videos e os podcasts do site Lullabot são uma grande contribuição (e por que não, um convite) para os interessados e ávidos por conhecimento na rede. É curioso como o cuidado que muitas vezes a comunidade investe na documentação do projeto acaba se transformando num ótimo material didático que possibilita que outras pessoas possam aprender e ter acesso. Para concluir, vale lembrar que há bastante material (tais como aulas sobre banco de dados, tutoriais, frameworks em php, etc) disponível em sites como google video, youtube, além de dicas ótimas que podem ser obtidas com uma pesquisa no del.icio.us (bem mais específico do que no google).
ps: não sei se vcs perceberam, mas esse texto, em muitas passagens, perpassa as questões do conhecimento, da aprendizagem e das novas potencialidades e desafios que a web tem trazido com cada vez mais força. Essa relação entre conhecimento, didática e web será o assunto do próximo post. Assim espero, abraço.