A Economia do Open-Source

30 de Junho, 2016

Informática, Marketing, Mercados, Open-Source, Programação, Software

Depois dos últimos artigos sobre o orgulho / cegueira de alguns profissionais da área do software em relação ao open-source escrevo agora sobre a sua economia. Relembro uma parte do meu artigo Orgulho Open-Source:

(…) crise leva as administrações a pressionarem os departamentos para cortar custos (…) custos também são licenças de software — assim (…) criam programas de migração para open-source.

Tendo isto [investimento, complicações associadas à mudança etc] em conta uma mudança para open-source só poderia acontecer caso a administração autorizasse. Como as administrações não são constituídas por técnicos a sua única visão das coisas é puramente financeira. Se foi adoptado open-source foi apenas um resultado indirecto de uma imposição financeira.

Muitos dos fanboys do open-source têm dificuldade em entender que numa empresa qualquer mudança é um processo complexo e que só se fazem quando existe necessidade de reduzir custos ou criar novos produtos.

Aviso Prévio

Queria deixar bem claro: pelo menos 70% do meu negócio só é possível devido ao open-source e este número tem tendência a aumentar. Ao contrário do que alguns pensam eu sou apologista do open-source e contribuo com projectos próprios no GitHub e/ou com patches para outros projectos.

O objectivo deste artigo não é passar a ideia de que o open-source é “mau” ou que deve ser abandonado, é transmitir uma visão macro-económica sobre o open-source para que os fanboys perceberem as limitações da sua visão.

Como Funciona o Open-Source?

Parece óbvio: os projectos são criados a partir de contribuições individuais de programadores. Mas como? Existem principalmente três tipos de contribuições:

  1. Contribuições dos fundadores: ou participantes que se mantêm praticamente sempre os mesmos;
  2. Contribuições baseadas em necessidades: um programador ao tentar utilizar o código depara-se com um bug ou uma falta de funcionalidade e cria um patch para resolver o problema;
  3. Grandes investimentos: inesperados de grandes empresas como a Apple (que levou ao nascimento do WebKit atual a partir do KHTML) ou a Google com o Blink criado a partir do WebKit.

Grandes Investimentos Institucionais

As empresas contribuem funcionalidades complexas e necessárias a todos, normalmente delegando dezenas de programadores ao projecto. É obvio que quando uma empresa está a pagar a dezenas de programadores para contribuir para algo open-source está a faze-lo apenas por razões puramente estratégicas.

No caso da Apple a aposta do WebKit baseou-se no seguinte: numa era em que o Internet Explorer dominava o mercado (e em que a Apple estava em grande crescimento) não ter um browser próprio era uma fraqueza — não podiam influenciar o futuro da Web.

Ao contribuir para o Webkit, a Apple, conseguiu ter um browser relevante (que hoje até temos em telemóveis) e acima de tudo lançar um projecto que mais tarde permitiu a Google destronar a posição dominante do Internet Explorer. Repare-se que individualmente a Apple ou a Google não conseguiriam reduzir o Internet Explorer aos seus atuais 10% de cota de mercado, mas em conjunto já conseguiram.

webkit-contribuitors

Podemos dizer que o investimento institucional em open-source é obviamente sempre motivado por uma das duas razões estratégicas (dinheiro):

  1. Redução de custos internos: ao usar open-source já existente (mesmo contribuindo novo código);
  2. Integração em produtos: para criar produtos complexos que de outra forma levariam a grandes investimentos pouco viáveis (ex. Safari, Chrome).

Contribuições dos Fundadores

Olhemos para os fundadores dos projectos: criar um projecto útil é um processo demorado e trabalhoso na ordem das centenas de horas de trabalho. Será só altruísmo? Bem… normalmente os programadores têm um habito curioso de precisar de comida, roupa, casa, computadores, internet etc… tudo isto tem custos e são muito poucos os que têm outras fontes de rendimento que não ocupem a grande maioria do seu tempo.

Para acontecerem, estes projectos, terão de ser úteis (financeiramente) aos seus fundadores de alguma forma. Abrir o código de um projecto pessoal é muitas vezes resultado da mesma necessidade que as empresas sentem: distribuição leva a contribuições de alheias. As contribuições alheias permitem melhorar o projecto e introduzir novas funcionalidades sem praticamente nenhum investimento temporal / financeiro dos fundadores.

A Utopia

Vamos fazer um programa que dê para xyz, isso é pequeno e é rápido e vai ser divertido…

Esta clássica utopia dos fanboys altruístas até pode ser verdadeira para pequenos projectos movidos pelo gosto de programar, no entanto isto não se aplica aos grandes projectos.

Em projectos como o Apache (os realmente úteis às massas) existem questões técnicas bastante complexas e é necessário investir meses de trabalho para conseguir progressos. Os típicos fanboys não têm competência técnica para realizar estas contribuições, ou como o seu ordenado não depende delas acabam por não poder e/ou querer dedicar-se assim tanto…

