SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
UFBA / UEFS
Colaboração em Projetos
   FLOSS1: CakePHP




Profª: Christina von Flach Garcia Chavez
Equipe: Debora Nascimento, Thiago Colares,
Thiago Souto, Vagner Amaral
           Junho de 2012 | Salvador, Brasil
           1: Free/Libre/Open Source Software
Sumário
•    Introdução
•    Seleção do Projeto
•    Reconhecimento Inicial do CakePHP
•    Metodologia Geral para Contribuição
•    Documentação
•    Tradução
•    Caracterização de Bugs / Implementação de Melhorias
•    Testes
•    Análise Sobre Reabertura de Bugs
•    Considerações Finais
Sumário
•    Análise Sobre Reabertura de Bugs
•    Considerações Finais
Introdução
•    OSS - Open Source Software
     •    Liberdade
     •    Comunidades

•    Objetivo
     •    Participar em um Projeto de software Livre
     •    Free Software Patterns (FSP)

•    2 Etapas
     •    Seleção do projeto à CakePHP
     •    Colaboração com o projeto
Seleção do Projeto
•    Análise de várias aplicações

•    Seleção do CakePHP
     •    Framework para o desenvolvimento rápido de aplicações
     •    Segue o padrão MVC
Seleção do Projeto
•    Um dos membros da equipe utiliza o CakePHP na
     sua empresa;
•    Comunidade de usuários expressiva;
•    A comunidade é bastante ativa;
•    O projeto possui:
     •    site oficial sempre atualizado;
     •    sistema para reportar bugs;
     •    documentação
     •    testes automatizados.
•  Os artefatos do projeto são bem gerenciáveis;
•  Oportunidade de aprendizado para a equipe
Reconhecimento Inicial do
        CakePHP
•    Tecnologias utilizadas
     o  PHP / JavaScript / DOS batch script / Shell script;
     o  MySQL / Postgres / SQLite / SQL Server / NOSQLs


o  Alguns Padrões Arquiteturais
     identificados:
     o    MVC / ActiveRecord/ Association Data Mapping / Front
          Controller
Reconhecimento Inicial do
            CakePHP
•    Código-fonte do core do CakePHP (phploc)
      o    Lines of Code (LOC): 215.713
      o    Comment Lines of Code (CLOC): 63.796
      o    Non-Comment Lines of Code (NCLOC): 151.917
      o    Interfaces: 7
      o    Classes: 962
      o    Average Class Length (NCLOC): 161
      o    Methods: 5563
      o    Average Method Length (NCLOC): 27
Reconhecimento Inicial do
        CakePHP
•    Licença do Projeto
     o  MIT License (maior parte)
     o  Open Group Teste Suite License
•    Repositório
     o    Github: https://github.com/cakephp/cakephp
•    Bugtracker
     o    Lighthouse: http://cakephp.lighthouseapp.com/dashboard
o  Suíte de Testes Automatizados: PHPUnit
Reconhecimento Inicial do
            CakePHP
•    Política de Lançamento de Versões
      o      Uma versão por mês
      o      Formato do número da versão X.Y.Z-<token>, no qual:
              §  X = grande mudança no projeto;
              §  Y = pacotes de melhorias / novas funcionalidades;
              §  Z = nova versão estável
              §  <token> = alpha, beta ou RC#
       §    Atuais: 2.1.3 (23/05/2012) e 2.2.0-RC2 (20/06/2012)
Identificação das Tarefas do
          CakePHP
•    Tags dos tickets no Lighthouse
•    Listas de tarefas pendentes no código-fonte
     o    TODO (poucos. melhorias pontuais no código)
•    Tarefas identificadas inicialmente:
     o  Correção do bug relacionado à listagem feita com a
        classe Paginate que utiliza Models diferentes;
     o  Correção do bug relacionado à sinalização manual de
        campos obrigatórios na classe FormHelper;
Metodologia Geral
•  Tipos de atividade:
     o  Documentação
     o  Tradução
     o  Correção de Bugs
     o  Testes
•    Para cada atividade:
     o  caracterizar o projeto de acordo com as questões
        disponibilizadas referentes a cada atividade
     o  escolher uma forma de contribuir com o projeto
        escolhido no escopo da atividade
     o  submeter a contribuição para a comunidade
     o  relatar o feedback recebido da comunidade
•    Uso dos FSP e dos Reengineering Patterns
Documentação [1]
•    Padrões utilizados:
     o  Skim The Documentation (Reengineering Patterns)
     o  Write Documentation (Free Software Patterns)
•    Localização da documentação do projeto
     o  CookBook: http://book.cakephp.org
     o  API: http://api20.cakephp.org
     o  Bakery: http://bakery.cakephp.org
Documentação [2]
•  Documentação adicional:
  o  Visão geral sobre arquitetura
     o    http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-
          view-controller.html
  o  Estrutura Interna:
     o    http://book.cakephp.org/2.0/en/getting-started/cakephp-structure.html
  o  Estrutura de Pastas:
     o    http://book.cakephp.org/2.0/en/getting-started/cakephp-folder-
          structure.html
  o  Bibliotecas:
     o    http://book.cakephp.org/2.0/en/core-libraries.html
