Há uma grande confusão e má interpretação da licença dual do ExtJS e de todos os produtos Sencha em geral, principalmente por causa da GPL3. Como voces deveriam saber, os produtos da Sencha são Open Source com uma licença comercial caso queira monetizar com as ferramentas.
Já discuti com diversas pessoas afirmando que se voce construir uma aplicação com ExtJS voce tem que distribuir o código fonte de sua aplicação, aà que está o grande engano.
Preciso Distribuir o Código Fonte de Minha Aplicação?
Não
Explique
ok, a licença é conhecida como viral, o que ela toca se torna Open Source e voce precisa deixar acessÃvel.
Basicamente se algo depende de código com GPL3 esse algo se torna GPL3.
Agora uma Webapp com ExtJS não depende do ExtJS, sendo mais preciso o seu server-side  não depende da camada de apresentação se esta for feita toda no client-side como as abordagens Full Ajax utilizam. Por isso eu não uso e nunca utilizei em produção algo com a API de Direct do ExtJS, porque a fronteira dessa definição não é claro sob esse aspecto. O Direct força o seu server-side a se ajustar ao client-side quando deveria ser o contrário.
Até a versão 3 voce precisava renderizar o JSON para uma estrutura definida pelo ExtJS nos forçando a fazer coisas assim [como o Responder abaixo] e deixando a fronteira novamente ambÃgua.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
Hoje na versão 4x o Framework trabalha com JSON padrão e voce não precisa modificar o seu Responder para satisfazer o que seja.
Existem estratégias para voce contornar essa limitação ou comprar a licença comercial caso queira fechar modificações nas ferramentas sob a licença GPL3.
Mas Como a Sencha Ganha Dinheiro Então?
Treinamentos, consultorias e outros serviços já são o nicho de negócio principal, imagino. Mas…
Se voce construir uma customização ou novo componente sob a licença comercial, ninguém pode usar ou distribuir essa sua modificação, é aà que a licença comercial entra e é muito justo.
tl;dr
Resumindo, se voce usa ExtJS sob GPL3 voce tem que deixar todo o código que dependa dele sob a mesma licença, mas somente o código que dependa dele.
Categories: cearajs, Ext, sencha, Software Livre ~ ~ Trackback
May 17th, 2012 at 2:07 pm
Milfont, eu fiz meu site utilizando alguns componentes nativos Ext JS, implementei meu server-side com outra linguagem/framework, preciso comprar a licensa comercial? E se eu quiser vender sites utilizando componentes Ext JS?
May 17th, 2012 at 2:17 pm
Felipe, ExtJS é melhor para WebApps que requeiram um UX próximo ao Desktop, por diversos fatores. Eu não faria sites em ExtJS.
Mas respondendo a sua pergunta, voce pode vender normalmente desde que o código seja distribuÃdo, só não sei se algum cliente pagaria sabendo que pode pegar de graça
May 17th, 2012 at 2:20 pm
Obg pela dica
May 17th, 2012 at 10:37 pm
Bacana o artigo! ^^
A dúvida do Felipe ainda não ficou claro pra mim
Tenho o seguinte cenário: Estou desenvolvendo uma aplicação especÃfica para uma empresa, que funcionará na intranet, e estou usando ExtJS + um framework PHP.
Todo o codigo (Server e client) ficará no servidor da empresa. Como ficaria? Tenho q comprar a licença?
May 17th, 2012 at 11:28 pm
Bom esclarecimento!
Só queria corrigir com relação à receita, licenças ainda são a maior entrada, principalmente pelas vendas grandes com contratos OEM.
Outro ponto importante, a licença comercial é dita incompatÃvel com a GPL. Se você começa com GPL, vai ter que ir até o fim de GPL. Essa história de desenvolver GPL sem pagar por 3 meses de desenvolvimento, e depois comprar a comercial quando o app estiver em produção, não é aceito.
May 18th, 2012 at 6:31 am
@Bruno Tavares
Sobre a receita, por isso eu falei “imagino” : )
Com certeza se voce começou com GPL3 o código já foi tocado pela licença, então pela própria natureza da GPL voce não tem como fechar, ponto importante que parece óbvio mas tem que ser citado.
May 18th, 2012 at 6:33 am
@Gustavo
Eu aconselho a comprar a licença nesse caso, mas é simples de saber o que tem que distribuir ou não: O seu código que depende do ExtJS [caso esteja usando GPL3], que só funcione por causa dele, tem que ser distribuÃdo.
May 18th, 2012 at 10:20 am
Certo, obrigado cmilfont !
May 21st, 2012 at 11:54 am
Oi pessoal, minha pequena colaboração para a discussão.
Uma coisa importante mas que é um pouco sutil e geralmente desapercebido nas discussões é que o copyleft* só é disparado quando há distribuição dos binários. Ou seja, você está criando uma aplicação que vai ser distribuÃda, por exemplo, usuários podem baixar o .exe ou comprar uma caixinha com seu software na prateleira. Para aplicações onde os usuários só interagem com seu software através de uma interface, o copyleft não é disparado. Existe a licença AGPL (GPL Affero) para quem quer um copyleft mais facilmente disparável.
Usar um Software GPL dispara a licença GPL? Depende. Eu não conheço com detalhes como o ExtJS funciona. Se você tem que fazer algo parecido com subclasses de classes GPL, então sim. Eu perguntaria se é comum fazer ofuscação de códigos em Javascript com ExtJS, senão, você já está distribuindo os fontes.
@Bruno Tavares e @cmilfont, uma vez GPL sempre GPL? Sim e não.
Se João escreve o exemplo.js como GPL na versão 3.1415 então o exemplo.js 3.1415 será sempre GPL. Se na versão 3.1416 ele decidir trancar seu código, então tudo bem (desde que ele seja o único autor, copyright, ou que todos os outros autores/contribuidores concordem que João pode fazer isso). Se Pedro quiser fazer um fork da versão 3.1415 e lançar o exemplo_do_pedro.js versão 3.1416 como GPL, é um trabalho derivado e ele pode fazer isso (e terá que ser em GPL essa e toda versão subsequente). Ao contribuir para alguns projetos você tem que concordar com os termos de ceder seus direitos de autor a um terceiro e esse terceiro poderia fazer esssa des-GPL-ização no futuro. Foi o que aconteceu com o CUPS. Eu particularmente não gosto disso, mas não há nada aà que viole a licença.
* A “viralidade” da GPL é um termo cunhado com uma conotação negativa em processos de FUD para descreditar o copyleft, que nada mais é do que “contaminar” com liberdade, um toque de midas. É importante notar que a simples inclusão de um software GPL no seu projeto não o torna GPL apesar de que é muito comum eu ouvir essa afirmação equivocada.
May 21st, 2012 at 12:04 pm
@Silveira, só um comentário sobre a distribuição.
É natural “minificar” js o que torna praticamente obfuscado, então nesse caso há a necessidade de distribuir os originais também.
Perfeito seus comentários, obrigado.
May 21st, 2012 at 12:22 pm
@cmilfont, bem colocado. Acho que isso é um consenso, minificar é ofuscar.
June 8th, 2012 at 2:11 pm
Obrigado pelo post cmilfont, ficou ótmo!
Uma dúvida:
* meu server gera e retorna algo +/- assim para o “TreeStore” montar o menu :
return array (
‘children’ =>
array (
0 =>
array (
‘text’ => ‘Home’,
‘expanded’ => true,
‘children’ =>
array (
0 =>
array (
‘text’ => ‘Sair’,
‘xtypeName’ => ‘default-auth-logout’,
‘controllerNameExtjs’ => ‘DefaultAuth’,
‘leaf’ => true,
‘expanded’ => true,
),
.
.
.
Para vender minha app e usar o extjs 4 sob a licença GPL3, precisarei publicar o codido que gerou este arquivo ou apenas os controllers, models, stores, views e etc do extjs ?
June 8th, 2012 at 5:09 pm
@Schopenhauer
Como eu falei no artigo, é sempre ambÃguo isso, porque teoricamente o seu server-side segue um protocolo/formato sob a licença GPL3, portanto o código que depender dele tem que ser publicado também. Dependendo do acomplamento do seu código, vai ter que liberar muita coisa server-side.
Mas como eu falei, é sempre complicado inferir uma fronteira nisso, por vias das dúvidas eu sempre crio uma camada fina para isolar o código do ExtJS do meu server-side. No caro so Rails por exemplo tinha um Responder [código no POST] especÃfico para isso.
June 25th, 2012 at 2:22 pm
Só pra complementar. Nas próprias palavras de Bruce Perens autor de definição de Open Source:
“Open Source é um software que o da uma lista de nove direitos:
1º – Distribuição Livre
O primeiro direito é Reditribuição Livre. Este livre não significa “sem preço”. Ele significa liberdade que você tem para redistribuir livremente seu software para outra pessoa. E na verdade ser grátis é um efeito colateral. Você pode ou não cobrar pela REDISTRIBUIÇÃO.
2º – Código Fonte disponÃvel
Ele deve ir com o código fonte para que qualquer pessoa possa manter o programa. Se alguém for de um PC para um Mac por exemplo, ele possa mudar o software.
3º – Trabalhos derivados permitidos
Trabalhos derivados tem que ser possÃveis se alguém precise melhorar o programa e ele pode redistribuir o resultado.
4º – Integridade do autor do código fonte
Existe uma condição quanto a integridade do código fonte do autor que diz que o autor pode manter sua honra e se você fizer quaisquer mudança você pode ter que mudar o nome do programa ou marcar sua mudança bem claramente para que sua mudança não reflita no autor.
5º – Não há discriminação contra pessoas ou grupos
Não existe discriminação contra pessoas ou grupos. O exemplo que costumo usar é que você não pode fazer uma clinica de aborto ou ativista anti-aborto parar de usar o seu software.
6º – Sem discriminação contra áreas de atuação
Não existe discriminação contra áreas de atuação. Isso significa que o software pode ser usado em um negócio da mesma forma que numa escola.
7º – Distribuição da Licença
A licença deve poder ser distribuÃda. Em outras palavras, eu tenho que poder dar esta licença a alguém e essa licença então deve funcionar mesmo se alguém der ela a uma terceira pessoa.
8º – A licença não pode ser especÃfica a um produto
Em outras palavras, se eu redistribuir meu software em um sistema red hat a licença não pode dizer que você não pode distribuir ele num sistem Suse ou Debian.
9º – A licença não pode contaminar outro software
Então, se você distribuir ele em um cd com outro programa não quer dizer que o outro programa deva ser livre, de outra forma você não pode distribuir meu software.”
Palavras do autor. Ao meu ver se o software está sob a licença Open Source então eu posso cobrar se eu quiser pelo meu software independente se ele usa um framework de terceiros que está sob a mesma licença, pois, eu não estou modificando o framework e nem vendendo o framework, o framework não passa de uma ferramenta de trabalho ou seja, se fosse o caso então, eu não poderia distribuir meus softwares em java só porque eu uso uma IDE como o Eclipse que é livre e também é uma ferramenta de trabalho, ou seja só porque é livre não quer dizer necessariamente grátis.
July 7th, 2012 at 12:05 am
Entao posso usar a Ext com licença open source em um projeto que esteja rodando em um servidor web que forneça JSON para a camada cliente feita com Ext, desde que eu ofereça os meus JS para quem me pedir eles, mesmo que o meu projeto seja comercial? Isso tb vale para após iOS nativas feitas com Sencha Touch?
Obrigado por esse artigo, foi o melhor que encontrei até agora.
July 11th, 2012 at 8:18 am
Igor Silvério Costa, desde que você distribua os fontes do código que depende do ExtJS, voce pode usar tranquilamente.
October 18th, 2012 at 6:42 pm
Estou desenvolvendo um site para a prefeitura de minha cidade no qual vou disponibilizar uma serviço para a população, não será um software comercializado, é necessário pagar por uma licença do EXTJS?