17 de dezembro de 2004

Notas sobre peer-to-peer, propriedade intelectual, e a liberdade de comunicação na Internet

O professor Edward Felten é uma dessas figuras pouco conhecidas do grande público, mas que vem desempenhando um papel fundamental no estudo sério do impacto da Internet sobre aquilo que conhecemos hoje como propriedade intelectual. O conceito de propriedade intelectual, através dos mecanismos de copyright e patentes, surgiu como uma forma de dar garantias aos autores de novas idéias, protegendo-as contra abusos, de forma a encorajar a publicação de novas invenções. O debate sério hoje centra-se não sobre a questão da propriedade intelectual em si -- cujo valor é notório -- mas dos abusos que atual sistema legal incorporou ao longo dos anos para defender os interesses políticos e econômicos de poucos. Estas restrições ameaçam hoje a própria liberdade de comunicação, além de terem efeito negativo sobre a economia, pois elas se tornaram barreiras à inovação, ao invés de encorajá-la.

Um dos alvos preferidos das associações de empresas de entretenimento, particularmente a MPPA (que reúne os estúdios de Hollywood) e a RIAA (que reúne os selos de música) são as redes de comunicação peer-to-peer. Desde o surgimento do Napster, e com a disponibilidade de banda larga em abundâncias, estas associações tem lutado uma guerra sem tréguas contra as redes de pirataria. O problema é que, ao ver seu próprio modelo de negóciosendo tornado obsoleto pelas novas possibilidades técnicas, elas apontam suas armas muito mais embaixo: a solução é restringir o direito de comunicação, impondo barreiras técnicas e legais ao que pode ser feito na Internet.

No caso das aplicações de transferência de arquivo peer-to-peer, o problema é que elas não apenas mecanismos de pirataria, como querem alguns, mas simples ferramentas de cópia genéricas, muito úteis para outras aplicações como distribuição legal de programas, distribuição de cópias de segurança de arquivos, e até mesmo a distribuição de filmes e músicas de domínio público. O problema é que não há nada que possa ser embutido em um sistema dessa natureza que permita diferenciar, do ponto de vista estritamente técnico, o que é um conteúdo legal ou não. São todos eles apenas sequências arbitrárias de bits e bytes, totalmente transparentes em seu conteúdo ou intenção para o meio de transporte.

Recentemente, uma aplicação popular -- o BitTorrent -- tornou-se o alvo da MPAA, que está processando os sites que armazenam os indicadores de conteúdo. Note bem: o indicador de conteúdo não é um arquivo que possa ser protegido por copyright, é apenas um ponteiro para um local da rede onde alguém colocou aquele conteudo à disposição. A base legal para processar o servidor de trackers é bastante limitada. Mas mesmo assim, a MPAA vai tentar, com seu arsenal jurídico, fechar estes sites.

É neste ponto em que retornamos ao professor Felten. Recentemente, ele publicou um pequeno programa de exmple: uma aplicação completa, cliente e servidor P2P em menos de 15 linhas em Python. O código foi rapidamente publicado via Slashdot, onde disparou repercussões técnicas interessantes. Uma versão com apenas 9 linhas em Perl foi publicada a seguir, e uma outra, ainda menor, de apenas 6 linhas em Ruby, também foi postada.

O argumento do Prof. Felten é que uma aplicação tão fácil de implementar quanto estas não pode ser razoavelmente proibida. A verdade é que a tecnologia deu um salto que invalida o modelo de negócio de todo um setor empresarial. O telégrafo foi substituído pelo telefone, e o telex pela Internet. Empresas que se apoiavam na tecnologia antiga fecharam, enquanto outras surgiram para ocupar o espaço. Da mesma forma, oos grandes estúdios precisam rever seu próprio modelo de negócio. A possibilidade de produzir e distribuir conteúdo de qualidade a baixo custo possibilita o surgimento de um novo modelo de negócios. Estúdios menores podem produzir uma nova banda por um custo muito inferior, e operar em uma escala menor.

