O objetivo dessa palestra é mostrar a experiência da cooperação entre dois projetos de software livre (Expresso e Tine 2.0), baseados em países diferentes, e como ambos aprenderam a usar a comunicação e a arquitetura de software para se manterem conectados, e como isso pode ajudar empresas a encararem a contribuição a comunidades de software livre como um investimento e fazer isso parte de seu negócio.
6. Pinguins
Torvalds wrote the computer operating
system at the age of 22 and had
released the first versions of Linux on
the internet in 1991. He led an
international team of computer
professionals who took control of the
operating instructions from companies
that made billions of dollars by selling
the software preinstalled on new
computers. Torvalds cannot take
money for his invention at Silicon
Valley because he decided to make
his work product available to anyone
who wanted it for free.
https://opensourcesoftware-linux.wikispaces.com/Linus+Torvald
10. O Expressov3
O Expressov3 é um software de colaboração de grupos, com
correio eletrônico, webconferência e mensageria instantânea.
O projeto Expresso foi criado pela CELEPAR (Companha de
Tecnologia da Informação do Paraná). A versão 2 está presente
em mais de 100 instituições no país e é usada por mais de 500 mil
pessoas.
A versão 3 foi lançada em 2012, com evolução da plataforma
tecnológica para melhorar a manutenção e extensão do software.
O Expressov3 é uma opção competitiva em termos de custo com a
possibilidade de baixar o software gratuitamente e montar uma
nuvem privada.
11. Temos consciência de que...
“Um Cliente é o mais importante
visitante das nossas instalações.
Ele não depende de nós, nós é que
dependemos dele. Não é uma
interrupção no nosso trabalho, é a
finalidade deste. Não é um
estranho no nosso negócio, faz
parte dele. Ao servi-lo, não estamos
a fazer-lhe um favor, é ele que nos
faz um favor ao dar-nos uma
oportunidade para o servirmos.”
Mahatma Gandhi
12. Queremos oferecer um bom produto ao
nosso cliente.
Um produto que seja seguro.
Um produto que seja estável.
Um produto que seja flexível.
Um produto com custo de manutenção
aceitável.
Um produto que contribua com uma
imagem positiva da empresa.
13. Por isso queremos investir (mais)
na integração Expresso X Tine 2.0
}
Focar negócio do Serpro
● Segurança
● Estabilidade
● Flexibilidade
● Funcionalidades
genéricas / Demandas
da comunidade
Expresso
14. Fatos
Pegamos um projeto inteiro de graça e só
usamos 40% dele.
ActiveSync Addressbook Admin Calendar Courses
Crm Felamimail Filemanager HumanResources Inventory
Phone Projects RequestTracker Sales Setup
SimpleFAQ Sipgate Tasks Timetracker Tinebase
Tool Voipmanager
15. Fatos
Existe um potencial de reuso para demandas
internas, de clientes e da comunidade, no Brasil e
América Latina.
ActiveSync Addressbook Admin Calendar Courses
Crm Felamimail Filemanager HumanResources Inventory
Phone Projects RequestTracker Sales Setup
SimpleFAQ Sipgate Tasks Timetracker Tinebase
Tool Voipmanager
16. Fatos
Mesmo os módulos do Expresso criados pelo
SERPRO usam ou reusam módulos do Tine 2.0
Expressomail Webconference Messenger Expressodriver
Felamimail Filemanager
Tinebase
Tool
AppLauncher
17. Fatos
Dois módulos criados pelo Expresso foram
submetidos como contribuição para o Tine 2.0 e
estarão disponíveis nas próximas releases.
Expressomail Expressodriver
18. Fatos
E se podemos ter clientes diferentes
(ExpressoLite) é porque reusamos a arquitetura
da aplicação, que é orientada a serviços.
ExpressoLite
ActiveSync
WebDAV
19. Fatos
Trazer atualizações da comunidade economiza
em custo de desenvolvimento.
Uma funcionalidade do Tine 2.0 como a melhoria
da conexão CalDAV custou 2.720 € (~R$ 8160)
para os patrocinadores do projeto (divididos em
7).
Nós pegamos essa funcionalidade de graça.
20. Fatos
Para se ter ideia, sem a integração das
comunidades Tine 2.0 e Expresso, se o SERPRO
tivesse de criar o Tine 2.0 do zero e deixá-lo com
as funcionalidades atuais, teria gasto cerca de R$
225.696.000,00 apenas com desenvolvimento
(considerando o valor médio de R$ 8000,00 para
cada commit no repositório)
23. Fatos
Tarefa #11613 do Expresso,
melhorada pelo Tine 2.0, com
adição de priorização de tipo
de serviço (HTTP, Json,
WebDAV, ActiveSync) e
criação de testes
automatizados
Testes
Isso aumenta a qualidade do
produto!
25. Fatos
O ambiente de integração contínua e testes
automatizados do Tine 2.0 está muito à nossa
frente. Quando submetemos para eles uma
alteração nossa, descobrimos bugs que não são
percebidos aqui dentro, e conseguimos corrigi-los
antes que se manifestem.
26. Fatos
Fica difícil integrar mudanças, se o código do
Expresso e do Tine 2.0 estiverem muito
diferentes.
Por isso é preciso manter o código comum
atualizado.
O ideal é integrar todo release estável do Tine
2.0.
27. Fatos
Para atualizar constantemente o Expresso com
código do Tine 2.0, é necessário separar o que é
implementação de regra de negócio específica do
Serpro do que é genérico.
Tinebase
Expressobase
Específico do Serpro Genérico
28. Fatos
Isso não somente permite a atualização, como
também evita que o Serpro distribua
funcionalidades dependentes do seu ambiente
de produção e que só atendem aos seus clientes
ou só servem no Brasil.
SÓ FUNCIONA
NO SERPRO
29. Fatos
Cada empresa tem suas demandas e ambiente
produtivo com características próprias. Por isso o
produto tem de ser flexível.
30. Fatos
Expresso tem um mercado
potencial na América
Latina, mas precisa
funcionar com a realidade
de cada país. Tem que ser
flexível.
31. Fatos
Separar o código específico do Serpro e não
desenvolver código que o Tine 2.0 já cria tem a
vantagem de permitir o foco no atendimento das
demandas do cliente do Serpro e na melhoria da
qualidade do que é específico para o Serpro.
32. Fatos
É bom que um projeto seja sustentado por mais de
um membro, em comunidade.
“Melhor é serem dois do que um, porque têm melhor
paga do seu trabalho. Porque, se um cair, o outro
levanta o seu companheiro; mas ai do que estiver
só; pois, caindo, não haverá outro que o levante.”
Eclesiastes 4:9-10
34. Fatos
Não é bom querer fazer tudo sozinho.
Isso é sintoma da Síndrome do Ursulão.
Ursulão é um personagem de desenho animado
que sempre decidia fazer as tarefas de casa, ao
invés de dar dinheiro para a mulher contratar um
especialista (eletricista, encanador, pintor).
Resultado: a casa pegava fogo; o cano estourava; o
motor do carro fundia. E no final, ele tinha que
gastar mais dinheiro pra consertar o que estragou.
35. Fatos
Ao desenvolver de forma colaborativa, evitamos
fazer uma implementação que resolve um
problema de forma imediata mas cria vários
outros problemas que temos de passar meses
para resolver.
36. Fatos
● Não devemos fazer somente o que o cliente
pede.
● Não devemos esperar o cliente pedir.
37. Fatos
● Temos de ser ousados,
criativos e inovar
● Temos de melhorar
continuamente a qualidade
dos produtos e serviços
para o cliente
38. Fatos
A atualização constante do código do Tine 2.0
permite que captemos funcionalidades não
solicitadas pelos clientes, mas que podemos
apresentar.
Exemplo: importação de eventos (existe no Tine
2.0, não existe no Expresso)
39. Fatos
Na visão de futuro do Tine 2.0 está a ampliação
da integrabilidade: a facilidade de integrar o
produto com aplicações de terceiros, ou
“pendurá-las” nos módulos do Tine 2.0.
Além disso, a ampliação do desacoplamento: a
facilidade de desacoplar as bibliotecas
(dependências) de terceiros e acompanhar a
evolução de cada uma de forma independente.
40. Fatos
Na visão de futuro do Tine 2.0 está a ampliação
do uso de dependências de terceiros (delegação
de negócios específicos a especialistas em seus
respectivos negócios).
Isso abre a possibilidade de usar funcionalidades
disponíveis em outros frameworks especialistas.
41. Qual é a nossa estratégia de
integração
● Nós isolamento de código com regras de
negócio específicas do Serpro;
● Restringirmos alterações na API do sistema, e
expandimos o uso de plugins;
● Contribuímos com a comunidade como parte
do processo do desenvolvimento.
42. Importante
O SERPRO não tem contrato de suporte com o
fornecedor da API do Expresso, por isso a
integração de código do SERPRO é feita no
tempo de comunidade: a priorização é feita de
acordo com a importância da demanda para os
patrocinadores do Tine 2.0.
43. Importante
Neste caso, é ainda mais importante isolar o
código de negócio específico do SERPRO e
enrijecer o critério de aceitação de mudanças
para a API (se não for plugável ou configurável,
não entra).