No dia 29 de outubro, aconteceu o encontro da comunidade i-Educar. Foi uma apresentação com o objetivo de demonstrar a todos os presentes o que vem sendo feito no desenvolvimento do i-Educar, quais os problemas e as perspectivas de futuro, muitas delas opiniões pessoais minhas que tiveram boa aceitação de quem estava presente.
Além da boa aceitação, ótimas sugestões foram feitas. Não há dúvidas que a conversa presencial é a melhor forma de comunicação existente e esse Encontro foi fundamental para que os ali presentes enxergassem o que de fato acontece no desenvolvimento do projeto.
Toda o encontro foi filmado pelo pessoal da Secretaria de Educação de Cascavel/PR e está disponível no Archive.org. Os slides da apresentação estão no Slideshare. Tanto o vídeo quanto os slides estão disponíveis sob uma licença Creative Commons.
Como resultado, gostaria de destacar os seguintes pontos a serem discutidos. Escolha um assunto de seu interesse e ajude a fazer acontecer.
A maioria desses assuntos foram debatidos no encontro da comunidade, confira.
(Ah, repare que dá para comentar o texto, no final da página há uma opção para isso.)
Missão
Como disse na apresentação, precisamos criar a nossa identificação como comunidade. Para isso, nada melhor que criar uma missão desafiadora e estimulante, que seja capaz de comunicar em breves palavras a que o projeto i-Educar se propõe.
Fica aberta a discussão!
Links relacionados:
- Wiki: Missão
Instalador
Um instalador para o i-Educar está no topo da lista de pedidos. Existem diversas formas de criar instaladores de aplicações web: pacotes pré-compilados (.deb, .rpm), scripts ou até mesmo instaladores gráficos como os existentes para Windows, Mac e até mesmo Linux.
Cada um tem suas vantagens e desvantagens. O problema dessas opções hoje é o suporte de banco de dados. Outro ponto ruim é garantir que a instalação do banco de dados e do webserver não prejudique algum serviço que já esteja instalado no computador. É uma operação intrusiva que requer permissão de administrador.
A melhor alternativa é continuar a deixar a instalação das dependências como responsabilidade do usuário. Como o i-Educar é uma aplicação web, seria mais proveitoso criar um instalador web para o sistema, que iria verificar se os pré-requisitos estão devidamente instalados. Passos como criar o banco de dados e instalar o Apache não seriam de obrigação do instalador, que iria apenas criar as tabelas e fazer a configuração básica do i-Educar. É menos risco para o usuário que está instalando e muita complexidade a menos para a criação do instalador. Várias aplicações web possuem instaladores assim: Wordpress, Drupal, Joomla, Magento...
As outras formas não seriam descartadas, mas esse instalador seria prioritário antes de qualquer outra forma.
Uma página na Wiki já foi criada para documentar a evolução das ideias, com links para o histórico da implementação do instalador do Drupal. Um ticket registrará as decisões tomadas durante a implementação do instalador.
Links relacionados:
- Wiki: Instalador web
- Ticket 51 (requer login no Trac): Criar instalador web
Atualizar o banco de dados para as versões mais recentes do PostgreSQL
Esse problema é pré-requisito para o desenvolvimento do instalador. Basicamente o que precisa ser feito é o typecasting explícito nas chamadas de funções que recebam parâmetros do tipo TEXT no PostgreSQL. Foi uma alteração realizada pelos desenvolvedores do PostgreSQL que não foi muito bem anunciada. Está documentada no changelog da versão 8.3.
É preciso atualizar todas as chamadas a funções. É uma modificação difícil de ser testada.
Mais detalhes no ticket da tarefa.
Links relacionados:
- Ticket 52 (requer login no Trac): Atualizar suporte de banco de dados para versões mais recentes
API para módulos
Se o i-Educar não se transformar em um sistema modular, pouco espaço teremos para criar um sistema mais ajustável as diferenças de legislação (municípios, estados) e para as diversidades de necessidades existentes (prefeituras, ONGs, empresas privadas).
Repare: ONGs e empresas privadas (universidades e escolas particulares). Se modularizarmos o sistema, ele poderá ser implantado para setores além do governo, o que significa mais negócios.
Outro item, ainda mais importante que oportunidades de negócio, é a inovação. Com um sistema modular, desenvolvedores podem criar pequenas inovações, criando uma vasta gama de opções para personalização do sistema.
Você já viu isso antes: no Linux, no Wordpress, no Drupal, no Plone e até mesmo no seu celular.
O que precisa-se criar é um framework interno, um application framework. Esse é um assunto incipiente mas já existem alguns componentes sendo criados para descomplicar o desenvolvimento dessa funcionalidade.
Links relacionados:
- Wiki: Draft da API para o sistema de módulos da versão 1.X
- SVN (requer login no Trac): Componentes CoreExt
Desenvolvimento orientado a testes
Para mim, é o esforço com melhor custo-benefício. Desenvolvimento orientado a testes trás diversos benefícios: redução no número de bugs, melhores API, auto-documentação, maior facilidade para a reescrita de código (refactoring) entre outros.
Já temos testes de unidade, integração e funcional no i-Educar. Temos documentação de como instalar os softwares necessários e de como executar os testes. Os componentes que estão sendo desenvolvidos usam testes e possuem uma API menor, mais fácil de usar e melhor documentada.
Introduzir testes em código não desenvolvido para ser testado é difícil. Prova disso é a dificuldade de implantar testes no código legado. Diversos projetos open-source estão enfrentando o mesmo problema na adoção de testes, o que é comum. Mas é uma tendência que mostra-se (beneficamente) irreversível, principalmente em projetos com base de usuário grande.
Links relacionados:
- Wiki: Desenvolvimento orientado a testes no i-Educar, Visão Geral
- Wiki: Desenvolvimento orientado a testes no i-Educar, Instalando as bibliotecas necessárias
- SVN (requer login no Trac): Diretório de testes da branch de desenvolvimento dos componentes CoreExt
- Martin Fowler: Test-driven development
- ImproveIt: Desenvolvimento orientado a testes
- Dries Buytaert: We have a test framework for Drupal
- Dries Buytaert: Embracing test-driven development
- Joomla wiki: Unit testing
Code freeze sincronizado com o calendário escolar
Proposta feita pelo Prof. José De Lucca, da UFSC durante o Encontro. Um code freeze é, segundo a Wikipedia, "um período no processo de desenvolvimento ao qual as regras para se fazer mudanças no código fonte ou recursos relacionados torna-se mais estrita".
A ideia seria sincronizar o code freeze com o calendário escolar brasileiro, o que daria uma oportunidade de oferecer grandes atualizações no final do ano letivo e mais tempo para que todos estudassem a melhor forma de aplicar as atualizações.
É uma proposta a ser discutiva. Com o nível de contribuição atual não é aplicável mas deve ser discutida pensando no futuro.
Links relacionados:
- Wiki: Code Freeze
Links interessantes:
- Drupal.org: Drupal 7 code freeze
Criar meios para o usuário participar na documentação
Outra proposta do pessoal da UFSC (do Vagner, aluno do Prof. De Lucca). Seria realmente interessante possibilitar que o usuário final contribuísse com a documentação, por meio de um wiki, talvez.
Ideias a serem discutidas nos fóruns.
Integrar mais a comunidade de interessados
Muito se conversa sobre as prefeituras, os desenvolvedores, administradores de sistemas. Mas essa é apenas uma parcela da comunidade de usuários do i-Educar. Falta falar do professor, do nutricionista, do pedagogo. Faltam canais de comunicação entre a comunidade técnica e a diversidade existente de usuários finais.
Uma proposta seria criar fóruns específicos para esses grupos de interesses. Desses grupos, seria possível obter mais conhecimento da área (o domínio do problema). Seria um espaço para se discutir leis, processos administrativos, pedagógicos, entre outros.
Só falta definir quais são essa áreas e abrir os fóruns (ou o fórum) para discussão desses assuntos.
Aproveitar a expertise de projetos existentes
A razão de eu ter referenciado projetos como o Drupal e o Joomla é que eles possuem uma grande comunidade de usuários e estão continuamente melhorando seus métodos de desenvolvimento. O primeiro possui uma transparência incrível no desenvolvimento e está ficando cada vez mais popular. Mas ambos fazem algo muito bem: aproveitam a expertise de outros projetos.
A ideia é fazer o mesmo.
Existe muita gente na comunidade envolvida com educação, com conhecimento na área. Um pessoal da Secretaria de Educação do Estado de Goiás me revelou que eles tem um software que gerencia os dados de mais de mil escolas e se ofereceram a contribuir com o conhecimento adquirido em mais de 5 anos de projeto.
Os tópicos são bem diversos e o desenvolvimento de cada um será proporcional ao nível de contribuição da comunidade. São várias formas de contribuir (confira em nosso wiki em "Como contribuir").
11:55 AM, 17 Nov 2009 por Eriksen Costa Link Permanente
