quinta-feira, 5 de julho de 2007

O que você NÃO gosta…

Duas coisas me motivaram a escrever LuaWsgi:

  1. Distração do stress pelo qual eu passava (sim! Programo para relaxar!);
  2. Havia coisas em outras ferramentas das quais eu não gostava.


Em Lua, o melhor projeto de framework para web que há atualmente é Kepler.

No entanto há coisas em Kepler das quais eu pessoalmente não gosto. O legal do desenvolvimento colaborativo é que as pessoas podem ajudar a mudar essas coisas.

Por exemplo, coisas que não são legais em Kepler 1.0 e 1.1, cujas mudanças já estão previstas para a versão 1.2:
  • O controle de sessão está na camada mais abstrata (CGILua). Será passado para camadas mais baixas na versão 1.2.
  • A interface SAPI será substituída por outra mais programável, WSAPI (ou KAPI, o pessoal ainda está discutindo o nome), que possuirá uma camada superior mais amigável que CGILua, chamada Orbit.
  • O módulo facilitador para AJAX (Sajax) não trabalha com sessão e está implementado na camada mais abstrata (CGILua). Na versão 1.2 será implementado usando WSAPI e de forma a permitir trabalhar com sessão.


É claro que é necessário um certo nível de controle para um projeto não virar um caos. Esse controle é ao mesmo tempo o ponto forte e o ponto fraco do desenvolvimento colaborativo.

Por um lado o controle mantém foco e concisão no projeto. Por outro lado é impossível agradar a gregos e troianos, e esse foco pode não ser o que você procura.

Chegamos à beleza do código aberto: se você não gosta de algo, pode fazer diferente por conta própria. O nome disso é diversidade.

Diversidade é o que garante continuidade na Natureza e o homem só é feliz em seus intentos quando aprende com a Natureza.

Por exemplo, Xavante – servidor web de Kepler – tem como foco permanecer pequeno e ser apenas um ambiente de desenvolvimento, como o objeto httpserver de Paste.

Assim Xavante e Copas são mantidos pequenos, rodando em um só processo, sem multithreading e sem criação de processos filho – usam uma combinação de corrotinas e tempo de expiração de sockets.

Nada contra, é um foco. Os coordenadores do projeto oferecem interfaces com outros servidores web para uso em produção.

Mas eu quero mais… e se você também quer mais, pode ajudar a melhorar LuaWsgi!

O foco de LuaWsgi é tirar proveito máximo de um ambiente multiprocessado, de memória compartilhada ou distribuída.

A idéia é que LuaWsgi use pthread para fazer multithreading (que em ambiente GNU/Linux já tira proveito de multiprocessamento per si) e crie processo filho (fork) quando necessário (LuaWsgi ainda não faz isso).

Chegamos aqui ao objetivo desta postagem: quais são suas sugestões para melhorar LuaWsgi?

O que você não gosta em LuaWsgi?

O que você não gosta em outros frameworks, não pode mudar e gostaria de ver implementando em LuaWsgi?

Vamos criar um TODO de coisas legais que podem ser implementadas em LuaWsgi. Você não precisa colaborar com código (se tiver algum código, ele será analisado com zelo, claro), ideias bastam – seja para acrescentar, seja para retirar.

Precisamos de ideias nesse momento.

[]'s
Cacilhas

4 comentários:

Krisnatágoras disse...

Salve salve Rodrigo...

Código aberto é massa justamente por isso: você pode melhorar aquilo que utiliza.

Não conheço nada de Lua, e estou me enveredando agora nos conceitos de servidores web de processamento distribuido.

Mas sempre quis participar de um projeto como esse(embora hoje ainda não tenha maturidade técnica para tal).

Gostaria de saber se existe alguma documentação do desenvolvimento da framework do lua.

[]'s

Claudio disse...

Tenho uma sugestão importante a fazer. Digo importante porque sinto falta dessa funcionalidade, seja no Tomcat, seja no TurboGears ou em vários outros que eu tenha utilizado.

O exemplo prático é este: Eu quero fazer uma aplicação de controle de acesso. Nela, o usuário se autentica e assim tem acesso a outras aplicações controladas por ela. Ao escolher uma aplicação, o usuário é redirecionado à esta. Caso a sua sessão expire, o usuário será redirecionado para a tela de login do sistema de controle de acesso.

Eu queria que aplicações independentes compartilhassem de algum modo a sessão do usuário.

La Batalema Pitonisto disse...

Salve! Kris e Torcato!

Quanto a documentação, ainda não tem muita coisa, porque o projeto é muito recente.

O melhor documento que você vai encontrar (por enquanto) será um artigo no Kodumaro.

Assim que tiver atualizado LuaWsgi para uma nova versão, vou publicar alguns exemplos aqui, com o marcador Samples.

Quanto a sua ideia, Torcato, de sessão compartilhada, gostei muito mesmo.

Vou começar a pensar num jeito de implementar isso, pois não parece ser tão difícil assim.

[]'s

Fábio Borges disse...

Sua visão sobre código aberto e diversidade é muito boa. Mesmo que os ventos e tempestades nos empurrem para outros caminhos, continue assim.

Grande Abraço,
Fábio