Processo de Criação de um Framework

Gente, desculpem, mas acho que esse post vai sair mais como um desabafo…

Eu tenho um medo terrível na minha vida profissional, muito embora eu tenha começado a pouco tempo (menos de um ano): eu não gostaria de ser um mero “usuário das APIs dos outros”. Eu tenho várias idéias que eu gostaria de colocar em prática, eu gostaria muito de poder contribuir significativamente para a comunidade. A questão é que eu não sei ao certo por onde começar…

Faço graduação em Análise e Desenvolvimento de Sistemas numa faculdade excelente, o Instituto Infnet aqui no Rio. É um curso muito bom e completo, bem alinhado às necessidades do mercado e tudo mais (por exemplo, o voucher pra SCJP tá incluso na mensalidade da graduação). Mas eu queria ir além disso. O problema é que, por questão de tempo e idade, eu não tenho como agora, aos 26 anos, efetivado e com casamento marcado, parar tudo e começar um curso de Ciência da Computação.

Eu gostaria de conhecer o processo de concepção e criação de um framework. Eu tenho uma idéia para um que gostaria de colocar em prática, mas não tenho a menor idéia de por onde começar, e principalmente do quê estudar.

Quais são os conhecimentos necessários? Um conhecimento aprofundado de Padrões de Projetos basta? É preciso conhecer a fundo as “entranhas” da plataforma Java? É fundamental ter uma formação específica em Ciência da Computação para isso?

Gostaria de dirigir essa pergunta especificamente aos desenvolvedores do framework VRaptor, que admiro muito. O que foi necessário pra colocar em prática esse projeto?

Mais uma vez, desculpem o “desabafo”… :smiley:

\//

Não tenho nada a ver com o desenvolvimento do VRaptor, mas conheço algum material que pode te ajudar:

Suporte ao desenvolvimento e uso de frameworks e componentes
De uma olhada a partir do capitulo 3

Evolving Frameworks: A Pattern Language for Developing Object-Oriented Frameworks
Bem interessante, mas tente achar o artigo na original que é mais completo.

Olá Thiago,

para fazer um framework (ou qualquer projeto opensource) não é necessário ter formação em computação…

o que você precisa é:
-identificar alguma ferramenta que você usa no dia-a-dia que não está do jeito que você gostaria
-tentar melhorar essa ferramenta, contribuindo para o projeto dela de alguma forma
-se o anterior não for possível, criar a sua própria ferramenta baseada na anterior (evoluir o código ou criar uma que faz a mesma coisa) consertando o que você acha de errado nela.

mas por padrão é: não crie um framework, contribua para os frameworks já existentes…

se quiser contribuir para o VRaptor será muito bem vindo, e se não souber por onde começar podemos te ajudar.

[]'s

Lucas seria bom um livro do VRaptor… com detalhes técnicos… por que você e o pessoal da Caelum não fazem ?

Complementando o que o Lucas disse, você não precisa nem mesmo programar para contribuir com um projeto. Você pode, por exemplo, ajudar na documentação, dar idéias e pitacos sobre novas funcionalidades, ajudar nos testes, etc. Não é apenas de programação que vive um projeto.

Quanto ao que o Lucas falou de contribuir ao invés de criar, isso é verdade em termos. Nada te impede de fazer um mini-framework-tabajara para brincar, estudar e aprender alguma coisa.

Mas ajudar em um projeto já existente é muito interessante. Você pode, por exemplo, quando usando alguma ferramenta detectar alguma coisa que possa ser melhor, ou quando detectar um bug abrir uma issue/bug report, etc…

Muito obrigado! O material é bem interessante mesmo. Gostei dessa idéia de uma “linguagem de padrões” para frameworks.

Lucas, eu gostaria muito de poder contribuir com o VRaptor, até como forma de aprendizado. Só não sei, realmente, como posso ajudar. Não sou um iniciante em programação, já tenho lá minha experiência, mas também ainda não sou um super guru da Máquina Virtual (um dos meus sonhos é um dia programar em bytecode “na unha”… hehehehe :wink:). Mas no que eu puder ajudar, estou à disposição!

Adianta, como forma de estudo, eu baixar os fontes do VRaptor e ir estudando ele pelo debug?

A idéia para o framework que tenho nunca vi implementada. Seria uma ferramenta de prototipação, como o scaffold do Rails, porém altamente configurável e como alvo a plataforma Java. Seria algo do tipo: você seleciona o framework de visão (jsp, jsf etc.), o de controle (jsf, struts, vraptor…), o da a lógica de negócios (POJOs, EJBs…), a solução de persistência, e então os atributos da entidade, e a ferramenta geraria o modelo, o script de migração pro banco de dados e o CRUD completo, da visão ao banco. Por baixo, ele usaria o Maven ou o Ant pra gerar o projeto e as tarefas automatizadas.

