From 586d79c55c84d03445cf215dc6f426aef70f41b3 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 9 May 2023 02:49:23 +0200 Subject: [PATCH] Scrivi introduzione --- README.md | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3670c53..81ada88 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ \[ Stefano Pigozzi | Grafo "creato da zero" | Tema Graph Analytics | Big Data Analytics | A.A. 2022/2023 | Unimore \] +# Analisi su grafo Neo4J relativo alle dipendenze delle crates del linguaggio Rust + > ### Graph analytics > > Obiettivo dell’attività è analizzare il data graph di una Sandbox di Neo4j (esclusa quella vista a lezione) attraverso la definizione di almeno due research question che possano essere risolte attraverso le tecniche di graph analytics viste a lezione. @@ -39,9 +41,37 @@ ## Sinossi -Si sono realizzate varie ricerche di Graph Analytics sul database a grafo dell'indice [Crates.io], realizzato per il progetto a tema Neo4J, determinando le crate più importanti all'ecosistema attraverso gli algoritmi di *Degree Centrality*, *Betweenness Centrality*, e *PageRank*, e ricercando cluster di tag per migliorare la classificazione delle crate nell'indice attraverso gli algoritmi di *Louvain*, *Label Propagation*, e *Leiden*. +Si sono effettuate ricerche di Graph Analytics sul database a grafo dell'indice [Crates.io], realizzato per il progetto a tema Neo4J, determinando le crate più importanti all'ecosistema attraverso gli algoritmi di *Degree Centrality*, *Betweenness Centrality*, e *PageRank*, e ricercando cluster di tag per migliorare la classificazione delle crate nell'indice attraverso gli algoritmi di *Louvain*, *Label Propagation*, e *Leiden*. + +## Introduzione + +> Per informazioni su cosa è una crate in Rust, come è formata, o come è stato costruito il dataset utilizzato, si veda l'[introduzione della relazione del progetto a tema Neo4J]. + +### 1️⃣ Quali sono le crates più importanti dell'ecosistema Rust? + +Un'informazione utile da sapere per gli sviluppatori del linguaggio Rust e per i manutentori dell'indice [Crates.io] sono i nomi delle crate più importanti nell'indice. + +Alcuni esempi di casi in cui il dato di importanza delle crate potrebbe essere utile sono: +- selezionare anticipatamente le crate su cui effettuare caching più aggressivo +- determinare le crate più a rischio di supply chain attack +- prioritizzare determinate crate nell'esecuzione di esperimenti con [crater] + +Lo scopo di questa ricerca è quello di determinare, attraverso indagini sulla rete di dipendenze, un valore di importanza per ciascuna crate, e una classifica delle 25 crate più importanti dell'indice. + +### 2️⃣ Quali potrebbero essere altre *categories* utilizzabili per classificare crate? + +Affinchè le crate pubblicate possano essere utilizzate, non è sufficiente che esse vengano indicizzate: è necessario anche che gli sviluppatori che potrebbero farne uso vengano al corrente della loro esistenza. + +Nasce così il problema della *discoverability*, ovvero di rendere più facile possibile per gli sviluppatori le migliori crate con le funzionalità a loro necessarie. + +A tale fine, [Crates.io] permette agli autori di ciascuna crate di specificare fino a 5 *keyword* (brevi stringhe arbitrarie alfanumeriche, come `logging` o `serialization`) per essa, attraverso le quali è possibile trovare la crate tramite funzionalità di ricerca del sito, e fino a 5 *category* (chiavi predefinite in un apposito [thesaurus], come `Aerospace :: Unmanned aerial vehicles`), che inseriscono la crate in raccolte tematiche sfogliabili. + +Lo scopo di questa ricerca è quello di determinare, attraverso indagini sulle *keyword*, nuove possibili *category* da eventualmente introdurre nell'indice, ed eventualmente sperimentare un metodo innovativo per effettuare classificazione automatica delle crate. -[Crates.io]: https://crates.io/ \ No newline at end of file +[Crates.io]: https://crates.io/ +[introduzione della relazione del progetto a tema Neo4J]: https://github.com/Steffo99/unimore-bda-4#introduzione +[thesaurus]: https://github.com/rust-lang/crates.io/blob/master/src/boot/categories.toml +[crater]: https://github.com/rust-lang/crater \ No newline at end of file