Documentação [3]
•  Documentação adicional:
  o  Tutoriais e exemplos:
     o    http://book.cakephp.org/2.0/en/tutorials-and-examples.html
  o  Orientações de como Colaborar com a Documentação:
     o    http://book.cakephp.org/2.0/en/contributing/documentation.html
  o  Guia para formatação da documentação:
     o    http://book.cakephp.org/2.0/en/contributing/documentation.html
  o  Padrões de Codificação:
     o    http://book.cakephp.org/2.0/en/contributing/cakephp-coding-
          conventions.html
Documentação [4]
•  Documentação adicional:
  o  Documentação para uso da suíte de testes (PHPUnit):
     o    http://book.cakephp.org/2.0/en/development/testing.html

  o  Documentação do processo de registro de Bugs:
     o    http://book.cakephp.org/2.0/en/contributing/tickets.html

  o  Documentação do processo de envio de correções:
     o    http://book.cakephp.org/2.0/en/contributing/code.html

  o  Outras informações para desenvolvedores:
     o    http://cakephp.org/pages/development
Documentação [4.1]: IRC
•  Contato direto com desenvolvedores do core
Documentação [4.1]: IRC
•  Bin: ferramenta para compartilhar trechos de
  código http://bin.cakephp.org/
Documentação [4.1]: IRC
•  CakeBot: log de todas as conversas do #cakephp
  http://irc.cakephp.org/
