14 de julho de 2009

Mais um framework para python?

Sim, web2py é mais um framework para a linguagem python.

Só que com uma proposta diferente, pois ele herda conceitos do Ruby on Rails e do Django. Ele tenta obter o melhor dos 2 mundos e também faz opções particulares.

Ou seja, ele procura ser produtivo, rápido e seguro.

E por que eu escolhi esse framework que não é tão conhecido ainda?

Por alguns motivos. Alguns de ordem técnica, outros de ordem administrativa e outros ainda de ordem funcional.


Motivos administrativos
  1. Ele é auto-contido e não precisa de configurações especiais. Ou seja, roda em qualquer hospedagem compartilhada.
  2. Há compromisso com compatiblidade reversa. Em 2 anos de projeto, nunca a compatibilidade foi quebrada e o plano é continuar assim.
  3. Eu consigo tirar dúvidas direto com o criador dele e com desenvolvedores brasileiros (sim, nós também contribuímos).
  4. Tem suporte simples para internacionalização.
  5. Funciona sem complicação em Windows, Linux, Mac OS e até no Nokia N810!
  6. A comunidade responde rápido suas dúvidas.


Motivos funcionais
  1. Ele já tem embutida a geração automática de tickets para apontar erros em ambiente de produção. Nunca uma linha de código é mostrada ao usuário!
  2. A interface de administração da aplicação gerada é via web, mas você também pode trabalhar na linha de comando, se preferir. Bem melhor do que no rails, que tudo acontece só na linha de comando.
  3. Essa inteface web já conta com editor no próprio browser.
  4. Ele conversa com vários bancos de dados. Além dos batidos MySQL e PostgreSQL, tem também bancos "sérios" como IBM DB2, ORACLE, MS SQL Server e Informix. E para desenvolvimento, o prático SQLite.
  5. Proteje automaticamente sua aplicação contra cross-site scripting, injections, etc.
  6. Trata upload de arquivos grandes automaticamente.
  7. Trata formulários de forma simples e objetiva, inclusive com validações complexas junto ao BD.


Motivos técnicos
  1. Ao invés de ORM (Object-Relational Mapping) ele usa DAL (Database Abstraction Layer), o que proporciona maior poder e controle na manipulação dos acessos ao BD. Por exemplo, fica fácil fazer INNER JOIN e OUTER JOIN e os operadores ==, <=, >=, <> podem ser usados naturalmente.
  2. Ele roda no Google App Engine sem precisar de modificação em sua aplicação: http://googleappengine.blogspot.com/2009/05/web2py-support-new-datastore-backend.html
  3. Roda no Jython.
  4. Já vem com sistema de caching.
  5. Sua aplicação pode ser distribuída em byte-code (closed source).
  6. Tem MVC real, com os nomes corretos, ao contrário do Django.
  7. Eu consigo entrar no ambiente de produção usando o shell dele e gerar relatórios ad-hoc, sem necessidade de implantar rotinas. Isso ajuda MUITO, principalmente na fase de implantação do aplicativo.
  8. Eu posso programar em Python.
  9. Ao contrário do Django, não preciso ficar inserindo imports para usar as funcionalidades do framework.


Claro que o web2py não é perfeito.

Um ponto que ainda deixa a desejar é a documentação.
E esse é o principal objetivo desse blog: ajudar quem está começando a desenvolver com web2py.

[update em 20/outubro/2010]: A documentação melhorou muito desde que esse artigo foi escrito. O livro oficial do web2py está na 3a edição e disponível gratuitamente online.

9 comentários:

  1. cara muito legal sua iniciativa, estava estudando python e comecei a me interessar por web2py, esse blog será uma verdadeira mão na roda, parabens!!

    ResponderExcluir
  2. Vinicius,
    Parabéns pela iniciativa e conte comigo no que for preciso. Já estamos começando a usar o Web2Py em alguns sistemas aqui na empresa e posso te dizer que realmente vale a pena.

    Um grande abraço pra ti e sucesso nesta nova empreitada do blog.

    ResponderExcluir
  3. @matias, para mim também será uma mão na roda. rsrs

    @Leandro, ajuda é do que vou precisar! Tenho muitas dúvidas e creio que outras pessoas também têm. Obrigado pela disposição.

    --
    Vinicius Assef.

    ResponderExcluir
  4. Muito legal sua iniciativa, também estou aprendendo web2py e estou adicionando seu blog nos meus feeds.
    Também me ofereço para ajudar, é interessante ter material em português.

    ResponderExcluir
  5. @Leandro e @MoRiArTy, me mandem em pvt seus emails, ok? O meu tá na minha assinatura lá em cima, no início do blog.

    --
    Vinicius Assef.

    ResponderExcluir
  6. Só não gostei do comentário sobre "não-seriedade" em relação ao postgre :)

    Mas parabéns pelo post e pelo blog, despertou um interesse no web2py aqui! ;)

    ResponderExcluir
  7. Francisco, note que "sérios" está entre aspas ;-)

    Já que despertou o interesse, que tal experimentá-lo mesmo?

    Depois conte-nos o que achou.

    ResponderExcluir
  8. Pode crer, Vinicius.

    Estou no meio de um concurso (inserido num período entre as fases do mesmo ^^), assim que isso passar, eu dou uma estudada no web2py e rola um feedback. :D

    Abraços e parabéns pelo blog! ;)

    ResponderExcluir
  9. Vou dar uma olhada nele, agora que voltei a estudar Python.

    ResponderExcluir