Desenvolvimento em
Comunidade
"If you have an apple and I have an apple and we exchange these apples then you
and I will still each have one apple. But if you have an idea and I have an idea and
we exchange these ideas, then each of us will have two ideas." - George Bernard
Shaw




                                                                     Pedro Dias
                                                        http://www.pedromdias.com
Resumo


Open-source em Portugal.
Como é constituída uma comunidade.
Como colaborar dentro da comunidade.
Ferramentas de colaboração.
Caso prático no IPT.
Onde está o open-source?




 Comunidade global
                     http://www.redhat.com/about/where-is-open-source/activity
Utilização de open-source em Portugal
 Positivos para adopção
   Start-ups adoptam open-source de forma estratégica.
   Soluções de chave na mão implementadas com recurso a
   open-source.
   Estado da economia actual -> necessidade de redução de
   custos.


 Negativos para adopção
   Mais barato = inferior qualidade. (mito)
   Divulgação do código fonte = falha de segurança. (mito)
   Suporte às soluções existentes.
   Dependência de determinados fornecedores. (Micro$oft, entre
   outros)
Desenvolvimento open-source em Portugal
 Falta de desenvolvimento comunitário.
   Desenvolvimento open-source sem ou com poucas contribuições
   externas ao autor/dono do projecto.
           Falta de desenvolvimento comunitário.
   Abertura das soluções devido à utilização de peças licenciadas de
   forma viral e não como decisão inicial ou estratégia.


 Casos de open-source em PT:
   Caixa mágica (considerado caso de sucesso e com uma comunidade
   activa)
   Fénix
   Alinex
   iPortalmais
   Outro casos em: http://www.esop.pt/
Comunidade Debian




                    http://www.debian.org/devel/developers.loc
Comunidade Debian




                    http://widi.berlios.de/paper/study.html
Papel da comunidade
Community Architecture
Team (Red Hat)
 ”Community serves as a catalyst
 in everything that Red Hat,
 Fedora, and JBoss does.”

 ”From a business point of view,
 energy, time, and money are all
 synonymous.”

 Microsoft and Red Hat can both
 produce an operating system. Our
 job is to ensure that Red Hat does
 so more efficiently, and
 community is the mechanism by
 which we achieve that.
Life-cycle da comunidade
 Projecto pessoal
   Um programador inicia o projecto e materializa as suas ideias
   iniciais.
   Publica o seu código na web.
 Outros programadores juntam-se ao projecto.
   Nasce uma comunidade.
   Nascem diferentes equipas dentro da comunidade.
   São criadas criadas regras de funcionamento dentro da
   comunidade.
 O programador inicial assume o papel de líder da comunidade.
 São estandardizados os meios de comunicação para a comunidade.
 Criação de uma linha de produção colaborativa.
Equipas dentro da comunidade

 Analistas
   Análise do sistema a implementar.
 Programadores
   Materializam as ideias e a análise.
 Testers
   Testam as diversas funcionalidades.
 Gestores de pacotes
   Estudam como e onde fazer o deployment do código
   produzido.
Colaborar
Ferramentas de colaboração
  Controlo de versões
       Analistas
       Programadores
       Testers
       Documentação
  Ticketing system (bug trackers)
       Programadores
       Testers
  Testing tools
       Testers
  Package management
       Gestores de pacotes
  Comunicação
       Todos
Controlo de versões

 Autenticação
   Todas as subsmissões de código têm obrigatoriamente um autor identificado.
 Operações
   Import (Checkin)
      Upload inicial para o servidor.
      Semear projecto.
   Checkout
      Download inicial para o computador de trabalho do utilizador.
   Update
      Actualiza a versão local no computador com a versão mais recente no
      servidor.
   Commit
      Upload das alterações efectuadas localmente para o servidor.
Import
Import
Checkout e commit
Bug tracker

 Papéis
   Testers
          Reportam bugs/falhas/defeitos... no tracker, normalmente
          através de tickets.
   Programadores
          Consultam o tracker de forma a conhecerem novos bugs e
          procederem à sua resolução.


 Integração
   Normalmente integrado com o sistema de controlo de versões.
   Diferenciar multiplas alterações de versão.
   Análise estatistica das diversas contribuições.
Ticket
                          Quem está a
                            resolver
             Prioridade


   Quem
reportou o
 problema



Descrição
   do
problema
Colaboração



                  Testing tools
                                 Testers

    Package                          Bug trackers
     mngt
                              Programadores
      Gestores de pacotes
                       Version
                       control
                      Documentação
                        Analistas
Comunicação

Foruns
  Comunicação persistente.
  Pouco interactivo.
Wiki
  Comunicação persistente.
  Interactivo e colaborativo.
  Integrado em algumas soluções de bug tracking.
Instant messaging
  Não persistente.
  Habitualmente requer instalação de um cliente.
In the field
Instituto Politécnico de Tomar
Dep. Engenharia Informática
Projecto de Sistemas de Informação - 3º Ano
Projecto Fractuspic
Fractuspic
Fractuspic
  Webapp similar ao twitpic.
  Compressão de imagem através de fractais.
  Autenticação centralizada (openid, google accounts api).
  Open-source


Componentes do sistema
  Core do sistema - compressão de imagem.
  Web - users, upload de imagens, webapp.
Equipas de
desenvolvimento
Core do sistema


Base de dados


Web development


Autenticação
Ferramentas utilizadas

