Craptaculous Web Framework

O Neal Ford começou uma discussão interessante sobre a criação de frameworks a torto e a direito que vemos por aí hoje em dia:

“Which web framework should I use?” If there were only 3, you could reasonable go compare them. When the number reaches 10 or 20, there is no time to go sample each one. Thus, paralysis sets in and you end up using Struts (again), or creating another version of your home-grown Craptaculous framework.

A discussão já foi parar até no InfoQ.

O que vocês acham? Será que alguns desenvolvedores não estão perdendo muito tempo re-inventando rodas? Será que isso não é um sintoma de falta de criatividade?

Falta de criatividade?

Pra mim isso é resultado da falta do que fazer, quem tem o que fazer não vai perder tempo inventando um framework mais do mesmo, vai é produzir aplicações que façam alguma coisa de futuro.

Isso é o ego do programador Java que acha que sabe programar e quer poder dizer um dia que criou um framework, porque criar frameworks é coisa de “programador avançado”. O problema é que ninguém disse a ele que não tem nada de avançado em criar mais um framework web baseado em actions.

Quem não gosta de competição deveria se mudar para cuba. É triste, pois até o nosso presidente e os seus amigos da esquerda acham que Cuba é um belo modelo. Só se for um belo modelo de prisão!

Abandonando a política e voltando rapidamente para tecnologia, se eu quiser criar um servidor web, um JForum, um cliente de email, etc. qual é o problema disso? Absolutamente nenhum! Não vou colocar uma arma na cabeça de ninguém para que usem. As pessoas podem ignorar, podem olhar, não gostar e ignorar, etc. E a não ser que eu copie linha a linha de algum programa já existente, o que seria um simples roubo, eu acho que precisarei de criatividade para fazer a coisa de outra maneira. Estou no aguardo de uma dica de um projeto que nunca ninguém tenha feito antes. De uma idéia totalmente inédita. Deve ter aos montes por aí, né?

Amigos: FREE WORLD !!! Cada um na sua, respeitando a liberdade do próximo. Diferentemente de um framework web, fazer um controlador MVC é muito fácil, por isso que há tantos. Eu não preciso conhecer todas as frutas do mundo para saber qual que eu gosto mais ou qual que eu quero comer hoje.

As pessoas que são contra a competição, devem ser contra tb as privatizações, a redução da influência do governo na economia e na vida das pessoas, etc. Os países mais ricos e mais desenvolvidos são exatamente os mais liberais. Ou vcs querem baixar uma lei que é proibido fazer qualquer programa que já exista?

Acho que vou começar um projeto de um cliente de email, agora mesmo… Lembrem-se: se vc não gostar ou não usar, não precisa me pedir desculpas.

Recomendo também estudar um pouco mais sobre Darwin e sobre a sua teoria da “Seleção Natural”.

Competição com o que?

É tudo igual, não muda nade de um com o outro, o cara que vai escolher podia ir com um dado e daria no mesmo. São todos iguais.

E não existe darwinismo sem mutações ou alterações, os diversos frameworks com DNA igual vão morrer todos juntos. Isso é darwinismo.

A comunidade Java precisa deixar de se preocupar com besteira e procurar "atalhos’ e produzir coisas interessantes de verdade, já fazem 8 anos que o Struts saiu e todo mundo continua seguindo a mesma cartilha.

[quote=Maurício Linhares]Competição com o que?

É tudo igual, não muda nade de um com o outro, o cara que vai escolher podia ir com um dado e daria no mesmo. São todos iguais.

E não existe darwinismo sem mutações ou alterações, os diversos frameworks com DNA igual vão morrer todos juntos. Isso é darwinismo.
[/quote]

Mc Donald’s é igual a Bobs?, Tomcat é igual ao Jetty?, Euroda é igual a Outlook Express? Mentawai é igual a Struts? VRaptor é igual a Stripes?

Se tem alguma coisa igual ao Mentawai (mesmos conceitos, API e código) por favor me avise. Não vale falar que é igual por que é um MVC action-based, assim como não vale falar que é tudo hamburger, ou cliente de email ou servidor web. Java e Net ??? Pra que? Ruby e Python? Pra que? É tudo igual !!! :roll:

[quote]
A comunidade Java precisa deixar de se preocupar com besteira e procurar "atalhos’ e produzir coisas interessantes de verdade, já fazem 8 anos que o Struts saiu e todo mundo continua seguindo a mesma cartilha.[/quote]

