Postgresql, MySQL, Firebird, MariaDB e licenciamento.

Bom dia,
Segue valores do MySQL para hoje dia 29/01/2015 direto do shop da oracle:

Mysql -> dual licença GPL ou paga.
http://pt.slideshare.net/MySQLBR/my-sql-gratis-12mar2014
http://www.mysql.com/about/legal/licensing/oem/

A questão no caso do Mysql é:
Usar o Mysql community sob GPL implica em ter que fornecer o código fonte da aplicação ao cliente. Que pode repassá-lo a outra pessoa.
Usar o Mysql enterprise sob licença paga terá que desembolsar no mínimo R$ 4776,00.

Ficam então as alternativas:

MariaDB -> licença GPL
https://mariadb.com/kb/en/mariadb/mariadb-license/
Ou seja, usou tem que distribuir os códigos fontes de sua aplicação.
GPL é viral -> http://en.wikipedia.org/wiki/Viral_license e http://pt.wikipedia.org/wiki/Copyleft

Postgresql -> Licença BSD
http://pt.wikipedia.org/wiki/Licença_BSD
Cito:
"O texto da licença é considerado como de domínio público e pode ser modificado sem nenhuma restrição. Para satisfazer as necessidades de indivíduos ou organizações em particular, deve-se trocar as referências aos termos “Regents of the University of California”, “University of California, Berkeley” e “Regents” pelo nome do próprio indivíduo ou organização.
Compatibilidade com licenças de software proprietárias

A licença BSD permite que o software distribuído sob a licença, seja incorporado a produtos proprietários. Trabalhos baseados no material podem até ser liberados com licença proprietária. Alguns exemplos notáveis são: o uso de código do BSD (funções de rede de computadores) em produtos da Microsoft, e o uso de muitos componentes do FreeBSD no sistema Mac OS X da Apple Computer.

Também é possível que softwares sejam distribuídos pela licença BSD junto de outra licença. Isto ocorreu em versões antigas do BSD Unix, que incluíam material proprietário da AT&T.
Compatibilidade com outras licenças de software livre

Na sua versão original, a licença BSD contém termos que a tornam incompatível com a licença GPL. Como elas estão entre as licenças mais utilizadas no mundo do software livre, a impossibilidade em combinar os seus componentes tornou-se um grande problema para os autores destes softwares. Na revisão sofrida em 1999 a cláusula controversa foi retirada. Desde esta data, os autores estão livres para incorporar softwares BSD naqueles licenciados pela GPL."

Firebird -> Liccença LIPL, IDPL
http://www.firebirdsql.org/en/licensing/
http://www.firebirdnews.org/docs/fb2min_ptbr.html
http://pt.wikipedia.org/wiki/Firebird_(servidor_de_base_de_dados)
Cito:
“O Firebird é derivado do código do Borland InterBase 6.0. Ele tem o código aberto e não possui licença dupla, portanto você pode utilizá-lo em qualquer tipo de aplicação, seja ela comercial ou não, sem pagar nada por isso - é totalmente GRATUITO!”

"Licensing

The Firebird database engine and its modules are released under an open-source license, the Initial Developer’s Public License (IDPL), a variant of the Mozilla Public License (MPL). It does not require the developer to open the products using Firebird or even custom-derivatives made from its source code, but if the developer chooses to do so, then some terms and conditions should be honored. The IDPL allows the developer to make proprietary, closed-source applications that use Firebird or are based on it."
tradução:
"O motor de banco de dados Firebird e seus módulos são liberados sob uma licença de código aberto, a licença do desenvolvedor Initial Public (IDPL), uma variante da Mozilla Public License (MPL). Ele não requer que o desenvolvedor abra os produtos usando Firebird ou mesmo personalizados derivados feitos a partir de seu código-fonte, mas se o desenvolvedor escolhe para fazê-lo, em seguida, alguns termos e condições devem ser honrados. O IDPL permite ao desenvolvedor fazer, aplicações de código fechado proprietários que usam Firebird ou são baseados nele. "

