Siga-me no Twitter em @vascofurtado

terça-feira, 31 de julho de 2012

WikiCrimes é Open Source


Durante todo esse tempo de história de WikiCrimes (quase cinco anos), uma coisa sempre nos gerou dúvida: WikiCrimes deveria ter seu código aberto? No início achávamos que não. Tudo era muito novo, não tínhamos experiência com sistemas de código aberto e não sabíamos se haveria a possibilidade de explorar o site via algum modelo de negócio.

Com o passar dos anos, a resposta positiva a essa pergunta foi se fortalecendo.  WikiCrimes é um sucesso acadêmico. Quase a totalidade das publicações científicas produzidas no Laboratório de Engenharia do Conhecimento são relacionadas direta ou indiretamente ao projeto. WikiCrimes também é um sucesso como pioneiro e ação concreta na discussão sobre dados criminais abertos no País. Toda a motivação que nos levou a cria-lo é atualíssima: baixa transparência, alta subnotificação e baixa existência de serviços para apoio à precaução do cidadão. Aliás, isso é infelizmente verdade, o que demonstra como andamos pouco nessas questões esses últimos anos.

No entanto, WikiCrimes sobreviveu e sobrevive até hoje por ações de voluntários dentro do LEC e com alguma verba de pesquisa. Muito embora a FUNCAP e o CNPQ tenham sido parceiros nessa nossa curta história. Nos últimos meses esses apoios se reduziram ou terminaram. Desde então tínhamos voltado a pensar em como trazer mais voluntários para contribuir no projeto.

Mesmo assim, a decisão de abrir era sempre postergada porque precisávamos nos organizar primeiro. Era necessário estruturar o código atual de forma que o mesmo fosse mais facilmente reusado e de forma também com que algumas rotinas proprietárias fossem protegidas. Passamos os últimos seis meses trabalhando nisso e agora chegamos ao término. WikiCrimes está pronto para ser aberto.

Escolhemos o Github para repositório de compartilhamento. Convocamos a comunidade de software livre a ser nossa parceira nessa empreitada. Ela foi uma que sempre me perguntou quando isso aconteceria. Pois bem, Está feito. Juntem-se a nós e sejam bem vindos!
Acessem o código fonte aqui


27 comentários:

Paulo Santiago disse...

Eu discordo... O que aparenta é que foi liberado o crud enquanto que a parte legal do código foi encapsulada, privando a leitura. Se é para a comunidade acadêmica como foi alardeado, deveria ser liberado em forma integral. Por sorte o código de interesse está visível no histórico do github. Dada as condições, é uma ação de receber elogio e não uma condecoração pelo open source.

Anônimo disse...

Vocês deviam melhorar o processo de commit dos desenvolvedores... Num projeto que visa ser open-source, as mensagens de commit são de fundamental importância, e no histórico temos inúmeros commits com mensagem em branco.

Vasco Furtado disse...

Caro Paulo,
Duas rotinas, a de calculo de rota segura e do mapa de calor, foram desenvolvidas em projeto finnciado por empresas e não temos direitos exclusivos sobre elas. Estamos em negociação para que as mesmas também sejam abertas. Cabe à comunidade avaliar se isso inviabiliza participações ou desmerece nossa iniciativa. Respeito sua posição
Vasco

Vasco Furtado disse...

Caro anônimo,
Venha nos ajudar. Não temos experiência em projetos open source
Vasco

Anônimo disse...

"Era necessário estruturar o código atual de forma que o mesmo fosse mais facilmente reusado e de forma também com que algumas rotinas proprietárias fossem protegidas".

Só pra começar, dentro dos models temos uma classe User e uma classe Usuario. Por quê? Cade a qualidade de codigo e a legibilidade? Qual o propósito de dois models para a mesma entidade? Internacionalização?

Paulo Santiago disse...

Vasco, deixa eu te explicar o que você fez:

- Você fez um upload do repositório git, ou seja, todo o histórico do projeto.
- Vendo o histórico, você pode ver o commit 668ccf56fe94ce7fc47089cbddce2ddddc119509 , mais especificamente em:

https://github.com/Wikicrimes/Wikicrimes/commit/668ccf56fe94ce7fc47089cbddce2ddddc119509 668ccf56fe94ce7fc47089cbddce2ddddc119509

que você liberou aquele commit com licença apache2, inclusive esse código que você tanto preza.

"Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed."

Agora, dado que você fez isso, qualquer pessoa pode fazer um fork do projeto e vai estar amparado pela licença que você fez. Pelo que você pode ler no paragrafo acima, que encontra-se no arquivo LICENSE.txt dentro do seu projeto.

Seja sensato e libere o projeto de forma crível.

Por que do jeito que está, aparenta que você busca mão de obra qualificada para o projeto de modo a melhorar sua plataforma sem que você dê nada em contra-partida à comunidade.