Sinta-se a vontade para sugerir algo totalmente inédito. Talvez um framework web baseado em redes neurais ou algotimos genéticos. Devem haver vários projetos e idéias interessantes que ninguém nunca pensou ou realizou no mundo, né? E se eu não me engano, o RoR que é segundo muitos a coisa mais invadora do mundo atualmente é action-based, né?

Qualquer framework hoje em dia precisa de uma idéia inovadora tal como foi RoR. Criar outro RoR com um nome diferente é burrice. Criar outro Hibernate com nome diferente também é burrice.

Esse é o ponto que acho que o Guilherme quis dizer. Isso é falta de criatividade. Na verdade você não terá criado nada, tão somente copiado com outro nome e algumas features diferentes ao invés de extender alguma coisa madura já existente.

O Neal Ford chamou de Craptaculous aqueles frameworks “internos” que as empresas fazem por preguiça de conhecer o que existe no mercado, e não aos frameworks que surgem por aí no Java. Indo direto ao ponto: Mentawai não é Craptaculous!

Apesar de Neal Ford apontar o problema, a causa, na minha opinião, está longe de ser um suposto excesso de frameworks. Está mais na mentalidade de arquitetos de escolherem “os padrões” ou o que “está no mercado”, sem levar em conta os outros que existem. Porque quando a solução “de mercado” não funciona, o “único jeito” é fazer por conta própria, pois “não há outras alternativas”.

De resto, defendo saoj, vivemos em um mundo livre onde há espaço para pessoas criarem vários frameworks. Tem gente que acha que é tudo igual, mas eu não acho. Aliás é no Java onde se encontra as maiores variedades de frameworks web, uma mais diferente que a outra (há menos que você ache que, sei lá, GWT e Struts sejam a mesma coisa!).

Acredito que tantos frameworks estejam sendo criados, porque nenhum deles atende todas as necessidades dos seu usuários de maneira satisfatória.

O Stripes foi citado, então irei usá-lo como exemplo…
[fanboy-mode on]
Hoje, acredito ser o melhor framework MVC, Action-based, para desenvolvimento com interface WEB. Não imagino fazer nenhum freelance sem usá-lo:

  • Nada de configurações mirabolantes, preferência por convenções;
  • Se vira sozinho com propriedades indexadas; passagem de listas da página para a Action;
  • Reuso do seu model, nada de criar uma classe para represetar os dados da página, usa uma classe de modelo;
  • Suporte a validação com um conjunto de anotações super simples, não uma adaptação de um arquivo XML;
  • Integração com Hibernate;
  • Integração com Spring, para quem gosta;
  • Suporte a criação de wizards.

Duvido que qualquer outro framework MVC, Action-based, seja tão bom quanto o Stripes. Isto é, apresente as mesmas funcionalidades e facilidades.

Simplesmente perfeito, na minha opinião - claro.
[fanboy-mode off]

Ele foi criado para consertar os problemas que o Struts, a primeira versão ainda, possui.

Qual o problema dele e o porque dele não ser adotado em larga escala? Simples… Não tem marketing. Não tem a Apache ou a Sun passando a mão na cabeça e falando que vale a pena.

Meu ponto aqui é o seguinte: São criados muitos frameworks porque os que existem não atendem. Mas nem todos são amplamente usados porque não tem apoio de alguém com nome para exibí-los.

Temos que evitar o fanatismo. :slight_smile: Se vc conseguir me listar apenas uma coisa que o Stripes faz que o Mentawai não faz eu ficarei eternamente agradecido a vc. Sinceramente, isso aí que vc listou é básico de muitos frameworks que estão aí.

Vc acha que o Stripes é melhor que qualquer outro, porque vc só conhece o Stripes e não conhece o Mentawai e o VRaptor. :wink:

Eu tenho duas opiniões: uma baseada no desespero e outra na ignorância.
Falando da segunda, essas soluções são feitas por falta de procura ou visão técnica, com a chefia pedindo as soluções prontas e sem capacidade de tentar ver se algo adapta-se ao caso. Pena.
A primeira eu acho que é a mais ofensiva. O desenvolvimento começa com o pressuposto que algum framework não atende a necessidade X. Então para resolver essa necessidade sem necessidade de se submeter ao processo de validação de um projeto open-source normal ( que não costuma ser curto ), cria-se um novo framework próprio, que revoluciona fazendo a opção X como default. Mas outra empresa precisa também a necessidade Y que a primeira empresa achou desnecessário. E agora? Agora vai ser criado mais um framework que vai atender X e Y mas que vai ter o mesmo núcleo de intenções do framework inicial. Ao invés de haver uma colaboração em torno de grupos de ferramentas, ajudando algumas maiores a melhorar, acham mais fácil criar um novo porque assim eles tem “controle” do processo.

