sábado, 7 de julho de 2007

Pacotes para Slackware 11.0

Os seguintes apontadores levam aos pacotes necessários para instalar LuaWsgi e suas dependências sobre Slackware 11.0 (outras versões não foram testadas):



Sintam-se convidados a criar pacotes RPM e APT (.deb). =)

[]'s
Cacilhas

sexta-feira, 6 de julho de 2007

Relação entre WSGI e LuaWsgi

O Osvaldo comentou comigo que WSGI não cuida do baixo nível, sendo apenas uma interface de programação, uma camada de abstração do servidor web em si.

Praticamente um protocolo de interface.

Eu sei disso, mas LuaWsgi não é apenas WSGI…

WSGI é tão somente o motivo primordial para LuaWsgi.

Para cima de WSGI, LuaWsgi implementa módulos de suporte a cookies, sessão, AJAX, modelos (por enquanto apenas LuaPage, porque é fácil) e (por enquanto só) dois middlewares prontos, autenticação e publicador.

Para baixo de WSGI, LuaWsgi possui uma implementação de servidor HTTP sobre um módulo gerenciador de daemon TCP para múltiplas conexões, wsgi.listener, que pretende tirar o melhor proveito possível de um ambiente multiprocessado (essa parte está em construção).

Nessa direção ainda falta criar interfaces com outros servidores web, a começar pelo Apache.

Portanto LuaWsgi é WSGI, mas não somente… é mais que isso.

[]'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

Versionamento

Perguntaram-me por que a primeira versão de LuaWsgi é 7.06.0.

Foi adotado um esquema de versionamento um tanto peculiar, mas similar ao adotado pelo Ubuntu.

O número maior de versão indica o ano (2007 → 7), o número menor indica o mês (junho → 06) e o número de release inicia em zero e é incrementado a cada lançamento no mesmo mês.

Então 7.06.0 indica o primeiro release de junho de 2007 e 7.06.1 o segundo release do mesmo mês.

[]'s
Cacilhas

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

Introdução

Este blog tem o objetivo de manter changelogs e notícias sobre o projeto LuaWsgi.

Como o público alvo principal do projeto são programadores lusófonos, este blog terá como linguagem preferencial o Português, mas algumas postagens podem eventualmente ser feitos em outras línguas se necessário.

[]'s
Cacilhas