Abraço

ps: você ja o fez de forma involuntária, mas já não pode dar um passo atrás. somente torne isso oficial.

Paulo Santiago disse...

link corrigido:

https://github.com/Wikicrimes/Wikicrimes/commit/668ccf56fe94ce7fc47089cbddce2ddddc119509

Vasco Furtado disse...

Oi Paulo,
Mais uma vez obrigado pelas dicas. Vamos reavaliar como proceder. Isso vai nos forçar uma decisão de nossos parceiros.
Creio que há um mal entendido devido nosso completo desconhecimento do processo. Aliás, essa foi uma das razões que nos levou a postergar a decisão.
Vasco

Vasco Furtado disse...

Caro anônimo,
O código não está estruturado mesmo. Foram muitas pessoas com diferentes níveis, diferentes backgrounds e maturidade que participaram e ainda participam do projeto. Durante muito tempo tivemos dúvida se devíamos abri-lo só depois de estrutura-lo. Como isso nunca virava prioridade. Vi que ou abríamos desse jeito ou iríamos passar a vida toda esperando. Paciência.
Obrigado pela sugestão,
Vasco

Helio Frota disse...

Olá Vasco,

Bem vindo (bem como a equipe) ao mundo open source !

Não irei criticar nenhum aspecto técnico do wikicrimes porque a iniciativa de open source é sempre bem vinda.

Uma vez que existe código proprietário junto com código livre, este não é mais código livre. Sugiro que alguém que codifica na sua equipe leia um pouco sobre licenças de software.

Outra coisa, remover código proprietário pega mal pra caramba. Bem como disponibilizar arquivos compilados sem o devido código fonte.

Sobre as questões técnicas irei evitar de comentar porque são tantas que eu precisaria cobrar uma consultoria por isso.

Como o wikicrimes não é mais de ninguém, e sim da comunidade (meu também claro, inclusive o código que foi removido no qual eu já fiz download) precisa ser respeitado como código comunitário já que está licenciado sobre Apache 2.0.

http://www.youtube.com/watch?NR=1&v=bl_1OybdteY

Vasco Furtado disse...

Nãõ entedi essa frase Hélio

"Uma vez que existe código proprietário junto com código livre, este não é mais código livre."

Helio Frota disse...

Entendo a sua pergunta bem como entendo minha resposta. Filosofia é algo realmente interessante....

Se você escreve um site open com um flash da Adobe seu site é free ?

Vasco Furtado disse...

Entendi. Na verdade queríamos liberar GPL, por equívoco saiu Apache. Sobre o que é proprietário, creio que vamos conseguir resolver. Uma das rotinas já foi liberada (na verdade, tudo foi liberado, né:-)). A outra ainda nem está em funcionamento no WikiCrimes. Vamos avançar.
Obrigado pelas dicas
Vasco

Helio Frota disse...

Como não sou obrigado a saber como funcionam as citações dos comentários do software "blogger" irei replicar entre aspas:

Vasco responde:
"Entendi. Na verdade queríamos liberar GPL, por equívoco saiu Apache."

Não existe isso. É o mesmo que: "Eu queria cerveja mas comprei cachaça, achando que o conteúdo da garrafa era tudo igual."

Outra coisa, você que está afirmando que tudo foi liberado, eu não sei de nada, quem afirma é você.

Se o projeto irá avançar, parabéns. Espero que realmente seja utilizado no Brasil e no mundo.

Agora posta no GUJ. Porque o Mentawai e o Neoframework foram "metralhados" por não possuirem testes unitários (em meios magnéticos formando unidades de código) naquela época.

Assim você terá um bom (ou mal) termômetro comunitário para o seu projeto.

Felipe Borges disse...

Professor Vasco, entendo que a equipe era formada por pessoas de diversos níveis de experiência. Uma boa prática de mercado é passar o código por uma revisão técnica, onde as pessoas revisam os códigos umas das outras, fazem sugestões e implementam melhorias. Isso gera um código melhor e nivela o nível da equipe. Sugiro que pesquisem sobre boas práticas, Scrum etc. Há bons eventos no Ceará sobre o assunto (o último foi a JavaCE Conference), acredito que você e sua equipe poderiam ir, há excelentes palestras de ótimo nível.

Você falou que estruturar o código do wikicrimes não era prioridade, mas vocês podem pensar nisso nos códigos futuros.

Sobre a licença, complemento o que foi dito pelo Hélio: uma vez que o código atual já foi liberado sob licença Apache, todo o código no controle de versão mesmo que o último commit esteja ofuscado, incluindo todo o histórico agora é livre para quem quiser usar, sem qualquer ônus, mesmo que vocês tirem do ar. É uma questão de direito adquirido.

Abraço!

Vasco Furtado disse...

