* Colocar um flag no model do media para arquivo presente localmente ou nao (rotina para "verificar") (NO SERIALIZE) * Colocar um flag no model do media para arquivos solicitados (rotina para "baixar") (NO SERIALIZE) * Colocar um valor no model do media como peso para determinar a presença do media na rede (rotina para "baixar") (NO SERIALIZE) * Colocar um valor no model do media com o codigo da solicitaçao (para poder remover) (NO SERIALIZE) * Colocar a opção de o media ser um link web aproveitando a logica do git-annex * Automatizar as sincronizações: - alem de git annex sync , git pull & push - cron? - preferred content vira fundamental ja? Por enquanto usar num-copies generico: 3 == Rotina para "baixar" == Pode ser um processo stocastico a tempo determinado (considerando o tamanho e os tempos de sync da RM, t=4). E' interessante pesquisar mais desde as praticas de comunicação ancestrais entre as comunidades e aproveitar de algoritmos de mapeamento automatico como rede neural. Como primeira implementação, o neuronio (mucua) v ao tempo tn teria o impulso: x0=(git annex $media numcopies +=1 && git annex get $media, ttl=4) ao tempo t1: x1=(git annex get $media, ttl=3) e tn+1: xn+1=(git rm $thisfile, ttl=0) A rotina cron de sync, assumimos, conseguir uma copia do media na mucua proxima, no tempo t maximo ttl=4. O impulso pode ser codificado como arquivo json com nome aleatorio (date_UUID[:5]) que cada mucua mantem numa pasta de solicitações (ex. mocambos/dpadua/semeando/): {"mediafile" : "$path", "ttl" : "4" } Isso garante a falta de conflitos entre arquivos porque cada mucua altera seus impulsos. A cada ciclo de cron, e sob determinadas condições, a mucua consulta os impulsos das outras proximas (ver rotas/remotes) e copia os impulsos reduzindo o peso, de fato propagando o impulso. Os impulsos decaem e os arquivos sao removidos quando as mucuas conseguem uma copia do media. Nesse caso o valor do numcopies volta ao padrão (a cada git annex get realizada com sucesso numcopies-=1). === Teoria (esboçando) === P(X(n)) = Probabilidade de encontrar o media ao tempo/passo n. P(X(n)<=xn+1 | P(xn)=xn) Com P(x0)=0 e P(xn+1)=1 P(Xn+1) = P(Xn)+P(xn-1)