Agora, qual escolher vai da conveniência de cada um.

Dê sua opinião!

Apesar do POSTGRES com SC não ter a melhor das performance devidos alguns detalhes que a NETMAKE facilmente resolveria e como já fizemos alguns trabalhos com este banco, decidimos migrar para POSTGRES E MARIADB (já que distribuímos os fontes php).

  • Muito bom Alexandre.

Fiquei com algumas dúvidas:

1 - Qual a diferença do MySQL Community sob licença GPL para o MariaDB sob licença GPL… Não temos que fornecer o código fonte de nossa aplicação da mesma forma?

2 - O MySQL Community funcionaria bem nos servidores de hospedagem?

A maioria esmagadora dos provedores já usa o community.
E todo mundo que usa o Mysql “não tão free” já usa o community.
O Mysql enterprise somente consegue baixar como trial.

Quanto ao usar o MariaDB ou MySQL apesar da licença ser a mesma:

  1. O MySQL tem agregado novas funções em sua maioria somente na versão paga.
  2. O futuro da licença do MySQL é incerto.
  3. A Oracle meio que se arrasta no desenvolvimento do mysql com a colocação de novas funções
  4. O MariaDB tem novas funções incorporadas e o desenvolvimento é mais rápido que o MySQL.
  5. A performance do MariaDB é superior ao MySQL.
  6. Empresas de grande porte como google, Wikipedia, Infolink, distros linux e etc migraram para o MariaDB. Não creio que esta migração seja somente modismo.
    Veja o caso do openoffice e do seu fork libreoffice. O libreoffice está lá na frente do openoffice
    Acredito que o mesmo acontecerá com o Mysql e seu fork o MariaDB.
  7. É mais fácil migrar agora do que mais tarde quando os dois produtos começarem a se distanciar.

Alexandre,

Perfeito. Dúvidas sanadas. E rumo ao MariaDB!!! rsrsrs

  • um Icone para a próxima versão do SC na hora de criar a conexão de banco de dados:

A minha Caravela vai para onde o vento vai…

Se a ferramenta der suporte e as hospedagens oferecem ele “porque não…”

Boa Jailton.

Ainda não consegui entender “o que temos que fornecer o código fonte”…
Em meu caso particular eu não vendo nada, apenas alugo! Sendo assim, todos os meus sistemas ficam no meu servidor, eu libero apenas um link da empresa com os devidos usuários cadastrados e solicitados em contrato. Como vocês estão fazendo ?

Só é necessário fornecer o codigo fonte se você empacotar seu sistema juntamente com o mysql ou mariaDB, se você vende seu sistema separadamente e tem como alternativa o Mysql como banco você pode usar a versão opensource na boa, estive no php conference e falei exatamente sobre isso no estande da Oracle/Mysql.
Sugestão, mantenha suas regras de negócio no PHP e use o banco apenas como repositório de dados, assim fica fácil manter versões de SGDB´s diferentes e se livras dessa burocracia.

Só mais uma coisa, migrei meu principal servidor para o mariaDB hoje, e estou simplesmente maravilhado com a performance e facilidade de uso, estava com o mysql 5.6 desinstalei e coloquei o mariaDB.

Nesse caso fredy não precisa, você tem o modelo SaaS de negócio e a licença é livre nesse caso.

E como o Saulo disse: Se seu sistema depende unicamente do Mysql para funcionar e você empacota ou mesmos deixa ao cliente o cargo de instalação do Mysql terá que distribuir o código fonte.
Aqui http://www.macoratti.net/msql_lc1.htm é uma explicação baseada no licenciamento do mysql 4. Mas que ajuda entender.
Cito a última parte:
"Vendendo produtos que usam o MySQL

Para determinar se você precisa ou não de uma licença MySQL quando vender sua aplicação é dependente no uso do MySQL e se você inclui ou não o servidor MySQL com seu produto. Existem diversos casos a considerar:

