# Introdução
## Visão geral do projeto

O Exercism é um software desenvolvido em Go com o objetivo de ensinar diversas linguagens de programação, atualmente são suportadas mais de 40 linguagens diferentes e milhares de problemas a serem resolvidos. Os exercícios são apropriados para programadores de diversos níveis, desde níveis bem iniciantes a experientes. O projeto já recebeu fork de 740 desenvolvedores, foi favoritado por 2351 desenvolvedores e cerca de 346 contribuidores.

## Problema

Atualmente o processo de instalação do Exercism não é muito amigável em algumas plataformas. Para usuários de OS X o processo é simples graças a um pacote disponível no Homebrew e para usuários de Windows graças a um pacote por meio do Chocolatey, mas para usuários de Linux o processo não é trivial. Ao consultar os desenvolvedores do projeto a respeito do motivo para não haver pacotes para Debian e Ubuntu disponíveis a resposta foi que apenas nunca houve uma demanda por parte dos usuários e interesse por parte dos desenvolvedores. Por meio desse empacotamento acredito que o uso do software será muito mais atraente para novos usuários.

## Escopo

A proposta para desenvolvimento durante o semestre 2.2016 durante a disciplina de Gerência de Configuração de Software consiste no empacotamento .deb do software Exercism.

## Definições, Acrônimos e Abreviações

| Termo | Definição |
| GCS | Gestão de Configuração de Software |
| Exercism | Software em estudo |
| .deb | Termo utilizado para referenciar o pacote criado para a plataforma Debian |
| GitHub | Repositório de código onde o Exercism é armazenado e desenvolvido |

## Papéis

Todo o projeto será desenvolvido por apenas uma pessoa, o aluno Eduardo de Oliveira Castro.

# Cronograma

| Período | Objetivo |
| 26/09 a 03/10 | Definição do projeto, escopo e Plano de Gerenciamento de Software |
| 04/10 a 10/10 | Estudo sobre criação de pacotes .deb |
| 11/10 a 17/10 | Estudo sobre criação de pacotes .deb |
| 18/10 a 24/10 | Análise e estudo sobre o repositório do Exercism e atual empacotamento para o Arch |
| 25/10 a 31/10 | Empacotamento .deb do Exercism |
| 01/11 a 07/11 | Empacotamento .deb do Exercism |
| 08/11 a 14/11 | Empacotamento .deb do Exercism |
| 15/11 a 21/11 | Período extra |
| 22/11 a 05/12 | Período extra |

# Atual processo de instalação do Exercism

Para instalação do Command Line Client (CLI) do Exercism atualmente o usuário precisa fazer o download do arquivo compactado de acordo com seu sistema operacional e coloca-lo na pasta "~/bin" manualmente. Além desse processo, é necessário que o usuário insira sua API KEY para que possa haver comunicação entre a máquia do usuário e os servidores do Exercism.

## Ambiente de desenvolvimento: Vagrant e Puppet

Afim de padronizar e facilitar o ambiente de desenvolvimento do Exercism fora construída um ambiente de desenvolvimento virtual (box) utilizando o Vagrant já com todas as dependências necessárias para a execução do projeto e a versão mais recente do código disponível no repositório oficial. Vale ressaltar que para que a seguinte box funcione corretamente é necessário que o computador do usuário possua os softwares Virtual Box, Vagrant e Puppet instalados.

### initial_install.sh

Com o Vagrant devidamente instalado e os arquivos relativos ao Vagrant na pasta basta inserir o comando "vagrant up" para que o mesmo instale todos os softwares necessários. Para acessar a máquina virtual basta utilizar o comando "vagrant ssh".

## Instalação do Exercism
### Script de instalação manual

Para instalar por meio do seguinte script basta copiar o texto para um editor de textos qualquer, salva-lo como install.sh e executalo via terminal (./install.sh).

### Empacotamento .deb

Para o empacotamento .deb fora utilizado a biblioteca dh-make, como recomendado pelos próprios tutoriais do Debian e do Ubuntu. Para a instalação desse pacote foi utilizado o seguinte comando:
É criada uma pasta chamada "exercism-0.1", seguindo a convenção de nomes exigidas para os pacotes, e colocado o arquivo .tar.gz com o source code do projeto, bem como o binário do mesmo e o seguinte Makefile:
Feito isso, dentro da pasta, é realizado o seguinte comando no terminal para que toda a estrutura de pastas de um pacote debian:
debian/rules:
debian/control:
Feito isso basta usar o seguinte comando para que o arquivo .deb seja gerado:

## Link para o GitHub com os códigos do projeto

http://www.github.com/educastro/GCS-exercism