Skip to content
This repository has been archived by the owner on May 28, 2023. It is now read-only.

Reformulação do laguinho #31

Closed
JoseRenan opened this issue Aug 1, 2019 · 18 comments
Closed

Reformulação do laguinho #31

JoseRenan opened this issue Aug 1, 2019 · 18 comments
Labels
discussão Further information is requested melhoria Nova funcionalidade ou sugestão novo laguinho Issues relacionadas à reformulação do laguinho

Comments

@JoseRenan
Copy link
Member

JoseRenan commented Aug 1, 2019

Pessoas, foram levantados problemas em outras issues e no discord sobre o laguinho não conseguir ser muito auto sustentável por centralizar dados que os maintainers talvez não tenham conhecimento e etc, e também a criação de endpoints manualmente pra cada dado novo adicionado e por isso o desenvolvimento do laguinho se manteve parado nesse tempo.

Após algumas discussões, falamos com alguns professores (thanks @matheusgr ❤️ ) e veio a sugestão de que o laguinho passasse a ser algo como o npm, yarn ou pip, porém pra gerenciar datasets de computação, por exemplo, o @OpenDevUFCG/roadmap tem um dataset de disciplinas e suas dependencias de computação, que caso eles queiram disponibilizar no laguinho, eles rodariam algum comando no terminal como laguinho publish e isso publicaria os dados do roadmap no laguinho, porém diferentemente de como é hoje, os dados se manteriam no repositório do roadmap, fazendo com que os maintainers do roadmap ficassem com a responsabilidade de manter esses dados. Os usuários que quiserem baixar os CSVs localmente poderiam usar o comando laguinho get opendevufcg/roadmap que baixaria os dados do repositório, ou poderiam acessar o endpoint laguinho.opendevufcg.org/opendevufcg/roadmap e teriam acesso aos dados publicados da mesma forma. Mais no futuro, poderíamos ter uma página pra listar/pesquisar os datasets disponíveis no laguinho (como o npm e yarn mesmo) e exibir algumas métricas interessantes sobre eles.

Essa solução resolve os problemas citados inicialmente, pois dá a responsabilidade ao publisher dos dados de mantê-los e ao mesmo tempo mantém o propósito do laguinho de ser uma plataforma para facilitar o acesso desses dados para todos.

O que acham??? e quem tá interessado em ajudar a implementar??

@JoseRenan JoseRenan added melhoria Nova funcionalidade ou sugestão discussão Further information is requested labels Aug 1, 2019
@JoseRenan
Copy link
Member Author

/cc @paulojbleitao

@thayannevls
Copy link
Contributor

cc @grabowski74

@paulojbleitao
Copy link
Contributor

Achei top, tenho interesse 👀

@JoseRenan JoseRenan pinned this issue Aug 1, 2019
@matheusarauj
Copy link

quero

@JuanBarros2
Copy link
Contributor

Acho uma boa solução!

@thayannevls
Copy link
Contributor

@JoseRenan o que exatamente viria pra mim quando eu fizesse laguinho get opendevufcg/roadmap, um arquivo com o dataset?

@matheusgr
Copy link

@thayannevls penso em 2 modos de uso. um que realmente é baixar e colocar numa pasta versionada (a la node_modules). que é o get faria.

outra estratégia seria baixar um json (laguinho json opendevufcg/roadmap) com a configuração de onde pegar e como usar. ex.: um json com URI para endpoints rest ou graphql daquele dado.

esse modelo do json serviria para usuários q cadastrarem dados dessa natureza... massssss e, essa é a parte mais legal, imagino que o laguinho poderia até realizar algum tipo de tradução para quem cadastrar csv's ou xls... algo como: nome do recurso é o nome do arquivo, cada linha é uma entidade, cabeçalho define nome das propriedades. algo dessa natureza.

@matheusgr
Copy link

não tive mto tempo para pensar no assunto, mas oferecendo agora uma visão macro, imagino algo assim.... o laguinho é composto pelas partes:

  • registro sistema para cadastro e publicação de repositórios de dados. penso que seria legal suportar algo como um repô git com um arquivo num modelo parecido package.json
  • registro-web frontend para achar pacotes no registro.
  • mecanismo de tradução sistema para oferecer API rest/graphql para dados brutos de forma que seja algo programático (pode ser rate limit para usuários free e pago para um limite mto alto)
  • cliente toolkit para baixar dados brutos versionados (molde do node_modules) ou para criar um arquivo de configuração json com os endpoints dos dados. o toolkit vai oferecer mecanismos de baixar samples desses dados para execução de testes locais, etc. etc. imagino que há mto q possa ser feito aqui.

