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?
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.
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 ). 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.
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!
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:
[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.
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…
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… …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…