Nesse curso e na vida real a gente usa muito software livre, que é jeito muito interessante de se desenvolver software e de se usar software, mas vez de eu falar sobre isso, eu trouxe aqui o gerente técnico do Centro de Competência e Software Livre do Ime Usp, que é grande especialista e que tem muita experiência software livre e ele vai falar para vocês o que é que é o software livre. Então, vou chamar o Nelson para entrar e enquanto isso eu vou fazer uma mágica aqui e desaparecer. Obrigado, Fábio. Espero que vocês estejam gostando do curso. Então, como o Fábio comentou, eu vou falar pouquinho sobre o que é que é essa história do software livre e talvez alguém de vocês já tenha ouvido falar, mas não sabem bem o que é que é. Software livre é aquele que é gratuito? Aquele que eu encontrei na internet, aquele que não está amarrado algum lugar? Vamos ver o que é que é isso. Primeiro vamos recordar pouquinho. Na primeira aula o Fábio falou pouco sobre a ideia geral do que é que é a computação e programação, e uma das coisas que ele falou foi isso, que o trabalho que a gente faz na área de computação geral é analisar problema, criar uma ideia, algoritmo para resolver esse problema, e aí escrever programa que efetivamente implemente esse algoritmo e testar para ver se ele funciona. Então basicamente o trabalho é entender problema e representar ele na forma de programa numa linguagem de programação. Agora, esse programa que você cria quando você faz isso é uma coisa pouco peculiar. Por quê? Se você pensar, por exemplo, num livro, livro é uma coisa que tem conhecimento embutido lá dentro, essa ideia de vocês, tem arte, enfim tem conhecimento ali. Esse conhecimento, ele pode ser sobre ferramentas, coisas que vão ajudar você a resolver problemas, mas ele é o conhecimento, ele não é a ferramenta. Se você pensar numa ferramenta, de fato, seja martelo, seja uma máquina, automóvel, seja programa de computador, essa ferramenta tem uma utilidade. Certo? Te deslocar para lá e para cá ou martelar alguma coisa. Mas geral o conhecimento que está embutido nessa ferramenta não é acessível diretamente na própria ferramenta, é conhecimento que você pega outro lugar, exceto quando você está falando de programas de computador. No caso dos programas de computador, o programa acaba sendo as duas coisas, ele tem dentro dele o conhecimento sobre o problema e a solução daquele problema que está ali, descrita na linguagem de programação. E, ao mesmo tempo, o programa é uma ferramenta para solucionar o problema, quando você executa esse programa. Então, o programa é uma coisa pouco híbrida, diferente de quem está acostumado para resolver problemas, de ter o conhecimento de lado, com livros, tal, e a ferramenta do outro. E essa não é a única peculiariedade. Os programas também, eles podem ser muito facilmente copiados, o que não acontece com máquinas, por exemplo, você tem uma segunda máquina, você já tem uma, tem de construir a segunda. O programa não, você simplesmente copia, é automático e não tem custo praticamente nenhum. E os programas podem ser facilmente modificados para incorporar melhorias ou resolver problemas novos. Você pegar uma máquina e adaptar para problema novo, ou fazer uma melhoria, é processo bem mais complicado do que você fazer isso num programa de computador. Então o que acontece é que com essas duas coisas aí de ele poder ser facilmente copiado e facilmente modificado, você tem fenômeno muito interessante, a mesma ferramenta, que é o programa, pode ser usada e adaptada por várias pessoas e o conhecimento que está embutido nessa ferramenta que é o programa, pode ser acessado por todo mundo, o conhecimento está lá, na linguagem de programação. Então, isso é muito interessante, só que tradicionalmente, do ponto de vista legal que a gente tem hoje dia, é que os programas são protegidos por direitos de autor, copyright. Que é que isso quer dizer? Que basicamente a gente trata os programas de uma maneira metafórica, a gente faz de conta que eles são objetos que a gente pode comprar e vender. Ou seja, a gente ignora essa vantagem de você poder copiar e modificar tal que o software tem função de, enfim, interesses de mercado, a ideia era facilitar que o dinheiro circulasse nesse meio para viabilizar a criação de novos produtos. Só que o resultado disso é que o uso dessa ferramenta acaba tendo restrições, você acaba não podendo usar para qualquer coisa, você tem que pagar para poder usar, enfim, os recursos que você tem naquela ferramenta acabam sendo pouco limitados. E, aquele conhecimento que estava público para todo o mundo, nem sempre mais fica público para todo o mundo e nem sempre pode ser usado para o que você quiser. Particular, quando o código fonte é secreto, aí esse conhecimento fica realmente obscurecido. O que é que é essa história de código fonte secreto? Lá na primeira aula também, o Fábio comentou que tem principalmente dois tipos de linguagem de programação: as linguagens interpretadas, que você tem o código fonte do programa, aquele que a gente escreve e tem interpretador que traduz automaticamente enquanto o computador está trabalhando, vai traduzindo para aquilo que você quer que de fato o computador faça E tem outro grupo de linguagem que são as linguagens compiladas, onde você tem uma fase intermediária de tradução, esse programa que tem aí no seu código fonte que você escreveu, ele é traduzido para uma outra linguagem, que é a linguagem da máquina, que o ser humano não consegue trabalhar com ela, e aí você pega essa versão traduzida e é essa que você usa. Então normalmente o que acontece quando você pega programa que não é software livre e você instala e ele foi feito numa linguagem compilada desse tipo, você tem acesso só a essa versão que é o código objeto, você não tem acesso ao código fonte. Então aquele conhecimento que estava embutido dentro da ferramenta fica escondido para você. Então, assim, função dessa coisa pouco estranha do que é que é o software e de como a gente lida com o copyright, dessa maneira que acaba gerando algumas coisas não tão bacanas, é que surgiu movimento falando: vamos fazer as coisas de uma maneira diferente, vamos fazer o software livre, e o que é que diabos é isso? O software pode ser compartilhado porque ele é fácil de copiar, como eu estava falando, e ele deve ser compartilhado, a gente só tem vantagens fazer isso. Como assim? Olha, se eu posso ajudar o meu amigo, ele tem problema que precisa de uma ferramenta, eu tenho a ferramenta que é programa e eu posso copiar para ele, por que é que eu não vou copiar? Então, eu copio e dou para o meu amigo e ajudo o meu amigo. Se o meu amigo pode aprender alguma coisa com o meu trabalho, porque ele vai lá e olha o código fonte do que eu escrevi, por que é que eu vou impedir de ele aprender alguma coisa? Está lá, ele acessa o código fonte, vê o que eu fiz, aprende alguma coisa interessante ou sobre o programa que ele está usando ou sobre computação, ou seja lá o que for. E, se eu trabalhar junto com esse meu amigo, a gente vai acabar trabalhando mais rapidamente, mais eficazmente para solucionar problema que, possivelmente, nós dois temos, mesmo que não seja o mesmo problema, seja parecido. Ele tem algumas variações na questão dele que não são exatamente aquilo que eu preciso, eu tenho algumas coisas que não é bem o que ele precisa mas, nós dois juntos, trabalhamos numa solução comum que acaba sendo bom para os dois. E o que é mais interessante: não precisa ser o meu amigo, pode ser uma comunidade com várias pessoas, pode ser empresas junto com universidade, pode ser empresas concorrentes trabalhando conjunto, pode ser gente trabalhando junto na mesma sala ou trabalhando internacionalmente. Tem inúmeros projetos de software livre que envolvem várias instituições, algumas governamentais, algumas empresas, algumas de pesquisa que envolvem várias pessoas às vezes países diferentes. Tem vários exemplos, o Linux, por exemplo, é exemplo que é muito citado, talvez seja o exemplo mais evidente e tem literalmente milhares de pessoas envolvidas no desenvolvimento no mundo todo. Então, assim, isso acaba gerando uma sinergia muito grande, e uma produtividade e uma qualidade muito grande, que são, justamente, algumas vantagens bem fortes do software livre. Então, como é que você define mesmo o que é software livre? A tradicional definição é a definição da Free Software Foundation, é a Fundação para o Software Livre, que define que o software é livre se ele atende quatro pré-requisitos, ele tem que ter quatro liberdades para o usuário. O usuário tem que poder executar o programa, ou seja, qualquer pessoa tem que poder executar o programa para qualquer finalidade. Se tiver qualquer restrição, seja no tipo de pessoa, seja no tipo de finalidade, já não é software livre. A segunda liberdade é liberdade para estudar e modificar o programa. Isso significa que eu tenho que poder ter acesso ao código fonte. Nas linguagens que são compiladas eu não tenho acesso ao código fonte, eu não tenho como estudar e muito menos modificar como é que ele funciona. A terceira liberdade é que eu tenho que ter a liberdade para redistribuir o programa, eu tenho o programa na minha mão, se tem alguém que está precisando de uma cópia, eu vou lá e copio e não preciso de autorização, já está tudo resolvido, já é livre, já está dada de antemão essa autorização para eu poder redistribuir. E finalmente, se eu fiz melhorias nesse programa, eu tenho que poder redistribuir essas melhorias também. Então, assim, aquilo que eu criei de vantajoso para mim, acaba sendo vantajoso para os outros também. E é nisso que está a base dessa ideia de trabalhar colaborativamente, eu melhoro pouco aqui, você melhora pouco ali, aquele outro cara melhora pouco acolá, nós todos juntos fazemos produto que acaba sendo melhor para todos nós. Então, tem várias vantagens do software livre. Termos comerciais tem uma redução de custo e risco de desenvolvimento. Ao invés de você ter uma empresa que tem que contratar toda uma equipe que vai fazer todo o investimento para resolver aquele problema e desenvolver o produto, você tem uma empresa que está trabalhando com outras pessoas e talvez outras empresas nesse desenvolvimento. Então, o risco do desenvolvimento e o custo do desenvolvimento fica pulverizado entre essas várias entidades aí. Potencialmente, a qualidade do software livre é maior, porque se tem mais desenvolvedores trabalhando, você tem mais usuários usando aquele programa e, portanto, reportando falhas e você tem também o desenvolvedor que, quando ele coloca o programa dele abertamente com o código fonte disponível para todo mundo olhar, ele vai falar assim: eu quero que isso aqui esteja bonito senão as pessoas vão achar que sou mau programador. Essas coisas ajudam a qualidade do software livre crescer. E para o usuário é muito interessante também, porque como você tem acesso ao código fonte, como você tem várias entidades, empresas, pessoas trabalhando com aquele código fonte, você tem mais opção na hora de escolher o seu fornecedor de serviço, seja o cara que vai fazer a implementação para você, consultoria, treinamento e tal. E assim, às vezes pode parecer pouco esotérico isso, nossa, nunca tinha ouvido falar nisso, mas na verdade, o software livre é hoje dia muito grande. Você tem muitas coisas de software livre por aí, por exemplo, tem algumas linguagens de programação que são muito usadas, como o java, é uma linguagem extremamente forte hoje no mundo empresarial, ruby, muito usado sistemas web, Python, é a linguagem que a gente está usando nesse curso, são todas software livre. São linguagens de boa qualidade, não só para produtos mesmo, mas também elas são boas termos de expressividade da linguagem, é por isso que elas são usadas, muitas delas, cursos como esse aqui. E tem várias ferramentas que as pessoas estão acostumadas a usar que são software livre, exemplo bem fácil é o navegador firefox. Ele é feito por uma ONG que coordena uma equipe de voluntários mundial e faz o programa firefox. O sistema operacional Android do telefone celular, ele é praticamente todo software livre, é projeto que é conduzido pela Google, mas que tem cliente de fora da Google que trabalha, que colabora e que pega aquele código e faz variações, então, tem versões do Android que não são da Google, com outros nomes, [INAUDÍVEL] outros tal. E vários dos sistemas web que tem hoje dia são baseados softwares livres que são muito tradicionais, como o servidor Web Apache, tem banco de dados MySQL que é muito poderoso, tão poderoso que a empresa que era responsável pelo desenvolvimento do MySQL foi comprada pela Oracle, que é uma empresa especializada bancos de dados. Todos esses produtos são software livre. Então, se você estiver interessado conhecer pouco mais sobre o software livre, tem muita coisa na internet, talvez dois pontos principais, para começar, vamos dizer assim, são a Open Source Initiative, que é grupo de pessoas e empresas que está interessado promover a ideia do software livre como uma coisa interessante comercialmente, e então eles dão toda a explicação de porquê é que vale a pena termos de negócio você trabalhar com software livre. Você tem a Free Software Foundation, que também faz todo movimento, ativismo no sentido de promover o software livre por aí. Mas focando mais na ideia de, olha é importante para os usuários terem a liberdade, é importante ter a colaboração e o conhecimento aberto, e a gente aqui do Centro de Competências e Software Livre tem o nosso site, que tá aí no slide, onde a gente coloca basicamente algumas atividades que a gente faz, desde palestras treinamento, coisa assim, e fala pouco sobre os projetos de pesquisa que estão acontecendo dentro do IME USP e relacionados com o software livre. Espero que você ache esse assunto interessante e se envolva e conheça pouco mais. [MÚSICA] [MÚSICA] [MÚSICA]