Javascript UI: muitas opções, mas poucas com futuro

Fui Sou um fã da biblioteca Prototype: acompanho o desenvolvimento e evolução da mesma desde 2004, para mim foi sempre a mais organizada, com melhor documentação, a que mais faz sentido, com melhor divisão dos seus objetos (aliás, totalmente orientada a objetos).

Por diversas razões, ela – e quase todas outras bibliotecas javascript – perderam a batalha para a jQuery. Em grande parte, mas não exclusivamente por isso, pelo conceito jQuery javascript for designers (o qual nunca fez o menor sentido, mas serve para deixar claro que é uma biblioteca simples).

Bem, com as UIs, o negócio é mais embaixo ainda. Vejo pouquíssimos projetos fazendo uso completo delas. São sub-aproveitados, por diversos motivos. Um deles é que programador frontend na sua grande maioria (isso é constatação, não achismo) não tem formação acadêmica de desenvolvedor (mas isso é assunto para outro post) e, com isso, não sabe avaliar nem implementar um sistema a partir de um framework. Outro, é culpa dos próprios frameworks:

  • ExtJS: sempre me pareceu ser a “Prototype” das UIs: muito bem organizada, boa documentação, estável. Mas sempre me passou a impressão de estar longe da comunidade, sem criar um ambiente e estimular que os desenvolvedores façam uso dela
  • Google Web Toolkit: parece que a complexidade da UI do Google não agradou aos desenvolvedores, além do que é voltada majoritariamente para o lado “ajax” das aplicações, esquecendo que javascript é muito mais do que isso
  • Prototype UI: jamais decolou com a perda da Prototype para jQuery, o projeto há muito tempo não sofre atualizações

O que sobrou? Bem, a jQuery UI e Yahoo UI. São as duas que eu vejo sendo mais utilizadas em projetos – mesmo que em partes – e que são atualizadas mais constantemente (ambas sofreram atualizações nesse início de ano).

A UI do Yahoo me lembra bem a ExtJS em termos de organização e qualidade na documentação, além de estar apoiada numa gigante do mercado e estar há anos disponível para uso dos desenvolvedores, com um roadmap muito consistente de atualizações, melhorias e correções.

Já a jQuery UI, apesar de ao meu ver sofrer os mesmos males da biblioteca na qual está apoiada (divisão confusa entre as funcionalidades, documentação falha), por exatamente estar apoiada na jQuery, é muito fácil de ser usada e para quem já está acostumado com jQuery, nem vai parecer que está usando uma UI: acaba parecendo que está usando plugins.

O quê usar? Se você quiser fazer a escolha fácil e não arriscar, vá de jQuery UI na hora. No mínimo, vai ter a facilidade da jQuery aliada a inúmeros profissionais que a conhecem já, ou seja, terá uma rede de troca de informações muito maior do que com a Yahoo UI (que eu pretendo tentar usar em algum momento, mesmo sabendo que ela pode ser a Prototype da vez…).

Ferramentas para desenvolvimento PHP

Encontrei um ótimo post que faz várias listas de ferramentas de desenvolvimento PHP, agrupadas pelas categorias:

  • Aceleradores
  • Build sytems
  • Código
  • Bancos de dados (frameworks de persistência)
  • Debug
  • Desenvolvimento
  • IDEs
  • Segurança
  • Setup
  • Testes
  • Cheat Sheets

Sinceramente, nunca usei nenhuma das listadas nesse post – ainda sou meio old school, e programo usando o Eclipse. Para persistência de dados, usei já o Lumine – um ótimo framework nacional. Além do que, como não trabalho com PHP todos os dias, não tenho como acompanhar todas as mudanças e conhecer as ferramentas.

Mas sei que muita gente que passa por aqui come PHP no café-da-manhã

Referência: http://www.w3avenue.com/2009/08/26/really-useful-tools-for-php-developers/

8++ perguntas para o Julio Greff

Conheci o Julio através dessa vida de procurar referências no Google sobre PHP e javascript! Quando vi, estava no blog dele, vendo posts sobre (as bibliotecas javascript) Mootools e jQuery e, depois, me deparei com o framework MVC de autoria dele, chamado Spaghetti!
Já troquei muitas idéias com ele a respeito de diversos assuntos relacionados ao mundo de desenvolvimento web, desde implementações como a vida de trabalhar fazendo freela. Ainda, por coincidência, fomos convidados para escrever sobre bibliotecas javascript numa matéria da (revista) TI Digital.

Lá vão as perguntas!

1- Como você entrou no mundo da web, e como veio a se tornar um profissional da área?
Eu comecei na área da web de uma maneira bem boba. Lá por 2003 eu comecei a me interessar um pouco mais sobre informática, e quis expandir meus conhecimentos com algo mais do que Windows/Office. Procurei na internet muitas coisas que me pareceram muito interessantes: Photoshop, Corel Draw, Visual Basic, Delphi, coisas do gênero. Mas como eu não tinha acesso aos softwares, fiquei com a única coisa que eu havia encontrado e que eu podia aprender sem precisar de software algum: HTML. A partir daí comecei a pesquisar bastante sobre o assunto, lendo várias apostilas e vários sites, e descobrindo coisas novas como XHTML, CSS, PHP, JavaScript, até a minha descoberta do Ajax. Por algum motivo eu percebi que era isso que eu queria fazer, e passei a levar a sério. Com isso criei meu blog em 2006, onde comecei a postar sobre o que eu ia aprendendo. A partir daí comecei a fazer contatos, freelances começaram a aparecer aos poucos…

2 – Qual a importância dos webstandards?
Sem eles, não teríamos a web como conhecemos hoje. Embora ainda não tenhamos uma adoção completa, a coisa seria muito pior se os padrões não existissem. Eles nos permitem que tenhamos informação em vários dispositivos, e eles dão um pouco de significado à nossa informação. SEO, web semântica, scripts, todos eles se beneficiam dos standards.

3 – Quais as ferramentas que você utiliza no dia-a-dia (editores de texto, imagens, até mesmo o Sistema Operacional, etc…)?
Sou um usuário de Windows. Gosto muito de Linux, mas ele não gosta muito do meu hardware (e também não se dá bem com a Adobe). Já trabalhei em Mac, e foi uma experiêcia maravilhosa, mas meu bolso não gosta muito de maçãs. Nos editores, foi Komodo Edit no qual eu melhor me adaptei até agora. Multi-plataforma, leve, extensível, gratuito, tudo o que eu queria! Pra trabalhar com layouts, não troco meu Fireworks por Photoshop nenhum, por mais que insistam pra que eu faça isso. Sou tão fiel que uso o Fireworks até pra algumas edições de imagem. Também não abro mão de algumas outras ferramentas que vem me ajudando muito no quesito produtividade: Cygwin+Console2, Git, Launchy, VirtuaWin, MediaMonkey+SongBird (porque desenvolvedor nenhum sobrevive sem música!) e o Spaghetti* =D

4- Qual o impacto do Twitter no seu dia-a-dia online?
Eu sou um viciado em twitter. #fato. Desde que eu passei a utilizá-lo, ele virou parte do meu dia-a-dia. Uma das primeiras coisas que faço ao chegar no computador é abrir o TweetDeck e checar os últimos tweets do pessoal. Isso já me rendeu boas risadas, vários amigos, muita informação útil que dificilmente eu teria encontrado em blogs, e também uma boa quantidade de cultura inútil e tempo não-tão-bem-aproveitado…

5- Como você vê a diferença entre trabalhar em uma agência de web e como freelancer? Como é lidar com a liberdade de ser um freelancer mas não ter a “certeza” que um emprego fixo proporciona?
Se o meu dia tivesse 48 horas, eu diria que ser freelancer e trabalhar em uma agência seria a combinação perfeita: segurança e liberdade ao mesmo tempo. Mas a escolha vai da personalidade de cada um: ser um freelancer é assumir riscos, é ter disciplina, é trabalhar sempre sozinho. Trabalhar em uma agência é mais seguro, é geralmente mais divertido, aprende-se muito mais, mas pode-se aplicar com muito menos liberdades o que se aprende fora da agência. Eu ainda não escolhi qual dos dois caminhos pretendo seguir, por enquanto me mantenho nos dois, ainda não tenho a disciplina pra ser freelancer, ainda não me sinto seguro pra assumir certos riscos, mas muitas coisas na vida de agência ainda me incomodam.

6- Você é um dos que concebeu o Spaghetti. Fale mais a respeito dele (como ele surgiu, porque fazer um framework para “concorrer” com outros, etc…) ?
O Spaghetti* surgiu da nossa discordância com o framework que usávamos, o CakePHP. Ele era grande demais, pesado demais, e algumas coisas não se encaixavam na nossa maneira de escrever aplicações. O Spaghetti* surgiu, e se mantém até agora, totalmente sem pretensão de “concorrer” com outros frameworks, embora a gente goste de pensar que, se serviu pra gente, pode servir pra mais alguém também. Nossa filosofia é mantê-lo simples, sem encher de features sem que precisemos (basicamente, tudo que há no Spaghetti* surgiu da necessidade), e incentivar as boas práticas (embora algumas delas ainda não sejam facilitadas, como TDD, por exemplo). Hoje, além de me ajudar na maior parte dos meus projetos, o Spaghetti* também tem servido para MUITO aprendizado, pois nunca teria aprendido muita coisa do que sei hoje se não fosse na construção do Spaghetti*. E sei que há ainda muito mais a aprender, o que me mantém motivado a continuar a desenvolver. E, se a gente conseguir ajudar alguém no caminho, melhor!

7- Você utilizava muito Mootools, mas hoje em dia usa a jQuery (e em posts antigos do seu blog, você deixa claro que não era muito fã da jQuery). Hoje em dia, você utiliza muito a jQuery, não? Como se deu essa mudança? Foi uma imposicão do próprio mercado, onde jQuery é predominante, ou tem mais por trás disso?

Pra mim, em termos de frameworks JavaScript, não existe muito isso de mercado. Se você precisar, você aprende uma nova, pra mim é simples assim. Não aprendi jQuery por necessidade nem por imposição, foi apenas pra experimentar alguma coisa nova, por diversão. Foi aí que acabei gostando (e descobrindo que algumas coisas eu ainda não gosto). Não foi bem uma mudança, e sim mais alguma coisa pra minha caixa de ferramentas: utilizo em alguns projetos, mas Mootools ainda faz parte da maioria dos meus projetos, cada uma tem lugares em que se encaixam melhor. E, pra não permanecer sempre na mesma, logo aprendo Prototype também.

8- Você vê o PHP perdendo, em termos práticos, espaço para outras linguagens como Ruby e Python, ou acha que PHP ainda vai se manter por um bom tempo na frente das aplicações web do seu nicho?

Embora ainda esteja longe de ser significativo, acho que o PHP vem perdendo um pouco de espaço sim. Entretanto, por algumas de suas facilidades, ele ainda deve continuar na frente por mais alugm tempo. Só acredito que o PHP poderia ainda evoluir, o que não parece que vai acontecer tão cedo, já que a versão 6 não traz nada de muito interessante para algumas coisas que me incomodam nele. De qualquer maneira, o boom dos frameworks depois do Rails, apesar de diminuirem um pouco o uso do PHP, trouxe bastante evolução indiretamente. Eu também passei a prestar mais atenção no que eu escrevia só após o Rails!

Plus- Para onde você acha que a web vai, de uma forma bem ampla (tanto no que diz respeito a tecnologia, como formas de comunicação e aplicações)?
Eu acredito que a web caminhe muito para a plataforma móvel, com a integração de vários dispositivos, como câmeras, GPS, acelerômetro, tudo isso que já temos disponível e sabe-se lá mais o que vem por aí. Nem preciso falar no caminho que as aplicações desktop já estão tomando em direção a web. Também acredito, talvez em um futuro um pouco mais distante, na web semântica, uso mais inteligente da informação pelas aplicações. E, como não podia deixar de ser, acredito que o IE6 vai deixar de existir, e teremos somente browsers 100% standard-compliant =D

Reportagem sobre frameworks javascript na Revista TIdigital

Acabou de sair nas bancas a edição 3 da Revista TIdigital, e uma das matérias é sobre os 10 frameworks javascript mais utilizados. ExtJS, Prototype, jQuery, Yahoo UI estão na lista, entre outros.

Fui convidado a falar sobre Prototype. Ficou bem bacana a edição que fizeram, sem alterar o conteúdo do que respondi – foram 10 questões que viraram um texto corrido.

prot

Ah, e o Julio Greff foi quem falou sobre a jQuery! Muito bacana! Confirma Confiram ;)

De onde está vindo o include no seu framework PHP?

Estava ontem vendo alguns frameworks PHP que implementam MVC para integrar a JS Calls PHP neles. Achei que o processo seria mais fácil, pois estava com a idéia da aplicação em Java com a qual trabalho full-time aqui na MMCafé, onde é usado o Spring para MVC.
Cheguei a conclusão – talvez alguém me desminta algum dia – que ou você se adequa totalmente a esses frameworks (testei o CakePHP e o CodeIgniter) ou estará totalmente amarrado a estrutura de MVC imposta por eles.

Vou dar um exemplo prático da minha dificuldado com o Spring temos (aqui na aplicação da empresa) dentro do model uma (sub)camada de service, que é chamada pelo controller e que chama a camada do model que faz a persistência diretamente no banco. O controller tem por finalidade receber o request, validar dados, chamar o service (que por sua vez é quem vai diretamente no model, onde o Hibernate faz toda a persistência) e retornar para a view devida.   Ao mesmo tempo, temos ao lado do controller (no mesmo nivel) alguns ajaxFacades para que as requisições assíncronas (feitas via javascript, usando o framework DWR) passem por elas. Os ajaxFacades que chamam o service. Com isso, temos desacoplamento do que é requisitado por request normal (vem tudo pelo controller) quanto assincronamente. A vantagem? Quando chamo um controller ele redireciona para a view, quando chamo um ajaxFacade ele retorna para o javascript. Com isso tenho tratamento de dados diferentes – e adequados – para cada tipo de request.

Acredito que essa dificuldade se deva mais a inflexibilidade dos frameworks do que algo ligado diretamente a tecnologia. Então, fui atrás das especificações de alguns desses frameworks, e descobri esses diagramas dos includes feitos durante o processamento das páginas. Vale muito a pena como referência caso queiram entender melhor como funcionam!

Fonte: http://blog.fedecarg.com/2008/08/04/php-applications-where-is-the-include-coming-from/

Blogs que falam sobre… PHP

Minha (primeira) lista de blogs que falam sobre PHP. Alguns são voltados para dicas e tutoriais, enquanto outros falam sobre tendências e para onde o PHP está indo.
Em comum, uma visão madura dessa linguagem de programação (que hoje em dia é mais do que apenas isso).

  • Poomax (destaque para o post sobre Porquê usar PHP do Almir Neto)
  • Cleiver (meu amigo carioca fala sobre sua vivência no ambiente de desenvolvimento PHP, usando o framework CakePHP)
  • O Desenvolvedor (enquanto o Guilherme Serrano fala de ASP, eu falo de PHP por lá)
  • Julio Greff (além de muitas dicas, é o blog de um dos criadores do framework Spaghetti – veja esse post - , ótimo para implementar MVC na sua aplicação. Totalmente brasileiro)
  • Um Manifesto (programação PHP em alto nivel)
  • Tidbits (entre muito javascrip,, CSS e html, Danilo e Belinha escrevem bons posts sobre PHP)
  • Viva o Linux (muitos posts com dicas de códificação PHP)