considerando agora a visão de MVP, poderia ser feito:

  1. criação do registro para cadastro simples, não versionado, de um dado csv bruto
  2. criação do cliente que busca no registro e baixa esse dado
  3. adicionar versionamento ao registro e ao cliente

em paralelo vc trabalha no mecanismo de tradução e no frontend web.

@JoseRenan JoseRenan reopened this Aug 1, 2019
@thayannevls
Copy link
Contributor

thayannevls commented Aug 1, 2019

@matheusgr Parecido com a cli do Kaggle?

Em relação ao versionamento, seria com intuito de otimizar o processo de atualizar o datasets quando o usuário querer? No caso ele poderia atualizar apenas as linhas que mudaram no csv, sem precisar baixar tudo de novo

@thayannevls
Copy link
Contributor

Se entendi bem, creio que pro roadmap desse próximo de 2019 bimestre poderíamos começar com o registro e o cliente . O que me preocupa é onde hospedar os registros, será que dá continuar usando o now para isso @JoseRenan ?

@JoseRenan
Copy link
Member Author

@thayannevls acho que dá sim, em termos de armazenamento, acredito que não teríamos muitos problemas porque em tese só precisamos guardar alguma referencia do repositório, identificação do dataset e id da versão (provavelmente algum id do commit) pra cada publish. O único problema talvez fosse a limitação de requests do now, que tb não acho que seria um problema inicialmente 🤔

@fanny
Copy link
Contributor

fanny commented Aug 1, 2019

acho que pra guardar a referecia do dataset podia ser como o próprio npm faz, no package.json de pedir a url do repositório, ao invés disso, a gnt poderia pedir pra ele passar o link do modulo que contém o dataset

@JoseRenan
Copy link
Member Author

ao invés disso, a gnt poderia pedir pra ele passar o link do modulo que contém o dataset

Eu tava pensando em ter os dois, tipo, no package.json tem o URL do repo e um entrypoint, que é o arquivo que vai ser importado quando eu importar o modulo no meu código, no nosso .json a gente teria a URL e o diretório de onde tá os dados. Daí a gente só pegaria daquele diretório os arquivos de dados que tivessem o formato suportado (.csv, .json, .xls, etc)

@thayannevls
Copy link
Contributor

thayannevls commented Aug 2, 2019

@matheusgr @fanny @paulojbleitao @grabowski74

Eu e @JoseRenan fizemos um design docs de como poderia ser nossa primeira versão baseado no que @matheusgr sugeriu aqui na discussão, vejam:

DESIGN_LAGUINHO

Alguns pontos:

  1. Pensamos em ser obrigatório que a pasta onde ele der laguinho publish seja um repositório .git
  2. Para garantir que o usuário tenha permissão no git que ele referencia no laguinho.json, pensamos em adicionar um passo de configuração do laguinho na máquina local, onde ele criaria um arquivo .laguinho preenchendo com um Personal Token Access
  3. O Token é usado no passo 2 do publish flow, fazemos uma requisição ao github pela CLI para verificar se ele possui acesso de escrita naquele repositório
  4. No nosso banco de dados apenas guardaríamos(por enquanto) os metadados dos arquivos json dos dados publicados, sendo os dados baixados diretamente do github pela CLI
  5. Em primeira versão, usuário receberia dado bruto

O que acham?

@JoseRenan
Copy link
Member Author

/cc @eduhique

@fanny
Copy link
Contributor

fanny commented Aug 3, 2019

Achei ótimo, só uma dúvida. Quando tu fala dado bruto, é sem disponibilizar aquilo de varios tipos de formatos, né?

@thayannevls
Copy link
Contributor

Isso mesmo @fanny , só oferecer na forma que foi enviado pra gente

@JoseRenan
Copy link
Member Author

JoseRenan commented Aug 6, 2019

Fechando essa issue em decorrencia da OpenDevUFCG/laguinho#1 dependendo do que sair de lá, se viermos a criar outro repo e tal, a gente quebra as discussões técnicas em várias issues

@lucasmedeiros lucasmedeiros added the novo laguinho Issues relacionadas à reformulação do laguinho label Sep 3, 2019
@JoseRenan JoseRenan pinned this issue Sep 5, 2019
@thayannevls thayannevls unpinned this issue Sep 9, 2019
@thayannevls thayannevls pinned this issue Sep 9, 2019
@JoseRenan JoseRenan moved this from In progress to Done in Reformulação do laguinho Sep 9, 2019
@thayannevls thayannevls unpinned this issue Oct 1, 2019
@thayannevls thayannevls pinned this issue Oct 1, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
discussão Further information is requested melhoria Nova funcionalidade ou sugestão novo laguinho Issues relacionadas à reformulação do laguinho
Projects
Development

No branches or pull requests

8 participants