Mostrando postagens com marcador TODO. Mostrar todas as postagens
Mostrando postagens com marcador TODO. Mostrar todas as postagens

domingo, 19 de agosto de 2007

Kraken

Como LuaWsgi é meu projeto de conclusão de curso da faculdade, ainda vai levar algum tempo para entrar em fase beta. Enquanto isso, modificações mais pesadas pode ser feitas.

E é o que tenho feito.

Por exemplo, o wsgi.listener passou a se chamar Kraken, nome escolhido num debate entre mim, Krisnatágoras Araújo, Claudio Torcato, Ulisses Campos e Walter Cruz.

Estou reescrevendo o Kraken em C com dois pontos em vista: 1reduzir a quantidade de dependências e 2adaptar seu funcionamento para ambiente multiprocessado, inicialmente só de memória compartilhada. O suporte a memória distribuída será inicialmente fornecido por OpenMosix.

Após a defesa do trabalho de conclusão, pretendo implementar no Kraken suporte nativo a ambiente multiprocessado de memória distribuída, mas esse ainda é um sonho distante.

Aproveitando a deixa, estou escolhendo outro nome pro módulo que trata do protocolo HTTP, atualmente wsgi.httpd. Sugestões são bem vindas!

Gostaria que fosse algo que tenha a haver com Kraken – sugestão de procura: mitologia nórdica.

Então nova versão de LuaWsgi demorará um pouco, pois estou reescrevendo o Kraken em C.

[]'s
Cacilhas

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

terça-feira, 3 de julho de 2007

Refatoração

Inicialmente escrevi LuaWsgi para trabalhar associado ao Kepler.

Assim, na versão 7.06.x, LuaWsgi tem como dependências Lua, LuaSocket, LuaFileSystem, Copas e lua-unistd.

No entanto mudei de idéia e estou refatorando o código.

As dependências passarão a ser nas versões posteriores:



Já tenho ele refatorado para funcionar assim, no entanto quero separar o tratamento do protocolo HTTP do tratamento de WSGI antes de liberar nova versão.

[]'s
Cacilhas