Onde que esses frameworks que comentam entram? É só dar uma olhada no fórum. Vira e mexe aparece mais um, que promete fazer algo que o outro não fazia ao invés de fazer o original melhor o suficiente. Cópias? Não sei. Mas originais, não.

Até!

Leonardo3001, você está se contradizendo. Olha o que você falou:

Depois você fala:

Se a solução de mercado não funciona, a alternativa é criar a sua solução por contra própria. E quando a solução de mercado funciona e alguém cria uma solução de contra própria só por… criar?

Continuando meu raciocínio, olha o que está no site do Mentawai (http://www.mentaframework.org/depinj.jsp):

Porque não usar Spring? Google Guice? PicoContainer? NanoContainer?

O fato do Mentawai ter reimplementado isso sem olhar para o que “está no mercado”, sem levar em conta os outros que existem, já o torna “Craptaculous”. Isso sem falar do resto. Sinto muito, não tem como negar.

Agora, minha discussão em momento algum era sobre Mentawai ou qualquer outro framework em especial.

Realmente eu me contradisse. Na primeira parte me referi a mercado como algo geral, tipo o GWT, o Stripes, o Seam, o Wicket, o Mentawai… todo mundo estando no mercado.

Na segunda frase, o “mercado” já era aquela visão distorcida de arquiteto e desenvolvedor certificado: mercado sendo apenas Struts e Faces. Daí, para alguns criarem uma solução própria quando apenas o Struts ou Faces não são capazes de fazer, é um pulo!

Guilherme, vc está um pouco equivocado e mal-informado.

Quando fizemos o suporte a Auto-wiring e IoC do Mentawai não existia GUICE. Então o GUICE do Google é um Scraptaculous também porque copiou o PicoContainer? Acho que não. Dá uma olhada no Guice que vc vai ver que ele segue a mesma linha do Mentawai.

WebWork e outros frameworks web SUPORTAM ou IMPLEMENTAM Ioc e DI. Isso não é ruim, pelo contrário, é muito bom. Se vc quer fazer uma salada de frameworks e misturar Mentawai com Spring, vc pode. O Mentawai, assim como outros frameworks web, possui essa integração.

Agora implementar auto-wiring e IoC, diferentemente de implementar ORM ou um pool de conexões, não é rocket science. Então o Mentawai desenvolveu a sua própria solução. No caso de envio de email, pool de conexões, template, cluster, file upload, etc. o Mentawa ABSTRAIU outros frameworks. Seria loucura implementar isso na mão.

O Mentawai não é um Scraptaculous simplesmente pelo o grande número de usuários que utilizam e estão satisfeitíssimos. Isso no mundo todo, não só do Brasil. Esses dias mesmos recebemos um feedback positivo de um usuário da alemanha, que contribuiu com um filtro de paginação. E o Mentawai é muito diferente de todos os outros frameworks que estão aí. Se interessando vc pode ler a nossa filosofia aqui.

E dá uma olhada com carinho no suporte do Mentawai a IoC e Auto-wiring que vc vai se surpreender, mas se quiser usar Spring pra isso, fique a vontade.

[caindo_na_pilha-mode on]
[color=red][caindo_na_pilha-boost /][/color]
[color=red][caindo_na_pilha-boost /][/color]

Eu não sou fanático :!: . Não é porque sua alma vai queimar no inferno por não usar o Stripes que eu sou fanático.
Você é quem é ateu. Foi você quem não encontrou o caminho a verdade e a Luz que o Stripes representa :lol:
[caindo_na_pilha-mode off]

  • O VRaptor é o mais parecido, em termos de facilidades, com o Stripes. Pelo menos a aplicação inicial, usando VRaptor, eles tem a mesma dificuldade;
  • O Struts 1, não entende nada que não seja String ou Integer. E passar um List para a Action é um parto-normal com a criança atravessada;
  • O JSF não se dá muito bem com nada que não seja um POST;
  • O Stripes não precisa que você configure as ações no Mentawai:
public void loadActions() {
//...
}

Isso é, quase, o mesmo que declarar as actions no struts-config.xml ou no faces-config.xml.

Já faz alguns anos que temos Convention over Configuration. Sinceramente hoje em dia não há como existir um framework web sem CoC, não só para a view mas para tudo. Seria como existir um framework web usando o FormBean do Struts.

Vc deve estar falando de CoC para a camada view.

O Mentawai, por default, segue as mesmas convenções do RoR.

http://www.mysite.com/User.add.mtw => forward to /User/add.jsp

E vc pode ainda criar suas próprias convenções implementando a interface ConsequenceProvider.

E se vc tiver que configurar, vc pode usando configuração programática.

Duas actions diferentes indo para a mesma página não vai ter como com CoC, né?

Mas sinceramente, eu já debati com os desenvolvedores do Stripes e acho ele um excelente framework. Só que o Mentawai tem uma filosofia mais FULL-STACK e o Stripes já afirmou que quer ser apenas um controlador MVC.

[quote=saoj]Guilherme, vc está um pouco equivocado e mal-informado.

Quando fizemos o suporte a Auto-wiring e IoC do Mentawai não existia GUICE. Então o GUICE do Google é um Scraptaculous também porque copiou o PicoContainer? Acho que não. Dá uma olhada no Guice que vc vai ver que ele segue a mesma linha do Mentawai.[/quote]

Ok, esqueça o Guice. Sobram todos os outros. Então eu repito, o Mentawai reinventa a roda. Continua sendo Scraptaculous. Acabou. Fim de papo. Zé fini. Você não tem como argumentar. É isso. Esquece. Eu não vou entrar começar a discutir com você porque você daqui a pouco vai começar a falar dos usuários satisfeitíssimos em todo o mundo blá blá…

Oops, já começou…

Os usuários satisfeitos não dizem nada. Até aí tem muita gente satisfeita com o governo Lula e nem por isso ele é bom. Esquece isso Sergio, não prova nada. Numa internet com vários milhões de sites com certeza alguém tem que gostar do Mentawai, assim como tem gente que gosta do Lula e assim como os caras do Jackass gostam de comer coco!

Eu não quero mais discutir com você sobre Mentawai. Aliás, repito que a discussão nem era sobre isso, mas parece que a carapuça serviu…

Vez que o meio TI é um ecosistema, logo pode se aplicar a seleção natural de Darwin, para sobrevivência daqueles frameworks que terão herdado características dos seus antepassados.

Assim é a evolução, um passo de cada vez e os saltos são em tempos espaçados. Quando estes acontecem, vemos iniciativas como RoR , Hibernate (citados); batendo à porta. Os conceitos são introduzidos aos poucos, alguns
experimentos são testados e a adaptação dos “seres” se dá em meio às necessidades : Negócio, Time-to-marketing, que deveremos responder.

Grande parte do Rails se apoioa no Service-to-Worker , com sacadas DDD e COC. À partir deste pontos, muitos outros projetos vão ser parecidos, poucos sobreviverão e de repente, haverá outro salto, resultado de uma série de experimentos.

Toda e qualquer visão parte de uma referência, então acho válido o estudo e construção de aplicações que servirão mais à frente para esse salto, que todos esperamos.

De qualquer forma, fico triste em ver no mercado brasileiro poucos produtos ainda, principalmente no que tange aplicações Web 2.0 ( jargão). Todo dia leio sobre diversas iniciativas de negócio e por aqui bem poucos desenvolvedores se arriscam a criar algo.

Ok, vc está certo. O Guice tb é um Scraptaculous porque re-inventou a roda. Os caras do Google são umas bestas porque deveriam ter usado Pico ou Spring.

Nem Jesus Cristo agradou a todos. O Mentawai não lhe agradou. Então me desculpe. Sorte a minha que ele faz um sucesso danado e agrada mais gente do que muito framework web por aí. :wink:

Saoj,

Você foi lá na discussão do Neal Ford dar sua opinião (até aí tudo bem) e fazer uma propaganda barata do seu framework web, que não adiciona NADA a discussão lá. Você não tem vergonha nessa cara não ?

E ainda chamou o Neal Ford de maluco.

HAHA

[quote=Frentic]
E ainda chamou o Neal Ford de maluco.
HAHA[/quote]

Não chamei ele de maluco. Tente ler mais uma vez o texto.

E fique tranquilo que tenho vergonha na cara sim, as vezes sou um pouco maluco (e isso as vezes pode ser uma qualidade), mas vergonha na cara eu tenho. :wink: