centraldedados / centraldedados.pt

Gerador para o site da Central de Dados (fork do Datacentral)
http://centraldedados.pt
22 stars 2 forks source link

Sistema de versões #3

Open rlafuente opened 9 years ago

rlafuente commented 9 years ago

Para podermos assegurar alguma estabilidade na publicação das datapackages, faz sentido implementarmos um sistema de versionamento. Assim, alguém que construir uma app com um dataset não corre risco de ver os dados alterados subitamente quando a data package é atualizada.

Faz sentido incluir a data no número da versão para os casos de datasets em que os dados são atualizados regularmente (ex: 0.2-20150421)

gsilvapt commented 8 years ago

Controlo de versões ou apenas a informação da última atualização? Dado se tratarem de datasets, parece-me que a última actualização seja melhor.

rlafuente commented 8 years ago

Neste momento já usamos a data da última atualização; o problema é como identificar cada versão.

Um exemplo:

  1. Fiz uma app que usa o dataset das datas das eleições
  2. O dataset é entretanto alterado de uma forma que pode afectar as aplicações existentes (ex. mudança de nomes de colunas)
  3. Quero assegurar que a minha app fica "ligada" à versão correta.

Talvez este use case seja pouco prático porque imagino que a maioria das pessoas faria o download do dataset para usar localmente; no entanto, se vamos promover a prática de hotlinking (ligar diretamente ao url da Central), temos de assegurar que não há surpresas...

Daí a ideia de numerar as versões, para também termos um bom registo das melhorias e alterações que foram feitas aos datasets. O senão é que isto implica algum trabalho e disciplina de documentação que, francamente, é uma seca.

gsilvapt commented 8 years ago

Um lançamento em profundidade: Porque não uma API em que isso ficaria escrito lá para os developers utilizarem consoante queiram? Nunca vi o processo de criação de uma API mas presumo que dê para acrescentar um campo que diga a última actualização e já é algo que os próprios developers podem utilizar nas suas apps, sites e quê mais para que seja mais fácil identificar o espaço temporal que estamos a lidar.

rlafuente commented 8 years ago

O problema permanece sobre como catalogas cada versão publicada de um dataset.

A fonte canónica dos dados é a data package alojada num repositório Git. A Central de Dados descarrega o repositório e gera um site HTML. Podemos acrescentar uma API à Central (aliás, ela já tem uma mini-API linkada na home), mas isso não resolve o problema de haver uma numeração consistente de versões na data package.

Ou seja, não é algo que se resolva com software: a convenção de versões é uma decisão que é preciso tomar, desenvolver e documentar a norma a que chegarmos, e editar as data packages em conformidade :-)

Devia ter linkado no issue original a referência a versionamento semântico, que é mais ou menos o que precisamos aqui.