Todos devem recordar da mudança realizada na política de manutenção do PrimeFaces. Pois bem, a partir da versão 3.5 nenhuma nova versão de manutenção (essencialmente com correções), ou seja, versões 3.5.x, 4.0.x, etc., não estarão livremente disponível mais. Caso possa e queira pagar, são $249 por ano de acesso a esses releases importantíssimos, e claro, o suporte deles.
Caso não queira assinar o “PrimeFaces Elite”, veja nas próprias palavras do Cagatay, líder do projeto, publicadas no blog oficial:
Tudo bem, a terceira alternativa será a preferida da maioria. Porém, será muito trabalhoso manter esta branch por diversos motivos que já foram discutidos em outro tópico. Então, em meados de março deste ano, resolvi que iria manter as danadas dessas versões de manutenção. Afinal, os fontes do PrimeFaces estão sob a licença Apache 2.0, uma das mais permissivas.
A segunda decisão que tomei foi que com SVN não dava, tinha que migrar os fontes e histórico para GIT. Tudo certo, para isto que serve o git-svn e foi razoavelmente tranquilo realizar este procedimento. A terceira decisão foi obviamente utilizar o serviço do GitHub, pois além dos fontes poderia utilizar o GitHub Pages para produzir algumas páginas com o Jekyll e disponibilizar informações sobre os releases e respectivos changelogs.
A cada versão “Elite” que era liberada, com um bocado de esforço analisava as mudanças no repositório oficial partindo do último commit para a versão 3.5, além de verificar no issue tracking quais as correções efetivamente incorporadas no release em questão. Não estava fácil, quanto mais tempo demorava para uma nova versão, mais complicada e trabalhoso. E ainda vieram as novas funcionalidades da 3.6 e depois 4.0. Ao final, precisava conhecer relativamente bem essas novas funcionalidades que não foram integradas à 3.5. Não eram tantas, apesar de ter que resolver alguns poucos sérios conflitos, consegui satisfatoriamente concluir os releases com alguns “atrasos”.
A quarta decisão que tomei foi fornecer livremente os artefatos das versões que produzia no processo acima. Assim, mantinha uma branch gh-pages contendo a estrutura de arquivos de um repositório de artefatos Maven. O processo de build configurado no PF permitia produzir os artefatos através do comando: mvn clean deploy -P release.
Basicamente, venho mantendo três repositórios sobre no github.com/primefaces:
-
primefaces/primefaces: códigos fontes com duas branches (master com mesmo histórico da trunk no repositório SVN original, e 3.5.x com os merges das mudanção que deveriam ou não (merge -s ours) serem aplicadas para o próximo release).
-
primefaces/primefaces.github.com: contém os fontes do site no “formato” Jekyll/Liquid.
-
primefaces/repository: contém os artefatos (JAR, POM, sources) na estrutura de um repositório Maven.
Caso queiram ver o resultado deste trabalho (tomara que ainda esteja disponível):
Site: http://primefaces.github.io
Sources: https://github.com/primefaces/primefaces
Maven Repo: http://primefaces.github.io/repository
Como podem observar, incrivelmente o id primefaces para organizações estava disponível no GitHub. Já houveram umas três discussões no fórum do PrimeFaces sobre a demanda pela migração para git e possivelmente a utilização do GitHub. As vantagens todos que já trabalharam com equipes grandes reconhecem. Enfim, o Cagatay preferiu continuar com o bom e velho SVN, provavelmente pela infraestrutura interna (não pública) que devem possuir.
Pronto, eu pensei, uma biblioteca JSF muito utilizada ficará de fato open source. Minha proposta era manter os fontes da versão 3.5.x disponíveis e também os binários, pois afinal, para que servem repositórios Maven e porque todo mundo fazer build se somente alguns possuem esse cuidado? E vamos lá, ter os JARs na mão é outra história, basta pegar e usar.
Após alguns meses sem divulgar em qualquer lugar (somente esses dias descobrir que haviam citado aqui no GUJ) percebi que haviam alguns forks e watchers no GitHub. Caramba, achei interessante terem encontrado sem qualquer publicação ativa. Apesar disso, houveram somente dois contatos sobre problemas encontrados nos artefatos. Conforme possível os resolvi, sendo que o segundo inclusive passou o hash do commit para que pudesse realizar o cherry-pick no Git. Afinal, essa era a motivação, que a comunidade pudesse ajudar e eventualmente apontar os bugs que adicionei durante a integração com o upstream no SVN do Google Code. Eu também havia desabilitado a criação de issues e merge requests nos repositórios, pois estavam estudando se isto não acabaria distanciando muito do PrimeFaces. A ideia era manter o mais próximo possível do upstream.
[size=16]O Drama[/size]
Pois bem, como eu imaginava, algum dia o pessoal do PrimeFaces ficaria sabendo desta minha diversão. Claro, também imaginava que não estariam nada felizes, mas também não entendo que essa iniciativa estariam atrapalhando seus negócios. Outra, afinal a licença permite que o trabalho na forma de fonte ou objeto seja redistribuído (cláusula 4 da Apache v2). Tudo bem, mantive os fontes fielmente iguais aos fornecidos na branch trunk, assim não havia problemas, imaginava.
Ontém, o Cagatay entrou em contato comigo através do Twitter de uma maneira nada elegante, diria até desnecessária. Vejam todos os twits que trocamos. Pelo que eu entendi, ele está alegando que tive acesso de alguma forma aos releases Elite e que estou disponibilizando-os ilegalmente. Tentei explicar que eu mesmo integrei as mudanças submetidas no Google Code e realizei os builds, mas era a última coisa que ele queria entender, frisou que eu estava realizando pirataria e ameaçou de recorrer a advogados.
Eu já li várias vezes a licença Apache 2. Talvez, o único problema deste fork seria a utilização do nome PrimeFaces, conforme cláusula 6 da licença. Procurei em ambos os sites (primefaces.org e http://primetek.com.tr) e não encontrei qualquer citação de que PrimeFaces fosse marca registrada com algum uso restrito. No próprio site comercial PrimeFaces é citada como uma suite de componentes open source.
Contudo, ele não está alegando o uso indevido da possível marca PrimeFaces. Mas sim, que estaria distribuindo indevidamente os JARs e que eu havia modificado a licença para a Apache 2 nestes binários, pois, possivelmente, a versão Elite deve vir com a licença comercial. Todos os fontes que utilizei para construir os artefatos estão igualmente públicos. Cada commit que empurrei para o GitHub está com a tag do git-svn, exceto em commits de merge ou que foram necessárias para a liberação de versão.
Conforme o Cagatay declarou em um de seus twits, ele enviou um formulário ao GitHub alegando que meus repositórios estariam infringindo direitos de cópia e pedindo um DMCA takedown. Consequentemente, devo receber alguma notificação do GitHub, solicitando que os repositórios ou parte deles sejam removidos. Não sei qual foi a alegação enviada e qual será a postura do GitHub.
Assim, dada a ampla comunidade GUJ, gostariam que me auxiliassem em uma decisão. Como devem imaginar, caso concordem com meu ponto de vista sobre a situação, estou bastante indignado com a postura do Cagatay. Já houveram várias manifestações sobre essa mudança na política de manutenção do PrimeFaces, inclusive em um tópico do GUJ. Não pretendia enfrentar o Cagatay, mas dada a abordagem e postura, estou pensando em avaliar como poderia agir. Portanto, caso possam auxiliar de qualquer forma, seja indicando alguém que tenha conhecimento sobre o assunto legal ou mesmo sendo essa pessoa, ou ainda, sugerindo alguma forma de apoio junto a uma organização como a Free Software Foundation ou a Open Source Initiative.
Ainda penso em deixar tudo isso de lado e entregar a administração conta primefaces no GitHub para o Cagatay. Mas, provavelmente, eles iriam remover todos os repositórios. Outra alternativa seria solicitar que apontassem o que de fato está sendo infringido e que eu possa fazer as correções. Contudo, ficarei aguardando o contato do GitHub e avaliando as atitudes que posso e tenha recurso para tomar.
Abraços!