Valei Felipe,
Obrigado pelas dicas. Espero que os códigos futuros providos pela comunidade comecem a melhorar o que já está. Dentro do possível, tentaremos melhorar o que já foi feito
Abco

Paulo Santiago disse...

O que o Felipe falou não condiz com a verdade. Toda a arvore de código não está atingida pela licença, mas sim aquele commit com aquela licença em questão.

Ou seja... como dono do projeto o professor Vasco pode sim liberar novas versões sob licença diferente.

Mas todas os commits diferentes com suas respectivas licenças não podem ser alterados, pois ai ja foi liberado sob licença diferente.

Imaginemos o caso crítico de o arquivo de licença tenha sido inserido no primeiro commit do projeto e nunca tenha sido alterado, então sim, a árvore inteira estará sob aquela licença. Pois em qualquer que seja a revisão do sistema no histórico, ela possuirá aquele arquivo de licença.

Helio Frota disse...

Concordo com Paulo Santiago vamos por partes:

1) Projeto criado com licença apache 2.0 onde é possível usar uma referência da licença na raiz do projeto (por exemplo) em vez de adicionar em todos os arquivos.

2) Nesse momento projeto todo está com Apache 2.0

3) Sim, é possivel adicionar/combinar outras licenças em determinadas bibliotecas, arquivos etc. A partir daí o projeto é licença Apache 2.0 + Licença XPTO

4) Código compilado não é "Open Source"

"WIKICRIMES_MOBILE/WikicrimesMobileLite/a.class"

5) Se o "a.class" for comitado com outra licença, a partir desse commit esse >arquivo< não fará mais parte da Apache 2.0.

Felipe Borges disse...

Helio e Paulo, talvez eu não tenha sido claro.

"2) Nesse momento projeto todo está com Apache 2.0"

Foi isso que eu quis dizer. Todos os commits atuais do projeto estão sob licença Apache, incluindo os códigos passados que estão disponíveis no controle de versão antes de serem ofuscados, uma vez que o arquivo LICENSE está lá há 3 anos.

Ele pode mudar a licença daqui em diante (como o Helio falou), mas ainda temos direito ao código antigo sob licença Apache.

Paulo Santiago disse...

Exatamente isso Felipe.

Sendo assim, o código pode ser manipulado como queira.

Inclusive, por exemplo, temos o caso extremo:

"Um grande caso de sucesso neste caso é o servidor web Apache da Apache Software Foudation [8]. A licença Apache, usada na maioria de seus produtos, é do tipo permissiva. Em geral, essas licenças permitem inclusive que, qualquer detentor do código possa desenvolver um produto derivado e fechar o código para explorá-lo comercialmente. Neste caso, o servidor web Apache se tornou um produto referência e amplamente usado que nenhuma empresa tem interesse em desenvolver um produto derivado com código fechado."

http://pt.wikipedia.org/wiki/Licen%C3%A7a_de_software_livre

Ou seja, dependendo do interesse e do projeto a comunidade age de maneiras diferentes. Alterando e iniciando um novo produto ou contribuindo para o projeto se ele for muito forte.

Isso depende de projeto para projeto e não existe uma regra.

Então não se admire caso apareçam outras versões do WikiCrimes e de eventualmente alguma superar o projeto original e tomar seu lugar. Como acontece em vários projetos open source.

Helio Frota disse...

Olá, é impressão minha ou o projeto agora é GPLV.2 ?

https://github.com/Wikicrimes/Wikicrimes/blob/master/LICENSE.txt

http://pt.wikipedia.org/wiki/GNU_General_Public_License

Em termos gerais, a GPL baseia-se em 4 liberdades:

- A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)

- A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade.

- A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).

- A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para esta liberdade.

Felipe Borges disse...

Mudaram a licença. Em todo caso, tudo que foi feito até o commit imediatamente anterior ainda é Apache, incluindo o heatmap, que sem dúvida é um ótimo recurso. Deveria virar uma biblioteca.

Helio Frota disse...

Bom dia Vasco,

Todos nós cometemos falhas o importante é corrigir as falhas.

Você precisa informar ao líder técnico do wikicrimes para remover todo o código compilado ou adicionar o código fonte do código compilado, porque o wikicrimes está violando a GPL.

Anônimo disse...

na realidade seria melhor rescrever tudo...de preferência em rails e largar o jsf que é um tiro no pé pra quem quer fazer web.

Vasco Furtado disse...

Oi anônimo
Mãos a obra! Daremos apoio

Vasco Furtado disse...

Caros colaboradores que postaram aqui. Convido-os para ler http://vfurtado.blogspot.com.br/2012/08/wikicrimes-ainda-mais-aberto.html
Agradeço antecipadamente
Vasco

Karthika Shree disse...

Somebody necessarily help to make severely posts I might state. This is the first time I frequented your website page and to this point? I surprised with the research you made to create this particular post extraordinary. Well done admin..
PEGA Training in Chennai