% Chapter Template \chapter{Introduction} % Main chapter title \label{Introduction} % Change X to a consecutive number; for % referencing this chapter elsewhere, use \ref{ChapterX} \begin{figure}[h!] \centering \includesvg[width=\textwidth]{Figures/clan_thesis_argumentation_tree.drawio.svg} \caption{Argumentation Tree for the Clan Thesis} \label{fig:clan_thesis_argumentation_tree} \end{figure} %---------------------------------------------------------------------------------------- % SECTION 1 %---------------------------------------------------------------------------------------- \section{Methodology} In this chapter, we will discuss the methodology used in this research. We will discuss the research design, and the research limitations. \section{Related Work} The Clan framework operates within the realm of software deployment and peer-to-peer networking, necessitating a deep understanding of existing methodologies in these areas to tackle contemporary challenges. This section will discuss related works encompassing system deployment, peer data management, and low maintenance structured peer-to-peer overlays, which inform the development and positioning of the Clan framework. \subsection{Nix: A Safe and Policy-Free System for Software Deployment} Nix addresses significant issues in software deployment by utilizing a technique that employs cryptographic hashes to ensure unique paths for component instances[1]. The system is distinguished by its features, such as concurrent installation of multiple versions and variants, atomic upgrades, and safe garbage collection. These capabilities lead to a flexible deployment system that harmonizes source and binary deployments. Nix conceptualizes deployment without imposing rigid policies, thereby offering adaptable strategies for component management[2]. This contrasts with many prevailing systems that are constrained by policy-specific designs, making Nix an agile choice for modern deployment needs[3]. The insights gained from Nix's approach to non-interference and de-risking upgrades through atomic transactions highlight the potential for deploying software components seamlessly in decentralized networks[4]. \subsection{NixOS: A Purely Functional Linux Distribution} NixOS is an extension of the principles established by Nix, presenting a Linux distribution that manages system configurations using purely functional methods . This model ensures that system configurations are reproducible and isolated from stateful interactions typical in imperative models of package management. Because NixOS configurations are built by pure functions, they can overcome the challenges of easily rolling back changes, deploying multiple package versions side-by-side, and achieving deterministic configuration reproduction . The solution is particularly compelling in environments necessitating rigorous reproducibility and minimal configuration drift—a valuable feature for distributed networks . \subsection{Disnix: A Toolset for Distributed Deployment} The Disnix toolset extends the deployment capabilities of Nix into distributed systems, focusing on automating the deployment process across different network nodes . By leveraging the modular approach of Nix, Disnix enables the consistent deployment of software environments, reducing the incidence of configuration errors across heterogeneous systems. This approach aligns with the needs of distributed systems like those utilized in peer-to-peer networks, where maintaining consistency across nodes is crucial for operational integrity . \subsection{The Piazza Peer Data Management Project} The peer data management landscape is further enriched by the Piazza project, which offers a flexible integration framework for heterogeneous data sources[5]. Piazza's approach to routing and indexing extends beyond traditional network boundaries, showcasing a scalable method for handling vast data spaces in peer-to-peer systems. By addressing challenges related to schema mediation and decentralized data queries, Piazza provides a foundational structure from which Clan can envisage robust peer data management underpinned by strong consistency and reach. \subsection{Software-Defined Networking and Low Maintenance Overlays} The transition towards software-defined networking (SDN) is represented by systems that decouple the control plane from the data plane, enabling flexible network configurations[6]. In particular, SDN introduces novel paradigms in managing network resources dynamically, facilitating more adaptive and responsive network overlays. The Clan framework can draw on SDN principles to facilitate low-maintenance structured overlays, ensuring robust connectivity and efficient resource allocation in peer-to-peer environments. These systems reduce the overhead associated with managing network state, thus aligning with the inherent value propositions of decentralized networks. \subsection{Charon: Declarative Provisioning and Deployment} Charon adds another dimension to deployment via its declarative provisioning capabilities[7]. By emphasizing a policy-driven approach, Charon aligns closely with the principles of infrastructure-as-code, where deployment processes are consistently repeatable and auditable. Such characteristics are beneficial for frameworks like Clan, ensuring transparency and accuracy in deployment processes across peer-to-peer nodes[8]. In summation, the evolution of deployment systems and peer data management frameworks underscores the steps necessary for developing robust decentralized systems like the Clan framework. By integrating features from Nix, NixOS, Disnix, and leveraging insights from SDN and Charon, the Clan framework can offer a high degree of reliability, flexibility, and efficiency across distributed networks. This related work provides a foundational understanding that supports the enhancement of the Clan framework towards achieving these objectives.