A questão é justamente saber por onde começar…

o debug é um dos jeitos de entender como o VRaptor funciona sim… mas não adianta tentar entender tudo, pq o VRaptor faz bastante coisa…

o ideal é tentar entender como uma funcionalidade específica funciona…

para fazer o seu framework, pense num mínimo que vc precisa fazer pra ele ser útil e implemente… por exemplo: faça ele gerar as classes vazias nos pacotes certos, dado um nome de modelo… quando isso estiver funcionando, vá adicionando funcionalidades… se possível crie uma lista de funcionalidades que vc espera do seu framework (vc pode usar a página de issues do seu projeto no github por exemplo)

enfim, vá evoluindo incrementalmente o seu código, sempre testando e refatorando…

Beleza, Lucas, vou começar assim mesmo, num processo incremental.

Existe algum “rito formal” pra se iniciar um projeto código aberto? Tipo, uma “mensagem oficial de abertura” em alguns lugares específicos? Tipo, pra “anunciar ao mundo” o projeto e convidar colaboradores?

Quanto ao VRaptor, mais uma vez digo que estou disposto a ajudar!

rito formal não…

se você conhece git, você pode criar um projeto no github e abrir um post aqui no GUJ anunciando…

qto ao VRaptor, você pode começar pensando numa feature que vc gostaria que ele tivesse e tentar implementar…
se preferir tem uma lista de issues, vc pode pegar alguma daqui:

[]'s

[quote=thiagobaptista]
Eu tenho um medo terrível na minha vida profissional, muito embora eu tenha começado a pouco tempo (menos de um ano): eu não gostaria de ser um mero “usuário das APIs dos outros”. Eu tenho várias idéias que eu gostaria de colocar em prática, eu gostaria muito de poder contribuir significativamente para a comunidade. A questão é que eu não sei ao certo por onde começar…[/quote]
Complementando o Lucas, você deve ser um mero “usuário das APIs dos outros”, pelo menos por um bom tempo, justamente para evitar inventar a mesma roda de maneira pior que os concorrentes. E a tarefa é bem grande pois esses outros são muitos outros.

Acho que a maior questão de trabalhar com código de terceiros é entender por que eles fizeram daquela forma, como que um framework que veio depois deles melhorou esta forma de fazer e tem uma solução melhor/alternativa para o mesmo problema. A partir daí você agrega mais idéias ao teu projeto, e verifica se as tuas idéias originais vão funcionar ou não.

Compreendo. Mas o meu medo é ficar somente restrito a isso. Vejo muitos colegas meus de faculdade e trabalho que não têm essa ânsia.

Por falar nisso, tentei rodar o VRaptor direto dos fontes mas o Spring resolveu que não quer deixar… hehehe

Mas isso é assunto pra outro tópico.

Também quero ajudar com o vraptor ou mesmo stella, tenho tempo e disposição, vou começar os estudos sobre o vraptor especificamente, stella já fiz uns testes…
se for viável minha participação estou por ai online…:slight_smile:

dê uma olhada nos fontes do VRaptor, e na lista de issues,
e tente pensar em como vc resolveria alguma delas qualquer…

se não tiver idéia, tente achar qual é a parte do vraptor responsável por aquela funcionalidade, ou grupo de funcionalidades…

tente ver como o VRaptor faz as coisas dele…

aí qqeer dúvida é só falar que eu tento responder :wink:

Blz…baixei o codigo fonte do vraptor no github…vou começar a estudá-lo…vou passar um bom tempo estudando e pensando em algo(melhorias, resolver problemas…), em fim …msm que pareça que eu sumii…:slight_smile: …eu naum sumiii… to estudando e acompanhando …quando eu chegar a entender bem o vraptor e o que ele usa… eu entro em contato para me engajar de verdade…vlw… e se eu tiver duvida eu pergunto msm…

ok, muito obrigado =)

Eu, como um mero apaixonado pelo Vraptor fico feliz em ver a comunidade cada vez mais crescendo.

lucas,

Como eu faço para abrir o código que está no github no eclipse ou vc usa só o editor de texto?

código do vraptor!

vc pode baixar o plugin do git, e usar essa url:

git://github.com/caelum/vraptor.git

Tbm adorei o VRaptor pelo que vi, vou começar a utilizá-lo em breve, e gostaria muito de contribuir com ele, se possível :slight_smile: