17/06/2009
Projeto OpenSource: SuperCRUD
1. Como você inventou / criou o SuperCRUD ?
Aconteceu muito por acaso, estava trabalhando em um projeto pessoal quando
vi a necessidade de criar umas 7 entidades novas, daquelas bem simples tipo:
fabricante, marca, cor, etc. Comecei então a fazer um monte de copy-paste /
find-replace para cada entidade. Achei que rapidamente poderia fazer um
gerador de códigos Java com JSP assim aproveitaria o run-time do aplicativo
para ser meu engine de código e fiz uma página em JSP que recebia como
argumento o nome da classe e ela gerava o fonte em Java. O único copy-paste
que precisava fazer era do browser para o IDE... Deste processo fui
desenvolvendo uma ferramenta baseada neste conceito: usar JSP para gerar
código-fonte Java, porque não?
2. O que é o SuperCRUD ?
O
SuperCRUD se tornou um engine de geração de aplicativos CRUD (create, read,
update e delete) na Web. Ele tem como principais características:
- Pode gerar aplicativos CRUD com diferentes modelos de arquitetura: JSF
puro, Seam, Spring, EJB, etc.
- Possui um editor de entidades: você entra no site do
SuperCRUD, define
seu modelo de entidades e relacionamentos (em testes) e depois escolhe um
template de arquitetura. Quando clicar em gerar você vai receber um arquivo
zip contendo o projeto CRUD com o conjunto de tecnologias do template.
- Os projetos gerados pelo
SuperCRUD utilizam Maven facilitando a aquisição
das dependências e deployment em diferentes application servers.
- Estamos agora trabalhando em novas features como: plug-in para
Netbeans,
melhorando relacionamento / associação de tabelas, novos templates e a mais
irada é a possibilidade de no futuro se customizar os templates de
arquitetura on-line e depois fazer deployment em uma cloud, como Google App
Engine.
3. Quais os maiores desafios de criar um projeto OpenSource ?
Abrir seu código. Todos acreditamos que a ideia que tivemos é algo
sensacional e no primeiro e segundo anos de concepção da ideia achamos que
temos capacidade de tirar proveito comercial do software em curto prazo. O
problema é que software bom demora, mesmo com os ágeis gerenciando. Tirar
proveito comercial de uma idéia é algo que requer 10% de código e 90% de
energia de empreendedor. Abrir o código é a melhor maneira de manter sua
ideia viva, fluindo em diversas partes do mundo, dentro de uma atmosfera
comercial própria que está revolucionando as formas e contratos de trabalho,
conceito de localidade e posse.
4. Houveram colaboradores no projeto que efetivamente colaboraram ?
Apesar da comunidade hoje ter 300 membros, temos 4 colaboradores:
- Wagner Santos: plug-in do NetBeans
- Alessandro Lazarotti: sistema de zip e download do projeto além da
migração para Seam
- Edson Prestes: diversos apoios além do template de Spring
- Marcelo Felix: diversos bugs, muitos.
5. O projeto está no kenai.com, poderia contar como foi a disponibilização do projeto lá ?
Bem, estávamos no java.net anteriormente, agora estamos testando o
kenai.com. Já achava o Java.net excelente, principalmente porque temos um
grande nome e pessoa na gestão do grupo de ferramentas que é a Fabi Nardon.
Mas o
kenai.com com sua integração com NetBeans 6.7 promete... Estamos
usando Subversion no
kenai.com e no java.net era CVS. Tudo isso funciona bem
para o tamanho da equipe de desenvolvedores do
SuperCRUD.
6. Já foi criada alguma aplicação que foi colocada em produção com SuperCrud?
O próprio
SuperCRUD. Ele chegou em um ponto que usamos ele mesmo para
acrescentar features nele. O interessante é que as arquiteturas que estão
como template sim foram usadas em projetos de médio e grande porte da
Globalcode.
7. Qual você acha que é o maior benefício das pessoas que colaboram com um projeto Open Source ?
São várias:
- Aumentar sua rede de relacionamento;
- Trabalhar com pessoas de todo o mundo;
- Aumentar seus conhecimentos técnicos e adquirir experiência prática;
- Encorpar o currículo.
- Se você colaborar muito com projetos opens-source, como por exemplo o
JBoss Seam, e quiser trabalhar na JBoss suas chances são de 95% de conseguir.
- Melhorar seu inglês.