Eu quero ser bem claro: isto é tudo um problema estrutural e não a realidade isolada de um pequeno hobby pessoal. Grandes necessidades institucionais = grande investimento = grande número de contribuições. Por vezes a dimensão dos investimentos leva empresas rivais (como a Apple e Google) a contribuir código para o mesmo projecto — só assim conseguem garantir a sua posição no mercado.

Um programador pago terá todo o tempo para investir em projectos open-source desde que, obviamente, os resultados estejam alinhados com a estratégia de crescimento da sua empresa — nenhum gestor se vai opor a ganhar dinheiro.

tl;dr: Todos temos de comer e pagar contas. Quem contribui têm de ter alguma forma de subsistência (trabalhar para uma empresa). Para uma empresa contratar e investir têm de vender algo.

O Problema de Marketing

marketing-warfare-share

Na minha opinião não existe qualquer problema em fazer coisas com motivações financeiras. O problema do open-source é que muitas pessoas / fanboys foram convencidos de é tudo altruísmo.

Esta ideia proliferou tanto que hoje as empresas até usam o open-source como uma forma de branding — empresas alinhadas como open-source são vistas como socialmente sustentáveis, inovadoras, bons exemplos etc… quem não o faz é visto como uma “evil corporation” (Microsoft) dos anos 90.

Nos anos 90 o domínio das soluções proprietárias de empresas como a Sun e Microsoft impediam pequenos players de vender o seu software por falta de funcionalidades e outras questões de compatibilidade. Como resposta alguns mudaram de estratégia, decidiram iniciar projectos open-source para criar software competitivo de alta qualidade. Quando vários pequenos players se juntaram, a desenvolver, reduziram os custos (já que não havia duplicação de esforço) e tornaram-se capazes de competir com as grandes soluções proprietárias.

A “partilha de código” não é um ato de altruísmo: ganância, procura pelo domínio e individualismo nunca permitiria um altruísmo destes. O código partilhado muitas vezes acontece porque, individualmente, as empresas iriam à falência e a sobrevivência fala mais alto do que a ganância…

Muitos projectos open-source que foram surgindo sofriam de baixa notoriedade e os seus fundadores procuraram formas de apelar a outros programadores. Uma delas foi a ideia do altruísmo — afinal todos queremos ser bem vistos.

O Exemplo da Oracle

A Oracle é a favor do open-source, detêm o Oracle Linux e projectos como o MySQL  Têm também soluções de base de dados próprias e o seu apoio ao MySQL é uma aposta estratégica com dois objetivos:

  1. Controlar a evolução do MySQL: impedindo que o projecto evolua tão rápido quanto podia tornando-se superior às soluções proprietárias da Oracle;
  2. Facilitar a migração para Oracle Database: quando os grandes clientes precisarem de mais funcionalidades do que aquelas disponíveis no MySQL a Oracle estará lá para lhes oferecer migrações simples / automatizadas, suporte etc — tudo para captar clientes!

Por causa deste conflito de interesses surgiu o MariaDB, um fork / projecto paralelo, compatível com o MySQL. Este foi fundado por alguns dos criadores do MySQL depois de perceberem que a Oracle estava a limitar a evolução. Mesmo assim o MariaDB não é de certeza um ato de altruísmo contra a “the big greedy (oracle) corporation”. Os fundadores do projeto têm centenas de clientes onde utilizaram a base de dados MariaDB. Este projecto permite-lhes disponibilizar soluções superiores às do MySQL, e cobrar grandes taxas de suporte que nunca receberiam, por exemplo, a vender / dar suporte a soluções da Oracle.

Empresas como a Oracle aproveitam-se da ideia pré-concebida dos seus clientes sobre open-source para os converter, eventualmente, em soluções pagas (e bastante caras) quando o open-source deixar de ser capaz de responder às suas necessidades.

Oracle Business Formula: Controlar evolução do MySQL + Convencer pequenos negócios a usá-lo = Clientes lucrativos no futuro. 

Será que fui claro o suficiente? It’s all about the money.

my-pocket

Conclusão

Os projectos open-source incluem pessoas e todos os problemas sociais típicos. Uma mudança para open-source é bastante cara (acima das possibilidades de um departamento de SI) logo quando acontece é um ação estratégica autorizada pela administração para reduzir custos / aumentar a lucratividade.

open-source não é um ato de altruísmo, é única forma de ser competitivo e sobreviver num mercado dominado por grandes players. Os grandes players adoptam hoje open-source principalmente porque as suas soluções in-house já não conseguem competir com a qualidade do open-source.

tl;dr: Todos temos de comer e pagar contas. Quem contribui têm de ter alguma forma de subsistência, normalmente apoiada por estes projectos.