Documentação [5]
•  Características
   o  Formato de Texto: ReST (Re Structured Text)
   o  Repositório: Github (http://github.com/cakephp/docs)
   o  Equipe específica para documentação

Build ReST                          HTML
                      Make;
                      Python;
                      Sphinx;
                      PhpDomain
                      for sphinx.
Documentação [6]
•  Identificação de tarefas de documentação
  o  Diretiva antes do build para exibir TODO's no CookBook
Documentação [7]
•  Tarefas identificadas
   o  Add how to setup PATH for windows systems [1]
Documentação [8]
•  1º Ciclo completo do processo de colaboração
  •    Passo 1: Configuração Inicial (Git/GitHub)
  •    Passo 2: Fork
  •    Passo 3:Clone
Documentação [8]
•  1º Ciclo completo do processo de colaboração
  •    Passo 4: Modificações (direto no GitHub)

        View                               Edit / Commit
Documentação [8]
•  1º Ciclo completo do processo de colaboração
  •    Passo 5: Pull Request
Documentação [8]
•  Tarefas identificadas (resolução)
   o  Add how to setup PATH for windows systems [2]
Tradução [1]
•  Tradução do Core ou de uma Aplicação
  •    Ferramentas Utilizadas
       •    Arquivos POT: template;
       •    Arquivos PO: tradução propriamente dita;
       •    i18n shell (comando extract) para geração do arquivo POT;
       •    PoEdit para manipulação do arquivo PO;

•  Situação do Core
  •    Internacionalizado (i18n), mas não localizado (L10n)
•  Situação da Aplicação padrão
  •    Não era relevante traduzir
  •    Não havia iniciativas da comunidade
•  Equipe optou por focar na Documentação
Tradução [2]
•  Várias orientações aos tradutores [1]
     •     Use linguagem informal, não faça traduções parciais etc.
•  Idiomas disponíveis CookBook
      o    espanhol;
      o    francês;
      o    japonês;
      o    russo;
      o    português;
•  Equipe:
      o  Há um colaborador ativo residente em Salvador / Bahia
         que atua na tradução do CookBook para pt-BR;


[1] http://book.cakephp.org/2.0/en/contributing/documentation.html
Tradução [3]
•  Identificação das atividades:
   o  Contato com a equipe responsável pela tradução pt-BR;
   o  Investigação do repositório no Github;
   o  Análise do CookBook em busca de itens com pouca
      informação em pt-BR (se comparado com en-US);
•  Atividade escolhida: tradução da página principal
  da seção "Views" do CookBook.
  •    Não existia!
  •    Conteúdo relevante
Tradução [4]




{
•  Seção "Views" em en:
Tradução [5]
•  Seção "Views" em pt:



{
Tradução [6]
•  Feedback da tradução da seção "Views" do
  CookBook para pt:
Caracterização de Bugs /
Implementação de Melhorias
•  Bugtracker: Lighthouse
   •   http://cakephp.lighthouseapp.com/dashboard

•  Registro de Tickets
  o  Ciclo de Vida do ticket de um projeto:
       o    http://cakephp.lighthouseapp.com/core-contributor-guidelines

•  Informações encontradas no Registro de Tickets:
  o    Descrição do problema;
  o    Comportamento esperado;
  o    Comportamento obtido;
  o    Passos para reprodução do bug;
  o    Versão do CakePHP em que o bug foi identificado;
  o    Possíveis soluções;
Caracterização de Bugs /
Implementação de Melhorias
•  Critérios utlizados para identificação dos bugs /
  melhorias:
   o  Desenvolvedores validaram o ticket como realmente um
      bug / melhoria;
   o  Descrição objetiva do bug / melhoria.
   o  Conhecimento sobre área do código que está ocorrendo
      o bug / melhoria.
   o  Avaliação superficial e subjetiva se a tarefa pode ser
      realizada em um curto espaço de tempo.
•  A partir dos critérios, foi gerada uma lista com
  vários itens obtidos no Lighthouse. Após a análise
  de cada um dos itens, três deles foram escolhidos.
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2787
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2787
   o  Criação de um clone do fork no Github;
      https://github.com/colares/cakephp/tree/ticket-2787
   o  Atualização dos casos de teste;
      o    Via de regra, a comunidade CakePHP só aceita patches
           acompanhados de casos de estes
   o  Dificuldades na comunicação do PHPUnit (quando
      instalado via Pear) com o CakePHP.
      o    Uso do plugin desenvolvido por Stef van den Ham
           https://github.com/Hyra/PHPUnit-Cake2
   o  Pull request foi aceito pela comunidade
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2787: feedback positivo.
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2787: modificação já está no CookBook.
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2851: método year não ordena
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2851
   o  A equipe verificou o erro e constatou:
      o    O erro não era válido, pois não existia
      o    A solução constava na documentação




   o  No final, o ticket foi marcado como "works-for-me".
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2851
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2894
   o  O usuário apontou um possível erro existente em um
      método do HelperForm usado para criar botões HTML do
      tipo submit;
   o  A equipe interagiu com a comunidade na validação do
      ticket;
      o    Foi descaracterizado como um o e foi marcado como "wont-fix”.




   o  Sinaliza um ponto de refatoração
Caracterização de Bugs /
Implementação de Melhorias
•  Ticket 2894
Testes
         •     Verificações empregradas no projeto (visão geral)

                                                              “duplicate”, “wont-    Confirmação
                                                              fix”, “works-form-
                                                               me” ou “invalid”                     Confir    “closed"
                                                                                                    mação?
Novo                  Validação
Ticket
              “new"               Válido?


                                           Sim
                                                                     Revisões
                                                                     Milestones
  Discussões                          Esclare                        Tags
                                      -cido?
                                                                     Discussões
                                                                     Etc…
                                                         Inicia-se                Conclusão
                                                         Resolução
                             “hold"             “open"                                        “resolved"




     Ações                 Estados                       Verificação
Testes: Verificação em pull
              requests
•    Funcionou?
•    Seguiu padrões de codificação?
•    Enviou casos de testes?
Testes: CakePHP + PHPUnit
•    CakePHP provê integração com PHPUnit
      o    A principal ferramenta para testes unitários em PHP
      o    Prover visualização de cobertura etc.
•    Fixtures
     •     banco com dados temporários
•    Mock objects
•    Integração com Jenkins
      o    Servidor para automatizar o processo de construção
           (build), implantação;
Testes: Como realiza-los?
•    Seguir padrões de pastas e nomeclaturas
•    Instalar PHPUnit
     o    Via PEAR ou como plugin do CakePHP [1]
•    Interface web




 [1] https://github.com/Hyra/PHPUnit-Cake2
Testes
Implementação de casos de teste
Testes
Verificação dos casos de teste
Análise Sobre Reabertura de
           Bugs
•  Ausência de um estado "reopen" no Lighthouse;
•  Pesquisa feita no Google utilizando a seguinte
  expressão:
  •    site:cakephp.lighthouseapp.com "State changed from
       “resolved” to “open”"
Análise Sobre Reabertura de
           Bugs
•  Alguns resultados obtidos
  •    Ticket - #2031
  •    Resolvido – September 27th, 2011 @ 04:39 PM
  •    Por - Admad
  •    Reaberto – September 27th, 2011 @ 04:44 PM
  •    Por - Admad
  •    Causa
       •    Pensou que o bug era similar a outro ticket resolvido anteriormente
            (ADmad: Oops .DS_Store is a file, not directory.)
  •    Re-resolvido - September 27th, 2011 @ 07:44 PM
  •    Por – Mark Story
Análise Sobre Reabertura de
          Bugs [3]
•  Alguns resultados obtidos
  •    Ticket – #2931
  •    Resolvido – June 3rd, 2012 @ 09:24 PM
  •    Por - Rachman Chavik
  •    Reaberto – June 4th, 2012 @ 11:24 AM
  •    Por - Rachman Chavik
  •    Causa
       •    Próprio colaborador revisou e viu que a correção foi incompleta.
            Mas o erro ainda continua sem solução. (Rachman Chavik:
            reopening, due to incomplete fix.)
  •    Re-resolvido –
  •    Por -
Análise Sobre Reabertura de
           Bugs
•  Alguns resultados obtidos
  •    Ticket – #2857
  •    Resolvido – May 6th, 2012 @ 09:49 PM
  •    Por - CakePHP (Mark Story, github)
  •    Reaberto – May 7th, 2012 @ 08:59 AM
  •    Por - Mark Story
  •    Causa
       •    Próprio colaborador revisou e viu que a correção foi incompleta.
            Mesmo após a mudança do status para resolved, outros commits
            relacionados ao mesmo erro foram realizados. (Mark Story: I think I
            might have not done a thorough enough test of this, and it also
            broke the postgres build. Re-opening until those issues are fixed.)
  •    Re-resolvido – May 7th, 2012 @ 08:49 PM
  •    Por - CakePHP (Mark Story, github)
Análise Sobre Reabertura de
           Bugs
•  Alguns resultados obtidos
  •    Ticket – #2174
  •    Resolvido – October 27th, 2011 @ 09:53 AM
  •    Por - Admad ("Afaik this bug doesn't exist in 1.x“)
  •    Reaberto – October 27th, 2011 @ 09:53 AM
  •    Por - Admad
  •    Causa
       •    O desenvolvedor e o usuário que reportou o erro estavam
            trabalhando com versões diferentes. Após o erro ter sido reaberto,
            foi marcado como duplicado, para finalmente ser marcado para
            resolvido. (Milestone changed from “2.0.1” to “1.3.13”. Oh i presumed
            you were reporting it for 2.0. Depois Mark Story fez: State changed
            from “open” to “duplicate”)
  •    Re-resolvido – March 23rd, 2012 @ 08:21 PM
  •    Por - Mark Story
Análise Sobre Reabertura de
           Bugs
•  Alguns resultados obtidos
  •    Ticket – #1084
  •    Resolvido – July 15th, 2011 @ 06:03 PM
  •    Por - Jose Lorenzo Rodríguez
  •    Reaberto – July 15th, 2011 @ 08:01 PM
  •    Por - Mark Story
  •    Causa
       •    Um dos desenvolvedores informou que o comportamento em
            questão seria modificado a partir da refatoração de uma classe. Por
            isso, o bug foi marcado como resolved. No entanto, como isso ainda
            não havia sido feito, o outro desenvolvedor retornou o estado do
            ticket novamente para open. (I actually haven't made the time to
            finish this off. Currently behaviors still go into ClassRegistry
  •    Milestone changed from “2.0.0” to “Future)
Análise Sobre Reabertura de
           Bugs
•  Alguns resultados obtidos
  •    Ticket – #2103
  •    Resolvido – October 14th, 2011 @ 08:25 PM
  •    Por - CakePHP (Mark Story, github)
  •    Reaberto – October 19th, 2011 @ 09:46 PM
  •    Por - Mark Story (erro reportado por EärendilI)
  •    Causa
       •    No passo inícial, o erro foi considerado inválido, ou seja, houve
            uma falha na compreensão do problema. Posteriormente, o
            problema passou por vários passos de open/resolved, em virtude
            do problema não estar totalmente corrigido
  •    Re-resolvido – October 19th, 2011 @ 10:09 PM
  •    Por - CakePHP (Mark Story, github)
Considerações Finais
•    Conhecimento prévio do projeto e da comunidade
     facilitaram a colaboração;
      o    O desconhecimento por uma parte da equipe dificultou a
           colaboração com código
•    O aprendizado foi grande, devido ao caráter
     prático das atividades
•    A maturidade do projeto e a farta documentação
     facilitaram as novas colaborações
     •     CookBook, IRC, Github, Lighthouse, Grupo de Discussão.
Lições Aprendidas
•    Desenvolvedores do core muito ativos deram
     feedbacks rápidos e atenciosos
     o    Contrariando o que se especulou
•    O IRC foi uma poderosa ferramenta
Trabalhos Futuros
•    Publicar resultados na comunidade (em inglês);
•    Revisar colaborações com o padrão utilizado;
•    Colaborar na tradução das seções restantes do
     CookBook para pt;
•    Localizar (L10n) o core para Português (BR);
•    Analisar os pontos do core encontrados e que são
     passíveis de refatoração;
•    Incluir mais informações extraídas do Doxygen na
     documentação da API (e.g. diagrama de classes;
•    Analisar melhor cobertura de testes do código do
     core.
Perguntas, Críticas, Sugestões?

Mais conteúdo relacionado

Mais procurados

(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?Danilo J. S. Bellini
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7tdc-globalcode
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0Danilo J. S. Bellini
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de VersãoJonathas Silva
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainersSandro Giacomozzi
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve reviewLaís Berlatto
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
SVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareSVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareManoel Afonso
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Apresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisApresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisMauricio Fernandes de Castro
 
Maplink - Proposta Processos de Teste_v3.ppt
Maplink - Proposta Processos de Teste_v3.pptMaplink - Proposta Processos de Teste_v3.ppt
Maplink - Proposta Processos de Teste_v3.pptSergio Rubio
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 

Mais procurados (20)

(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainers
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve review
 
Python e Golang - Parte 1
Python e Golang - Parte 1Python e Golang - Parte 1
Python e Golang - Parte 1
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
SVN no Desenvolvimento de Software
SVN no Desenvolvimento de SoftwareSVN no Desenvolvimento de Software
SVN no Desenvolvimento de Software
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Git hub and Laravel
Git hub and Laravel Git hub and Laravel
Git hub and Laravel
 
Apresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisApresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de Combustíveis
 
Maplink - Proposta Processos de Teste_v3.ppt
Maplink - Proposta Processos de Teste_v3.pptMaplink - Proposta Processos de Teste_v3.ppt
Maplink - Proposta Processos de Teste_v3.ppt
 
Mastering Laravel
Mastering LaravelMastering Laravel
Mastering Laravel
 
Introducao ao Git
Introducao ao GitIntroducao ao Git
Introducao ao Git
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 

Destaque

CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsulWaldemar Neto
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...Renato Shirakashi
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português BrLuiz Ladeira
 
cakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gentecakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gentetdc-globalcode
 
CakePHP para iniciantes
CakePHP para iniciantesCakePHP para iniciantes
CakePHP para iniciantesIgor Feghali
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de CakephpCauan Cabral
 

Destaque (16)

Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...Desenvolva rapidamente
utilizando o framework
Desenvolva rapidamente utiliz...
Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utiliz...
 
Plugins
PluginsPlugins
Plugins
 
CakePHP
CakePHPCakePHP
CakePHP
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português Br
 
cakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gentecakephp 3.0 o bolo ainda serve muita gente
cakephp 3.0 o bolo ainda serve muita gente
 
CakePHP para iniciantes
CakePHP para iniciantesCakePHP para iniciantes
CakePHP para iniciantes
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 

Semelhante a Colaboração em Projetos FLOSS: CakePHP

Treinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTreinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTania Andrea
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps4LinuxCursos
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...Renato Groff
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IDevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IAlefe Variani
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Renato Groff
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 

Semelhante a Colaboração em Projetos FLOSS: CakePHP (20)

Cake PHP
Cake PHPCake PHP
Cake PHP
 
Treinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTreinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do Serpro
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia IDevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
DevOps I - Ambientes padronizados e Monitoramento da Aplicação | Monografia I
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
Azure Kubernetes Service: orquestrando containers e escalando rapidamente apl...
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 

Mais de Thiago Colares

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsThiago Colares
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...Thiago Colares
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQLThiago Colares
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHPThiago Colares
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapThiago Colares
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?Thiago Colares
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoThiago Colares
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaThiago Colares
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Thiago Colares
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Thiago Colares
 
API Evolution and Usability
API Evolution and UsabilityAPI Evolution and Usability
API Evolution and UsabilityThiago Colares
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores BThiago Colares
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedorThiago Colares
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovaçãoThiago Colares
 

Mais de Thiago Colares (16)

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondings
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQL
 
The Pragmatic Agilist
The Pragmatic AgilistThe Pragmatic Agilist
The Pragmatic Agilist
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHP
 
Mobile Usability
Mobile UsabilityMobile Usability
Mobile Usability
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e Colaboração
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédia
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)
 
API Evolution and Usability
API Evolution and UsabilityAPI Evolution and Usability
API Evolution and Usability
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores B
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedor
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovação
 

Último

EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORDRONDINELLYRAMOS1
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 

Último (11)

EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 

Colaboração em Projetos FLOSS: CakePHP

  • 1. UFBA / UEFS Colaboração em Projetos FLOSS1: CakePHP Profª: Christina von Flach Garcia Chavez Equipe: Debora Nascimento, Thiago Colares, Thiago Souto, Vagner Amaral Junho de 2012 | Salvador, Brasil 1: Free/Libre/Open Source Software
  • 2. Sumário •  Introdução •  Seleção do Projeto •  Reconhecimento Inicial do CakePHP •  Metodologia Geral para Contribuição •  Documentação •  Tradução •  Caracterização de Bugs / Implementação de Melhorias •  Testes •  Análise Sobre Reabertura de Bugs •  Considerações Finais
  • 3. Sumário •  Análise Sobre Reabertura de Bugs •  Considerações Finais
  • 4. Introdução •  OSS - Open Source Software •  Liberdade •  Comunidades •  Objetivo •  Participar em um Projeto de software Livre •  Free Software Patterns (FSP) •  2 Etapas •  Seleção do projeto à CakePHP •  Colaboração com o projeto
  • 5. Seleção do Projeto •  Análise de várias aplicações •  Seleção do CakePHP •  Framework para o desenvolvimento rápido de aplicações •  Segue o padrão MVC
  • 6. Seleção do Projeto •  Um dos membros da equipe utiliza o CakePHP na sua empresa; •  Comunidade de usuários expressiva; •  A comunidade é bastante ativa; •  O projeto possui: •  site oficial sempre atualizado; •  sistema para reportar bugs; •  documentação •  testes automatizados. •  Os artefatos do projeto são bem gerenciáveis; •  Oportunidade de aprendizado para a equipe
  • 7. Reconhecimento Inicial do CakePHP •  Tecnologias utilizadas o  PHP / JavaScript / DOS batch script / Shell script; o  MySQL / Postgres / SQLite / SQL Server / NOSQLs o  Alguns Padrões Arquiteturais identificados: o  MVC / ActiveRecord/ Association Data Mapping / Front Controller
  • 8. Reconhecimento Inicial do CakePHP •  Código-fonte do core do CakePHP (phploc) o  Lines of Code (LOC): 215.713 o  Comment Lines of Code (CLOC): 63.796 o  Non-Comment Lines of Code (NCLOC): 151.917 o  Interfaces: 7 o  Classes: 962 o  Average Class Length (NCLOC): 161 o  Methods: 5563 o  Average Method Length (NCLOC): 27
  • 9. Reconhecimento Inicial do CakePHP •  Licença do Projeto o  MIT License (maior parte) o  Open Group Teste Suite License •  Repositório o  Github: https://github.com/cakephp/cakephp •  Bugtracker o  Lighthouse: http://cakephp.lighthouseapp.com/dashboard o  Suíte de Testes Automatizados: PHPUnit
  • 10. Reconhecimento Inicial do CakePHP •  Política de Lançamento de Versões o  Uma versão por mês o  Formato do número da versão X.Y.Z-<token>, no qual: §  X = grande mudança no projeto; §  Y = pacotes de melhorias / novas funcionalidades; §  Z = nova versão estável §  <token> = alpha, beta ou RC# §  Atuais: 2.1.3 (23/05/2012) e 2.2.0-RC2 (20/06/2012)
  • 11. Identificação das Tarefas do CakePHP •  Tags dos tickets no Lighthouse •  Listas de tarefas pendentes no código-fonte o  TODO (poucos. melhorias pontuais no código) •  Tarefas identificadas inicialmente: o  Correção do bug relacionado à listagem feita com a classe Paginate que utiliza Models diferentes; o  Correção do bug relacionado à sinalização manual de campos obrigatórios na classe FormHelper;
  • 12. Metodologia Geral •  Tipos de atividade: o  Documentação o  Tradução o  Correção de Bugs o  Testes •  Para cada atividade: o  caracterizar o projeto de acordo com as questões disponibilizadas referentes a cada atividade o  escolher uma forma de contribuir com o projeto escolhido no escopo da atividade o  submeter a contribuição para a comunidade o  relatar o feedback recebido da comunidade •  Uso dos FSP e dos Reengineering Patterns
  • 13. Documentação [1] •  Padrões utilizados: o  Skim The Documentation (Reengineering Patterns) o  Write Documentation (Free Software Patterns) •  Localização da documentação do projeto o  CookBook: http://book.cakephp.org o  API: http://api20.cakephp.org o  Bakery: http://bakery.cakephp.org
  • 14. Documentação [2] •  Documentação adicional: o  Visão geral sobre arquitetura o  http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model- view-controller.html o  Estrutura Interna: o  http://book.cakephp.org/2.0/en/getting-started/cakephp-structure.html o  Estrutura de Pastas: o  http://book.cakephp.org/2.0/en/getting-started/cakephp-folder- structure.html o  Bibliotecas: o  http://book.cakephp.org/2.0/en/core-libraries.html
  • 15. Documentação [3] •  Documentação adicional: o  Tutoriais e exemplos: o  http://book.cakephp.org/2.0/en/tutorials-and-examples.html o  Orientações de como Colaborar com a Documentação: o  http://book.cakephp.org/2.0/en/contributing/documentation.html o  Guia para formatação da documentação: o  http://book.cakephp.org/2.0/en/contributing/documentation.html o  Padrões de Codificação: o  http://book.cakephp.org/2.0/en/contributing/cakephp-coding- conventions.html
  • 16. Documentação [4] •  Documentação adicional: o  Documentação para uso da suíte de testes (PHPUnit): o  http://book.cakephp.org/2.0/en/development/testing.html o  Documentação do processo de registro de Bugs: o  http://book.cakephp.org/2.0/en/contributing/tickets.html o  Documentação do processo de envio de correções: o  http://book.cakephp.org/2.0/en/contributing/code.html o  Outras informações para desenvolvedores: o  http://cakephp.org/pages/development
  • 17. Documentação [4.1]: IRC •  Contato direto com desenvolvedores do core
  • 18. Documentação [4.1]: IRC •  Bin: ferramenta para compartilhar trechos de código http://bin.cakephp.org/
  • 19. Documentação [4.1]: IRC •  CakeBot: log de todas as conversas do #cakephp http://irc.cakephp.org/
  • 20. Documentação [5] •  Características o  Formato de Texto: ReST (Re Structured Text) o  Repositório: Github (http://github.com/cakephp/docs) o  Equipe específica para documentação Build ReST HTML Make; Python; Sphinx; PhpDomain for sphinx.
  • 21. Documentação [6] •  Identificação de tarefas de documentação o  Diretiva antes do build para exibir TODO's no CookBook
  • 22. Documentação [7] •  Tarefas identificadas o  Add how to setup PATH for windows systems [1]
  • 23. Documentação [8] •  1º Ciclo completo do processo de colaboração •  Passo 1: Configuração Inicial (Git/GitHub) •  Passo 2: Fork •  Passo 3:Clone
  • 24. Documentação [8] •  1º Ciclo completo do processo de colaboração •  Passo 4: Modificações (direto no GitHub) View Edit / Commit
  • 25. Documentação [8] •  1º Ciclo completo do processo de colaboração •  Passo 5: Pull Request
  • 26. Documentação [8] •  Tarefas identificadas (resolução) o  Add how to setup PATH for windows systems [2]
  • 27. Tradução [1] •  Tradução do Core ou de uma Aplicação •  Ferramentas Utilizadas •  Arquivos POT: template; •  Arquivos PO: tradução propriamente dita; •  i18n shell (comando extract) para geração do arquivo POT; •  PoEdit para manipulação do arquivo PO; •  Situação do Core •  Internacionalizado (i18n), mas não localizado (L10n) •  Situação da Aplicação padrão •  Não era relevante traduzir •  Não havia iniciativas da comunidade •  Equipe optou por focar na Documentação
  • 28. Tradução [2] •  Várias orientações aos tradutores [1] •  Use linguagem informal, não faça traduções parciais etc. •  Idiomas disponíveis CookBook o  espanhol; o  francês; o  japonês; o  russo; o  português; •  Equipe: o  Há um colaborador ativo residente em Salvador / Bahia que atua na tradução do CookBook para pt-BR; [1] http://book.cakephp.org/2.0/en/contributing/documentation.html
  • 29. Tradução [3] •  Identificação das atividades: o  Contato com a equipe responsável pela tradução pt-BR; o  Investigação do repositório no Github; o  Análise do CookBook em busca de itens com pouca informação em pt-BR (se comparado com en-US); •  Atividade escolhida: tradução da página principal da seção "Views" do CookBook. •  Não existia! •  Conteúdo relevante
  • 31. Tradução [5] •  Seção "Views" em pt: {
  • 32. Tradução [6] •  Feedback da tradução da seção "Views" do CookBook para pt:
  • 33. Caracterização de Bugs / Implementação de Melhorias •  Bugtracker: Lighthouse •  http://cakephp.lighthouseapp.com/dashboard •  Registro de Tickets o  Ciclo de Vida do ticket de um projeto: o  http://cakephp.lighthouseapp.com/core-contributor-guidelines •  Informações encontradas no Registro de Tickets: o  Descrição do problema; o  Comportamento esperado; o  Comportamento obtido; o  Passos para reprodução do bug; o  Versão do CakePHP em que o bug foi identificado; o  Possíveis soluções;
  • 34. Caracterização de Bugs / Implementação de Melhorias •  Critérios utlizados para identificação dos bugs / melhorias: o  Desenvolvedores validaram o ticket como realmente um bug / melhoria; o  Descrição objetiva do bug / melhoria. o  Conhecimento sobre área do código que está ocorrendo o bug / melhoria. o  Avaliação superficial e subjetiva se a tarefa pode ser realizada em um curto espaço de tempo. •  A partir dos critérios, foi gerada uma lista com vários itens obtidos no Lighthouse. Após a análise de cada um dos itens, três deles foram escolhidos.
  • 35. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2787
  • 36. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2787 o  Criação de um clone do fork no Github; https://github.com/colares/cakephp/tree/ticket-2787 o  Atualização dos casos de teste; o  Via de regra, a comunidade CakePHP só aceita patches acompanhados de casos de estes o  Dificuldades na comunicação do PHPUnit (quando instalado via Pear) com o CakePHP. o  Uso do plugin desenvolvido por Stef van den Ham https://github.com/Hyra/PHPUnit-Cake2 o  Pull request foi aceito pela comunidade
  • 37. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2787: feedback positivo.
  • 38. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2787: modificação já está no CookBook.
  • 39. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2851: método year não ordena
  • 40. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2851 o  A equipe verificou o erro e constatou: o  O erro não era válido, pois não existia o  A solução constava na documentação o  No final, o ticket foi marcado como "works-for-me".
  • 41. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2851
  • 42. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2894 o  O usuário apontou um possível erro existente em um método do HelperForm usado para criar botões HTML do tipo submit; o  A equipe interagiu com a comunidade na validação do ticket; o  Foi descaracterizado como um o e foi marcado como "wont-fix”. o  Sinaliza um ponto de refatoração
  • 43. Caracterização de Bugs / Implementação de Melhorias •  Ticket 2894
  • 44. Testes •  Verificações empregradas no projeto (visão geral) “duplicate”, “wont- Confirmação fix”, “works-form- me” ou “invalid” Confir “closed" mação? Novo Validação Ticket “new" Válido? Sim Revisões Milestones Discussões Esclare Tags -cido? Discussões Etc… Inicia-se Conclusão Resolução “hold" “open" “resolved" Ações Estados Verificação
  • 45. Testes: Verificação em pull requests •  Funcionou? •  Seguiu padrões de codificação? •  Enviou casos de testes?
  • 46. Testes: CakePHP + PHPUnit •  CakePHP provê integração com PHPUnit o  A principal ferramenta para testes unitários em PHP o  Prover visualização de cobertura etc. •  Fixtures •  banco com dados temporários •  Mock objects •  Integração com Jenkins o  Servidor para automatizar o processo de construção (build), implantação;
  • 47. Testes: Como realiza-los? •  Seguir padrões de pastas e nomeclaturas •  Instalar PHPUnit o  Via PEAR ou como plugin do CakePHP [1] •  Interface web [1] https://github.com/Hyra/PHPUnit-Cake2
  • 50. Análise Sobre Reabertura de Bugs •  Ausência de um estado "reopen" no Lighthouse; •  Pesquisa feita no Google utilizando a seguinte expressão: •  site:cakephp.lighthouseapp.com "State changed from “resolved” to “open”"
  • 51. Análise Sobre Reabertura de Bugs •  Alguns resultados obtidos •  Ticket - #2031 •  Resolvido – September 27th, 2011 @ 04:39 PM •  Por - Admad •  Reaberto – September 27th, 2011 @ 04:44 PM •  Por - Admad •  Causa •  Pensou que o bug era similar a outro ticket resolvido anteriormente (ADmad: Oops .DS_Store is a file, not directory.) •  Re-resolvido - September 27th, 2011 @ 07:44 PM •  Por – Mark Story
  • 52. Análise Sobre Reabertura de Bugs [3] •  Alguns resultados obtidos •  Ticket – #2931 •  Resolvido – June 3rd, 2012 @ 09:24 PM •  Por - Rachman Chavik •  Reaberto – June 4th, 2012 @ 11:24 AM •  Por - Rachman Chavik •  Causa •  Próprio colaborador revisou e viu que a correção foi incompleta. Mas o erro ainda continua sem solução. (Rachman Chavik: reopening, due to incomplete fix.) •  Re-resolvido – •  Por -
  • 53. Análise Sobre Reabertura de Bugs •  Alguns resultados obtidos •  Ticket – #2857 •  Resolvido – May 6th, 2012 @ 09:49 PM •  Por - CakePHP (Mark Story, github) •  Reaberto – May 7th, 2012 @ 08:59 AM •  Por - Mark Story •  Causa •  Próprio colaborador revisou e viu que a correção foi incompleta. Mesmo após a mudança do status para resolved, outros commits relacionados ao mesmo erro foram realizados. (Mark Story: I think I might have not done a thorough enough test of this, and it also broke the postgres build. Re-opening until those issues are fixed.) •  Re-resolvido – May 7th, 2012 @ 08:49 PM •  Por - CakePHP (Mark Story, github)
  • 54. Análise Sobre Reabertura de Bugs •  Alguns resultados obtidos •  Ticket – #2174 •  Resolvido – October 27th, 2011 @ 09:53 AM •  Por - Admad ("Afaik this bug doesn't exist in 1.x“) •  Reaberto – October 27th, 2011 @ 09:53 AM •  Por - Admad •  Causa •  O desenvolvedor e o usuário que reportou o erro estavam trabalhando com versões diferentes. Após o erro ter sido reaberto, foi marcado como duplicado, para finalmente ser marcado para resolvido. (Milestone changed from “2.0.1” to “1.3.13”. Oh i presumed you were reporting it for 2.0. Depois Mark Story fez: State changed from “open” to “duplicate”) •  Re-resolvido – March 23rd, 2012 @ 08:21 PM •  Por - Mark Story
  • 55. Análise Sobre Reabertura de Bugs •  Alguns resultados obtidos •  Ticket – #1084 •  Resolvido – July 15th, 2011 @ 06:03 PM •  Por - Jose Lorenzo Rodríguez •  Reaberto – July 15th, 2011 @ 08:01 PM •  Por - Mark Story •  Causa •  Um dos desenvolvedores informou que o comportamento em questão seria modificado a partir da refatoração de uma classe. Por isso, o bug foi marcado como resolved. No entanto, como isso ainda não havia sido feito, o outro desenvolvedor retornou o estado do ticket novamente para open. (I actually haven't made the time to finish this off. Currently behaviors still go into ClassRegistry •  Milestone changed from “2.0.0” to “Future)
  • 56. Análise Sobre Reabertura de Bugs •  Alguns resultados obtidos •  Ticket – #2103 •  Resolvido – October 14th, 2011 @ 08:25 PM •  Por - CakePHP (Mark Story, github) •  Reaberto – October 19th, 2011 @ 09:46 PM •  Por - Mark Story (erro reportado por EärendilI) •  Causa •  No passo inícial, o erro foi considerado inválido, ou seja, houve uma falha na compreensão do problema. Posteriormente, o problema passou por vários passos de open/resolved, em virtude do problema não estar totalmente corrigido •  Re-resolvido – October 19th, 2011 @ 10:09 PM •  Por - CakePHP (Mark Story, github)
  • 57. Considerações Finais •  Conhecimento prévio do projeto e da comunidade facilitaram a colaboração; o  O desconhecimento por uma parte da equipe dificultou a colaboração com código •  O aprendizado foi grande, devido ao caráter prático das atividades •  A maturidade do projeto e a farta documentação facilitaram as novas colaborações •  CookBook, IRC, Github, Lighthouse, Grupo de Discussão.
  • 58. Lições Aprendidas •  Desenvolvedores do core muito ativos deram feedbacks rápidos e atenciosos o  Contrariando o que se especulou •  O IRC foi uma poderosa ferramenta
  • 59. Trabalhos Futuros •  Publicar resultados na comunidade (em inglês); •  Revisar colaborações com o padrão utilizado; •  Colaborar na tradução das seções restantes do CookBook para pt; •  Localizar (L10n) o core para Português (BR); •  Analisar os pontos do core encontrados e que são passíveis de refatoração; •  Incluir mais informações extraídas do Doxygen na documentação da API (e.g. diagrama de classes; •  Analisar melhor cobertura de testes do código do core.