Sua aplicação necessita do MySQL para funcionar corretamente ?

Se seu produto necessita o MySQL, você precisa de uma licença para qualquer máquina que executa o servidor mysqld. Por exemplo, se você desenvolveu sua aplicação sobre o MySQL, então você realmente criou um produto comercial que necessita do mecanismo, então precisa de uma licença.
Se a sua aplicação não necessita do MySQL, você não precisa obter uma licença. Por exemplo, se o uso do MySQL apenas adiciona alguns novos recursos opcionais para seu produto (como gerar log para um banco de dados em vez de simplesmente usar um arquivo texto), ela deve cair no uso normal, e uma licença não é necessária.

Em outras palavras, você precisa de uma licença se você vender um produto desenvolvido para ser usado especificamente com o MySQL ou que necessita do servidor MySQL para funcionar completamente. Isto é verdadeiro se você fornecer ou não o MySQL para seu cliente como parte da distribuição de seu produto.

Ela também depende em o que você irá fazer pelo cliente. Você planeja fornecer a seu cliente instruções detalhadas sobre como instalar o MySQL com seu software? Então seu produto pode ser contingente no uso do MySQL; Se sim, será necessária a compra de uma licença. Se você está simplesmente amarrando em um banco de dados que você espera já estar instalado na época em que seu software foi comprado, então possivelmente não precisa de uma licença.

Se você necessita de uma licença MySQL, o caminho mais fácil para pagar por ele é usar o formulário de licença no servidor seguro da MySQL em https://order.mysql.com/. (Outras formas de pagamento são discutidas em section Payment information.)

Resumindo :

Se você distribuir o MySQL com sua aplicação comercial que usa o MySQL , e , precisa dele para funcionar , terá que ter uma licença do MySQL.

Se você somente usa o MySQL mas não distribui o MYSQL com sua aplicação , e ela não necessita dela para funcionar corretamente , não precisa de uma licença."

Saulo,
Obrigado por falar da sua migração.
Acho que este é um ponto crucial, o ganho de desempenho.
Eu parei de usar o MySQL na versão 4, mas agora penso em fazer uns teste com o MariaDB

Alexandre, particularmente eu estou gostando e muito. Achei bem mais rápido, e acredito que é mais rápido que o Postgrees. Recomendo!

Recomendação aceita Fred.

Excelente artigo de todos os colegas parabéns. Como disse em outro post estou utilizando MariaDb já algum tempo acredito que Julho/2014.

Discordo na questão regras de negócio no php, não acho que seja uma boa prática de programação e mais, o php é aberto, se o ambiente de produção não for restrito ao programador ou as aplicações não estiverem com seu código ofuscado, incorre na questão de segurança e exposição das suas regras de negócio.

Só por causa da licença do banco de dados?

Não disse que é uma boa prática de programação, aliás o que é?
Disse que se você se preocupa com essa questão uma saída seria fazer isso e manter o sistema livre de burocracias.

Nem eu afirmei que você disse que seria uma boa prática Saulo, eu é que não vejo como uma boa prática para desenvolvimento de software. Como eu passei 3 longos e exaustivos anos, adaptando meu software para que um cliente conseguisse certificação ISO + os diversos cursos de ITIL que tive que fazer, isso me tornou mais sistemático no desenvolvimento. Inclusive esse seria meu tópico a explanar no Hangout (acredito eu adormecido por tempo indeterminado). Não leve para o lado pessoal, foi só a minha observação.

Desculpem minha ignorância,

Mas para um pobre desenvolvedor que utiliza o SC com o MySql, o que mudaria, em termos práticos, se eu quisesse testar o MariaDB?
Minha licença do SC irá conectar ao “bichinho”?

Eu procuro deixar o sistema mais independente possível do BD.

[]s

Jorge,

O SC se conecta normalmente ao MariaDB, sem mudar nada. Apenas mude a conexão do banco para MariaDB mesmo indicando o MySQL e funciona.