Controlo de versões
 SVN (http://subversion.tigris.org/)
Bug tracker
 TRAC (http://trac.edgewall.org/)
Comunicação
 Wiki (http://trac.edgewall.org/)
Fractuspic servidor de
desenvolvimento




 http://code.dei.estt.ipt.pt/trac/fractuspic

Desenvolvimento em Comunidade

  • 1.
    Desenvolvimento em Comunidade "If youhave an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas." - George Bernard Shaw Pedro Dias http://www.pedromdias.com
  • 2.
    Resumo Open-source em Portugal. Comoé constituída uma comunidade. Como colaborar dentro da comunidade. Ferramentas de colaboração. Caso prático no IPT.
  • 3.
    Onde está oopen-source? Comunidade global http://www.redhat.com/about/where-is-open-source/activity
  • 4.
    Utilização de open-sourceem Portugal Positivos para adopção Start-ups adoptam open-source de forma estratégica. Soluções de chave na mão implementadas com recurso a open-source. Estado da economia actual -> necessidade de redução de custos. Negativos para adopção Mais barato = inferior qualidade. (mito) Divulgação do código fonte = falha de segurança. (mito) Suporte às soluções existentes. Dependência de determinados fornecedores. (Micro$oft, entre outros)
  • 5.
    Desenvolvimento open-source emPortugal Falta de desenvolvimento comunitário. Desenvolvimento open-source sem ou com poucas contribuições externas ao autor/dono do projecto. Falta de desenvolvimento comunitário. Abertura das soluções devido à utilização de peças licenciadas de forma viral e não como decisão inicial ou estratégia. Casos de open-source em PT: Caixa mágica (considerado caso de sucesso e com uma comunidade activa) Fénix Alinex iPortalmais Outro casos em: http://www.esop.pt/
  • 6.
    Comunidade Debian http://www.debian.org/devel/developers.loc
  • 7.
    Comunidade Debian http://widi.berlios.de/paper/study.html
  • 8.
    Papel da comunidade CommunityArchitecture Team (Red Hat) ”Community serves as a catalyst in everything that Red Hat, Fedora, and JBoss does.” ”From a business point of view, energy, time, and money are all synonymous.” Microsoft and Red Hat can both produce an operating system. Our job is to ensure that Red Hat does so more efficiently, and community is the mechanism by which we achieve that.
  • 9.
    Life-cycle da comunidade Projecto pessoal Um programador inicia o projecto e materializa as suas ideias iniciais. Publica o seu código na web. Outros programadores juntam-se ao projecto. Nasce uma comunidade. Nascem diferentes equipas dentro da comunidade. São criadas criadas regras de funcionamento dentro da comunidade. O programador inicial assume o papel de líder da comunidade. São estandardizados os meios de comunicação para a comunidade. Criação de uma linha de produção colaborativa.
  • 10.
    Equipas dentro dacomunidade Analistas Análise do sistema a implementar. Programadores Materializam as ideias e a análise. Testers Testam as diversas funcionalidades. Gestores de pacotes Estudam como e onde fazer o deployment do código produzido.
  • 11.
  • 12.
    Ferramentas de colaboração Controlo de versões Analistas Programadores Testers Documentação Ticketing system (bug trackers) Programadores Testers Testing tools Testers Package management Gestores de pacotes Comunicação Todos
  • 13.
    Controlo de versões Autenticação Todas as subsmissões de código têm obrigatoriamente um autor identificado. Operações Import (Checkin) Upload inicial para o servidor. Semear projecto. Checkout Download inicial para o computador de trabalho do utilizador. Update Actualiza a versão local no computador com a versão mais recente no servidor. Commit Upload das alterações efectuadas localmente para o servidor.
  • 14.
  • 15.
  • 16.
  • 17.
    Bug tracker Papéis Testers Reportam bugs/falhas/defeitos... no tracker, normalmente através de tickets. Programadores Consultam o tracker de forma a conhecerem novos bugs e procederem à sua resolução. Integração Normalmente integrado com o sistema de controlo de versões. Diferenciar multiplas alterações de versão. Análise estatistica das diversas contribuições.
  • 18.
    Ticket Quem está a resolver Prioridade Quem reportou o problema Descrição do problema
  • 19.
    Colaboração Testing tools Testers Package Bug trackers mngt Programadores Gestores de pacotes Version control Documentação Analistas
  • 20.
    Comunicação Foruns Comunicaçãopersistente. Pouco interactivo. Wiki Comunicação persistente. Interactivo e colaborativo. Integrado em algumas soluções de bug tracking. Instant messaging Não persistente. Habitualmente requer instalação de um cliente.
  • 21.
    In the field InstitutoPolitécnico de Tomar Dep. Engenharia Informática Projecto de Sistemas de Informação - 3º Ano Projecto Fractuspic
  • 22.
    Fractuspic Fractuspic Webappsimilar ao twitpic. Compressão de imagem através de fractais. Autenticação centralizada (openid, google accounts api). Open-source Componentes do sistema Core do sistema - compressão de imagem. Web - users, upload de imagens, webapp.
  • 23.
    Equipas de desenvolvimento Core dosistema Base de dados Web development Autenticação
  • 24.
    Ferramentas utilizadas Controlo deversões SVN (http://subversion.tigris.org/) Bug tracker TRAC (http://trac.edgewall.org/) Comunicação Wiki (http://trac.edgewall.org/)
  • 25.
    Fractuspic servidor de desenvolvimento http://code.dei.estt.ipt.pt/trac/fractuspic