Um efeito colateral interessante deste processo é a possibilidade de reduzir o impacto da massificação e do monopólio cultural. No segmento musical, este fenômeno já é possivel. No entanto, do ponto de vista técnico, a indústria do cinema tem muito mais a perder, pois o volume de investimentos necessários -- tanto em termos financeiros como humanos -- para produzir um filme de boa qualidade é muito superior àquela que pode ser obtida pela dedicação de uma banda de rock. Assim, enquanto no cenário musical a fragmentação é possível, e até interessante, no caso do cinema há um desafio muito maior para ser superado. No entanto, nada disso justifica a guerra aberta contra as aplicações peer-to-peer, e nada justifica cercear o direito de comunicação através da Internet.

11 de dezembro de 2004

Novidades: Sistema de Workflow

O blog ficou um bom tempo sem atualização, e por um bom motivo. No momento, estou trabalhando na implementação de uma aplicação Web profissional para gerenciamento de processos, ou seja, workflow. O produto está sendo escrito em Python, e utiliza o CherryPy como servidor de aplicação Web. Para quem programa em Python, ou para aqueles que procuram uma ferramenta leve para aplicações Web, sugiro analisar o CherryPy. O resultado final será publicado como um programa aberto, sendo que a oportunidade de negócios está na customização do sistema para os processos de um cliente específico.

Há várias formas de modelar aplicações de workflow, sendo que as mais difundidas são associadas a alguma metodologia ou notação proprietária, o que dificulta a sua aplicação em um ambiente de software aberto. Ateoria fundamental é bastante consistente, mas existem poucos recursos online que a apresentem de uma forma acessível. A estrutura escolhida se baseia em um formalismo matemático poderoso, que são as redes de Petri. Alguns sistemas abertos de workflow se baseiam em redes de Petri. Uma boa referência em PHP é o artigo An activity based Workflow Engine for PHP. O sistema proposto tem algumas particularidades, mas serve como uma boa introdução ao tema.

No momento, o sistema ainda não tem uma documentação apresentável, apesar de todo cuidado com a estrutura do código fonte. O projeto se baseia em uma filosofia de desenvolvimento rápido: TDD, ou Test Driven Development. A parte mais difícil em adotar o TDD foi descobrir uma forma de separar, ou desacoplar, os módulos. A tendência ao se escrever código com rapidez é usar recursos escusos, como variáveis globais e código estilo spaghetti. A metodologia TDD tem uma vantagem: ela não se presta a esse tipo de código, que acaba assim não tendo muita chance de aparecer no projeto.

Espero que até o começo de janeiro a base do sistema já tenha atingido um patamar de estabilidade suficiente para a produção de um release com qualidade beta, pelo menos. Dúvidas e comentários são bem vindos -- basta mandar um email ou deixar um comentário no blog.

Aplicações Web - Editores de documentos via Internet

Nestes últimos dois meses, colecionei alguns links interessantes, mas não tive ainda tempo de analisar ou escrever nada sobre eles. Particularmente hoje, encontrei uma série de referências sobre editores para conteúdo online. Quem usa webmail, blogs e wikis sabe o quanto é limitada a interface tradicional - uma caixa de entrada de texto, sem possibilidades de formatação ou de comandos mais avançados. A novidade é que há uma série de ferramentas sendo desenvolvidas, algumas das quais muito promissoras:

  • Kupu é um editor de textos multiplataforma (compatível com Internet Explorer e com Mozilla/Firefox). O site contém um demo interativo.

  • O Jalopy é um projeto, baseado no Kupu, para um editor de documentos interativo, multiplataforma. Inclui alguma funcionalidade própria de gerenciamento de conteúdo.

  • Silva (não, nã é o vizinho do Pato Donald) é um CMS, baseado em Zope, que usa o Kupu. Não tive tempo ainda de verificar os detalhes, mas o produto parece bem estruturado.

  • Tibia é um projeto novo, anunciado na c.l.py. É um script CGI que pode ser instalado em um site pré-existente, e que permite editar as páginas de forma estruturada (baseada no modelo DOM).

  • Finalmente, quem precisa apenas de um pequeno "hack" para ativar editores externos usando o Mozilla/Firefox pode usar o mozdev. Não tem a funcionalidade do Kupu, mas é útil par aalgumas situações.