O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na Internet
Analisando meu trabalho nos últimos 5 anos, identifiquei um padrão de ciclo de reforma tecnológica. Me parece que o tempo necessário para que uma nova tecnologia ou ferramenta para desenvolvimento web seja concebida e torne-se evoluída e estável o suficiente para uso em projetos profissionais é de aproximadamente 2 anos.
Isto é, se você deseja empregar sempre o que é tido como state-of-the-art, eu recomendaria adotar uma agenda de reciclagem e pesquisa de novas tecnologias a cada 2 anos.
Estou sentindo isso com algumas recentes jornadas de programação em Python no trabalho. Comecei com Python 2.0 e Apache/mod_python há 5 anos, se entender muito bem os requirementos e soluções para alta disponibilidade de aplicativos web.
Trabalhei em um projeto com versões primordiais do Rails por 2 anos. Neste tempo, o próprio Rails evoluiu consideravelmente o que justificou a continuidade de outro ciclo de 2 anos com ele, estando entre as versões 2.0 e a recentemente lançada 2.2.2.
Neste período mergulhei de cabeça em todos aspectos da arquitetura de alta disponibilidade, caching, reverse proxies, database replication e sharding, além de ferramentas de monitoração. As ferramentas deste universo ainda estão caminhando mas algumas já estão estáveis o suficiente para fazer parte da stack padrão.
Paralelamente, surgia o Merb, spin-off do Rails que visa ser mais leve, rápido e flexível. Em menos de dois anos, o Merb conseguiu um suporte impressionante da comunidade, e já chegou a uma versão 1.0. Para muitos, já é uma alternativa viável ao Rails.
Dentro da minha teoria, isso aconteceu por dois motivos:
1) O Rails não é bala de prata. Ou melhor, O Ruby não é. O Ruby é uma linguagem dinâmica que consome uma quantidade histérica de memória devido ao fato de tudo ser um objeto completo. O Ruby é uma linguagem totalmente OO, o que é uma vantagem para a engenharia e concepção de modelos complexos de programas, mas torna-se uma desvantagem em estabilidade e alta disponibilidade. Inevitavelmente, o GC do Ruby tem tarefa mais pesada que torna o fluxo de reciclagem de dados na memória mais lento, o que influi diretamente no número de requests por segundo que uma única instância de apliação Rails pode processar. Outra falha é a complexa ramificação da tree do código fonte do Rails, com uma bagagem muito grande de items desnecessários.
Isso não é problema para se manter uma aplicação Rails em pé, podendo ser resolvido com a expansão horizontal de servidores e ferramentas de monitoração que reiniciam processos Ruby de vez em quando (monit). Mas é fato que o custo operacional do Rails fica inviável para aplicações de tráfego muito elevado. Isso causou um êxodo de aplicações para outras plataformas mais leves e mais rápidas, como o bom e velho Python e mais recentemente, Erlang. O Twitter teve que receber um toque de Erlang este ano.
2) O Rails não fez muito esforço para profilaticamente acompanhar e atender essas necessidades. O consenso parece ser de que Rails de fato não deveria sequer ser considerado para isso e que outras tecnologias e linguagens vão inevitavelmente fazer parte de uma mesma arquitetura. Este consenso vem de grande coerência. O problema é que o Rails também deixou de acompanhar evoluções dentro da própria comunidade Ruby.
Rack, o equivalente do Ruby do padrão WSGI do Python, demorou para ser notado pelo Rails. O Rack, como API padrão de comunicação entre servidores e aplicações, traz inúmeras vantagens incluindo maior concisão de código, e foi prontamente adotado pelo Merb.
Basicamente, o Rails chegou a um ponto onde novas releases passaram a ser releases de manutenção e adição de recursos ainda essenciais. A mais recente versão, 2.2.2, inclui finalmente suporte embutido a I18n e patches que garantem thread safety.
***
O mais importante a se observar aqui é que Rails não recebeu muito refactoring em seus pilares de sustenção. Não há mais tantos backward-incompatible updates e não há esforço mental em tentar conceber maneiras mais inteligentes de se lidar com várias das necessidades básicas de uma aplicação web.
O Django infelizmente já está chegando nesse estado também. O Merb, agora em sua versão 1.0, deve provavelmente permanecer em sua fase experimental por mais um ciclo de 2 anos, enquanto detém sua qualificação state-of-the-art.
Quem continuar com Rails vai provavelmente se acomodar numa arquitetura já bem definida, estável e sem muitas mudanças futuras. Talvez daqui 2 anos venha o Rails 3.0, com refactoring completo. Um tanto improvável mas não impossível.
O Python está próximo mais uma vez de se tornar state-of-the-art com sua iminente versão 3.0, com dúzias de modificações state-of-the-art, e claramente o resultado de anos de pesquisa e o claro objetivo de tentar refazer tudo de maneira melhor.
A estagnação do Rails não é necessariamente algo ruim, é sinal que a tecnologia está madura e confiável. E particularmente, continuará sendo a opção padrão para a construção de sites nos meus projetos.
Mas para aplicações de domínio específico, ou serviços internos, Python torna-se a opção padrão pelos próximos 2 anos. Frameworks compatíveis com WSGI, como web.py, já estão bem maduros. E para ORM, SQLAlchemy já se tornou uma opção melhor que SQLObject. A maioria dos servidores têm adaptadores WSGI, até mesmo o nginx.
Analisando meu trabalho nos últimos 5 anos, identifiquei um padrão de ciclo de reforma tecnológica. Me parece que o tempo necessário para que uma nova tecnologia ou ferramenta para desenvolvimento web seja concebida e torne-se evoluída e estável o suficiente para uso em projetos profissionais é de aproximadamente 2 anos.
Isto é, se você deseja empregar sempre o que é tido como state-of-the-art, eu recomendaria adotar uma agenda de reciclagem e pesquisa de novas tecnologias a cada 2 anos.
Estou sentindo isso com algumas recentes jornadas de programação em Python no trabalho. Comecei com Python 2.0 e Apache/mod_python há 5 anos, se entender muito bem os requirementos e soluções para alta disponibilidade de aplicativos web.
Trabalhei em um projeto com versões primordiais do Rails por 2 anos. Neste tempo, o próprio Rails evoluiu consideravelmente o que justificou a continuidade de outro ciclo de 2 anos com ele, estando entre as versões 2.0 e a recentemente lançada 2.2.2.
Neste período mergulhei de cabeça em todos aspectos da arquitetura de alta disponibilidade, caching, reverse proxies, database replication e sharding, além de ferramentas de monitoração. As ferramentas deste universo ainda estão caminhando mas algumas já estão estáveis o suficiente para fazer parte da stack padrão.
Paralelamente, surgia o Merb, spin-off do Rails que visa ser mais leve, rápido e flexível. Em menos de dois anos, o Merb conseguiu um suporte impressionante da comunidade, e já chegou a uma versão 1.0. Para muitos, já é uma alternativa viável ao Rails.
Dentro da minha teoria, isso aconteceu por dois motivos:
1) O Rails não é bala de prata. Ou melhor, O Ruby não é. O Ruby é uma linguagem dinâmica que consome uma quantidade histérica de memória devido ao fato de tudo ser um objeto completo. O Ruby é uma linguagem totalmente OO, o que é uma vantagem para a engenharia e concepção de modelos complexos de programas, mas torna-se uma desvantagem em estabilidade e alta disponibilidade. Inevitavelmente, o GC do Ruby tem tarefa mais pesada que torna o fluxo de reciclagem de dados na memória mais lento, o que influi diretamente no número de requests por segundo que uma única instância de apliação Rails pode processar. Outra falha é a complexa ramificação da tree do código fonte do Rails, com uma bagagem muito grande de items desnecessários.
Isso não é problema para se manter uma aplicação Rails em pé, podendo ser resolvido com a expansão horizontal de servidores e ferramentas de monitoração que reiniciam processos Ruby de vez em quando (monit). Mas é fato que o custo operacional do Rails fica inviável para aplicações de tráfego muito elevado. Isso causou um êxodo de aplicações para outras plataformas mais leves e mais rápidas, como o bom e velho Python e mais recentemente, Erlang. O Twitter teve que receber um toque de Erlang este ano.
2) O Rails não fez muito esforço para profilaticamente acompanhar e atender essas necessidades. O consenso parece ser de que Rails de fato não deveria sequer ser considerado para isso e que outras tecnologias e linguagens vão inevitavelmente fazer parte de uma mesma arquitetura. Este consenso vem de grande coerência. O problema é que o Rails também deixou de acompanhar evoluções dentro da própria comunidade Ruby.
Rack, o equivalente do Ruby do padrão WSGI do Python, demorou para ser notado pelo Rails. O Rack, como API padrão de comunicação entre servidores e aplicações, traz inúmeras vantagens incluindo maior concisão de código, e foi prontamente adotado pelo Merb.
Basicamente, o Rails chegou a um ponto onde novas releases passaram a ser releases de manutenção e adição de recursos ainda essenciais. A mais recente versão, 2.2.2, inclui finalmente suporte embutido a I18n e patches que garantem thread safety.
***
O mais importante a se observar aqui é que Rails não recebeu muito refactoring em seus pilares de sustenção. Não há mais tantos backward-incompatible updates e não há esforço mental em tentar conceber maneiras mais inteligentes de se lidar com várias das necessidades básicas de uma aplicação web.
O Django infelizmente já está chegando nesse estado também. O Merb, agora em sua versão 1.0, deve provavelmente permanecer em sua fase experimental por mais um ciclo de 2 anos, enquanto detém sua qualificação state-of-the-art.
Quem continuar com Rails vai provavelmente se acomodar numa arquitetura já bem definida, estável e sem muitas mudanças futuras. Talvez daqui 2 anos venha o Rails 3.0, com refactoring completo. Um tanto improvável mas não impossível.
O Python está próximo mais uma vez de se tornar state-of-the-art com sua iminente versão 3.0, com dúzias de modificações state-of-the-art, e claramente o resultado de anos de pesquisa e o claro objetivo de tentar refazer tudo de maneira melhor.
A estagnação do Rails não é necessariamente algo ruim, é sinal que a tecnologia está madura e confiável. E particularmente, continuará sendo a opção padrão para a construção de sites nos meus projetos.
Mas para aplicações de domínio específico, ou serviços internos, Python torna-se a opção padrão pelos próximos 2 anos. Frameworks compatíveis com WSGI, como web.py, já estão bem maduros. E para ORM, SQLAlchemy já se tornou uma opção melhor que SQLObject. A maioria dos servidores têm adaptadores WSGI, até mesmo o nginx.
Valeu pelo post, Jonas. Eu acompanho os cíclos de uma maneira mais cínica:
1) Começa com alguém lendo-o uma parada num blog gringo (Darwin do céu, saber inglês é um diferencial????)
2) O sujeito abre uma comunidade sobre o lance. Nem ele entende o que é a parada. Mas não impede de abrir um XPTO-BR num Yahoo! / Google Groups / Orkut / uaterver.
3) Os primeiros a dominar a parada começam a se destacar na tal comunidade, dando suporte aos newbies.
4) Acontecem os cursos e palestras. Estes primeiros já atingem o status de "guru". Começam a dizer que "com a XPTO você ganha mais tempo, usa menos recursos, obtém mais fidelidade da clientela, e melhor de tudo, seu marido não ronca mais".
5) A parada vem lançando sucessivas versões cada vez com mais recursos. Mas a partir da terceira ou quarta versão, acaba as novidades relevantes. Dali então, é só cosmética. Os gurus já estão assegurando que o futuro da civilização humana depende da tecnologia.
6) Algumas pessoas começam a despertar o senso crítico sobre a parada. Enxergam que não é tanto assim. Começam a usar a tecnologia racionalmente, ao invés de usar metralhadora para matar bactérias.
Daí surge uma nova tecnologia e começa tudo novamente.
Como dizia Tales de Mileto, entre na Bovespa no momento errado, e sai no certo. Ou, como dizia o Barão de Rothschild, se há sangue nas ruas, compre terras...
From: arqhp@googlegroups.com [mailto:arqhp@googlegroups.com] On Behalf Of Irapuan Martinez Sent: Saturday, November 22, 2008 6:51 PM To: arqhp@googlegroups.com Subject: [arqHP: 41181] Re: Ciclo de Reforma Tecnológica
Como dizia um velho caboclo: tudo a ver com as pernas da minhoca.
2008/11/22 Antonio Jozzolino <antonio.jozzol...@gmail.com>
> Como dizia Tales de Mileto, entre na Bovespa no momento errado, e sai no > certo. Ou, como dizia o Barão de Rothschild, se há sangue nas ruas, compre > terras...
> 1) Começa com alguém lendo-o uma parada num blog gringo (Darwin do céu, > saber inglês é um diferencial????)
É interessante notar isso. Não só em programação, mas nas tendências (ou modinhas, como queiram) de design também. A gente tem acesso às mesmas coisas que eles, mas as coisas sempre evoluem primeiro lá fora.
Talvez eles tenham mais desse inconformismo do seu ponto 6 e comecem primeiro a fazer alguma coisa nova. Ou talvez porque o número de gente que desenvolve aqui é menor do que o que desenvolve no resto do mundo, por isso a ocorrência fora é maior. (espero que não tenha ficado confuso)
Interessante o artigo Jonás, e mais agora que o Rubi tá bombando como
"o futuro" em muitos blogs de desenvolvedores e até num proveedor de
hosting muito conhecido no Brasil (porraLocaWeb).
On 22 nov, 16:31, "Jonas Galvez" <jonasgal...@gmail.com> wrote:
> Analisando meu trabalho nos últimos 5 anos, identifiquei um padrão
> de ciclo de reforma tecnológica. Me parece que o tempo necessário
> para que uma nova tecnologia ou ferramenta para desenvolvimento web
> seja concebida e torne-se evoluída e estável o suficiente para uso
> em projetos profissionais é de aproximadamente 2 anos.
> Isto é, se você deseja empregar sempre o que é tido como
> state-of-the-art, eu recomendaria adotar uma agenda de reciclagem e
> pesquisa de novas tecnologias a cada 2 anos.
> Estou sentindo isso com algumas recentes jornadas de programação em
> Python no trabalho. Comecei com Python 2.0 e Apache/mod_python há 5
> anos, se entender muito bem os requirementos e soluções para alta
> disponibilidade de aplicativos web.
> Trabalhei em um projeto com versões primordiais do Rails por 2
> anos. Neste tempo, o próprio Rails evoluiu consideravelmente o que
> justificou a continuidade de outro ciclo de 2 anos com ele, estando
> entre as versões 2.0 e a recentemente lançada 2.2.2.
> Neste período mergulhei de cabeça em todos aspectos da arquitetura
> de alta disponibilidade, caching, reverse proxies, database
> replication e sharding, além de ferramentas de monitoração. As
> ferramentas deste universo ainda estão caminhando mas algumas já
> estão estáveis o suficiente para fazer parte da stack padrão.
> Paralelamente, surgia o Merb, spin-off do Rails que visa ser mais
> leve, rápido e flexível. Em menos de dois anos, o Merb conseguiu
> um suporte impressionante da comunidade, e já chegou a uma
> versão 1.0. Para muitos, já é uma alternativa viável ao Rails.
> Dentro da minha teoria, isso aconteceu por dois motivos:
> 1) O Rails não é bala de prata. Ou melhor, O Ruby não é. O Ruby é
> uma linguagem dinâmica que consome uma quantidade histérica de
> memória devido ao fato de tudo ser um objeto completo. O Ruby é
> uma linguagem totalmente OO, o que é uma vantagem para a
> engenharia e concepção de modelos complexos de programas, mas
> torna-se uma desvantagem em estabilidade e alta disponibilidade.
> Inevitavelmente, o GC do Ruby tem tarefa mais pesada que torna o
> fluxo de reciclagem de dados na memória mais lento, o que influi
> diretamente no número de requests por segundo que uma única
> instância de apliação Rails pode processar. Outra falha é a
> complexa ramificação da tree do código fonte do Rails, com uma
> bagagem muito grande de items desnecessários.
> Isso não é problema para se manter uma aplicação Rails em pé,
> podendo ser resolvido com a expansão horizontal de servidores e
> ferramentas de monitoração que reiniciam processos Ruby de vez em
> quando (monit). Mas é fato que o custo operacional do Rails fica
> inviável para aplicações de tráfego muito elevado. Isso causou um
> êxodo de aplicações para outras plataformas mais leves e mais
> rápidas, como o bom e velho Python e mais recentemente, Erlang. O
> Twitter teve que receber um toque de Erlang este ano.
> 2) O Rails não fez muito esforço para profilaticamente acompanhar
> e atender essas necessidades. O consenso parece ser de que Rails
> de fato não deveria sequer ser considerado para isso e que outras
> tecnologias e linguagens vão inevitavelmente fazer parte de uma
> mesma arquitetura. Este consenso vem de grande coerência. O
> problema é que o Rails também deixou de acompanhar evoluções
> dentro da própria comunidade Ruby.
> Rack, o equivalente do Ruby do padrão WSGI do Python, demorou para
> ser notado pelo Rails. O Rack, como API padrão de comunicação
> entre servidores e aplicações, traz inúmeras vantagens incluindo
> maior concisão de código, e foi prontamente adotado pelo Merb.
> Basicamente, o Rails chegou a um ponto onde novas releases
> passaram a ser releases de manutenção e adição de recursos ainda
> essenciais. A mais recente versão, 2.2.2, inclui finalmente
> suporte embutido a I18n e patches que garantem thread safety.
> ***
> O mais importante a se observar aqui é que Rails não recebeu muito
> refactoring em seus pilares de sustenção. Não há mais tantos
> backward-incompatible updates e não há esforço mental em tentar
> conceber maneiras mais inteligentes de se lidar com várias das
> necessidades básicas de uma aplicação web.
> O Django infelizmente já está chegando nesse estado também. O Merb,
> agora em sua versão 1.0, deve provavelmente permanecer em sua fase
> experimental por mais um ciclo de 2 anos, enquanto detém
> sua qualificação state-of-the-art.
> Quem continuar com Rails vai provavelmente se acomodar numa
> arquitetura já bem definida, estável e sem muitas mudanças futuras.
> Talvez daqui 2 anos venha o Rails 3.0, com refactoring completo. Um
> tanto improvável mas não impossível.
> O Python está próximo mais uma vez de se tornar state-of-the-art
> com sua iminente versão 3.0, com dúzias de modificações
> state-of-the-art, e claramente o resultado de anos de pesquisa e o
> claro objetivo de tentar refazer tudo de maneira melhor.
> A estagnação do Rails não é necessariamente algo ruim, é sinal que
> a tecnologia está madura e confiável. E particularmente, continuará
> sendo a opção padrão para a construção de sites nos meus projetos.
> Mas para aplicações de domínio específico, ou serviços internos,
> Python torna-se a opção padrão pelos próximos 2 anos. Frameworks
> compatíveis com WSGI, como web.py, já estão bem maduros. E para
> ORM, SQLAlchemy já se tornou uma opção melhor que SQLObject. A
> maioria dos servidores têm adaptadores WSGI, até mesmo o nginx.
> A estagnação do Rails não é necessariamente algo ruim, é sinal que > a tecnologia está madura e confiável. E particularmente, continuará > sendo a opção padrão para a construção de sites nos meus projetos.
On 5 jan, 10:32, donner.nine <donner.n...@gmail.com> wrote:
> por curiosidade, pq não usar o Merb?
só pra constar: rails e merb se juntarão em um power-megazorde, o
Rails 3.0.
a maturidade de juntar 2 ótimas soluções é algo que geralmente não se
vê no mundo opensource, onde geralmente acontece justamente o
contrário: forks, forks e... forks.