diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c5efc5 --- /dev/null +++ b/README.md @@ -0,0 +1,170 @@ +> [!TIP] +> Haskell bindings supported!: [Bindings documentaton](https://p2prc.akilan.io/Docs/haskell/P2PRC.html) + +> [!NOTE] +> Fixing documentation to latest changes. If you have any questions setting up P2PRC either [create an issue](https://github.com/Akilan1999/p2p-rendering-computation/issues/new/choose) or send me an email (me AT akilan dot io). +> Currently HEAD is always intended to stay on a working state. It is recommended to always use HEAD in your go.mod file. + +

+
+ p2prc +
+

+ + + +
+ GPLv2 license + Maintenance + made-with-Go + GoDoc reference example +
+ +The main aim of this project was to create a custom peer to peer network. The user acting as the +client has total flexibility on how to batch the tasks and the user acting as the server has complete +flexibility on tracking the container's usages and killing the containers at any point of time. + +## Latest tutorial +[![IMAGE ALT TEXT](https://i.ytimg.com/vi/OMwCpedu5cs/hqdefault.jpg)](https://www.youtube.com/watch?v=OMwCpedu5cs") + +
+ + + + +
+ + + +
+ +## Introduction +This project aims to create a peer to peer (p2p) network, where a user can use the p2p network to act as a client (i.e sending tasks) or the server (i.e executing the tasks). A prototype application will be developed, which comes bundled with a p2p module and possible to execute docker containers or virtual environments across selected nodes. + +### Objectives +- Background review on peer to peer network, virtual environments, decentralized rendering tools and tools to batch any sort of tasks. +- Creating p2p network +- Server to create a containerised environment +- The client node to run tasks on Server containerised node + +[Read more on the introduction](Docs/Introduction.md) + +
+ +## Extend your application with P2PRC +```go +package main + +import ( + "fmt" + "github.com/Akilan1999/p2p-rendering-computation/abstractions" +) + +func main() { + _, err := abstractions.Init(nil) + if err != nil { + fmt.Println(err) + return + } + + // start p2prc + _, err = abstractions.Start() + if err != nil { + fmt.Println(err) + return + } + + // Run server till termination + for { + + } +} + +``` + + + +## Find out more +As we are working on the open source project p2prc (i.e p2p network designed for computation).If you are interested in participating as a contributor +or just providing feedback on new features to build or even just curious about new features added to the project. We have decided to create a discord group. +[![Support Server](https://discordapp.com/api/guilds/854397492795277322/widget.png?style=banner2)](https://discord.gg/b4nRGTjYqy) + +[![Star History Chart](https://api.star-history.com/svg?repos=Akilan1999/p2p-rendering-computation&type=Date)](https://github.com/Gaurav-Gosain) diff --git a/README.md.pdf b/README.md.pdf deleted file mode 100644 index 52be7cd..0000000 Binary files a/README.md.pdf and /dev/null differ diff --git a/README.md.tex b/README.md.tex deleted file mode 100644 index 9f63174..0000000 --- a/README.md.tex +++ /dev/null @@ -1,202 +0,0 @@ -% Created 2025-01-19 Sun 00:17 -% Intended LaTeX compiler: pdflatex -\documentclass[11pt]{article} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{graphicx} -\usepackage{longtable} -\usepackage{wrapfig} -\usepackage{rotating} -\usepackage[normalem]{ulem} -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{capt-of} -\usepackage{hyperref} -\author{Akilan} -\date{\today} -\title{} -\hypersetup{ - pdfauthor={Akilan}, - pdftitle={}, - pdfkeywords={}, - pdfsubject={}, - pdfcreator={Emacs 29.1 (Org mode 9.6.6)}, - pdflang={English}} -\begin{document} - -\tableofcontents - -\begin{center} -\includegraphics[width=.9\linewidth]{/Users/akilan/.cache/org-persist/3a/9e0d0c-d34d-4242-92ac-49f332af6af0-8b003edff282ad2da5830ec63041260a.png} -\end{center}]] - -The main aim of this project was to create a custom peer to peer -network. The user acting as the client has total flexibility on how to -batch the tasks and the user acting as the server has complete -flexibility on tracking the container's usages and killing the -containers at any point of time. - -\subsection{Latest tutorial} -\label{sec:org9129ee1} -\href{https://www.youtube.com/watch?v=OMwCpedu5cs\%22}{\includegraphics[width=.9\linewidth]{/Users/akilan/.cache/org-persist/17/01b895-4c8f-4c97-8b7a-76bde31f87cd-8dfdb3583a175929dac0d44b86acf5b3.jpg}} - -\section{Table of contents in the Docs folder} -\label{sec:org881a67e} -\begin{enumerate} -\item \href{Docs/Introduction.org}{Introduction} -\item \href{Docs/Installation.org}{Installation} -\item \href{Docs/Abstractions.org}{Abstractions} -\item \href{Docs/Implementation.org}{Implementation} -\begin{enumerate} -\item \href{Docs/ClientImplementation.org}{Client Module} -\item \href{Docs/P2PImplementation.org}{P2P Module} -\item \href{Docs/ServerImplementation.org}{Server Module} -\item \href{Docs/ConfigImplementation.org}{Config Module} -\item \href{Docs/CliImplementation.org}{Cli Module} -\item \href{Docs/PluginImplementation.org}{Plugin Module} -\end{enumerate} -\item Language bindings -\begin{enumerate} -\item \href{Docs/haskell/}{Haskell} -\end{enumerate} -\end{enumerate} - -\subsection{Introduction} -\label{sec:org00598fd} -This project aims to create a peer to peer (p2p) network, where a user -can use the p2p network to act as a client (i.e sending tasks) or the -server (i.e executing the tasks). A prototype application will be -developed, which comes bundled with a p2p module and possible to execute -docker containers or virtual environments across selected nodes. - -\subsubsection{Objectives} -\label{sec:org385b937} -\begin{itemize} -\item Background review on peer to peer network, virtual environments, -decentralized rendering tools and tools to batch any sort of tasks. -\item Creating p2p network -\item Server to create a containerised environment -\item The client node to run tasks on Server containerised node -\end{itemize} - -\href{Docs/Introduction.md}{Read more on the introduction} - -\subsection{Extend your application with P2PRC} -\label{sec:orgcab50f2} -\begin{verbatim} -package main - -import ( - "fmt" - "github.com/Akilan1999/p2p-rendering-computation/abstractions" -) - -func main() { - _, err := abstractions.Init(nil) - if err != nil { - fmt.Println(err) - return - } - - // start p2prc - _, err = abstractions.Start() - if err != nil { - fmt.Println(err) - return - } - - // Run server till termination - for { - - } -} -\end{verbatim} - -\subsubsection{Export once this is added export P2PRC as environment paths} -\label{sec:orgd4e7f7c} -\begin{verbatim} -export P2PRC= -export PATH=:${PATH} -\end{verbatim} - -\href{Docs/Abstractions.md}{Read more} \ldots{} - -\subsection{Installation from source} -\label{sec:org6f12be0} -\begin{enumerate} -\item Ensure the Go compiler is installed - -\begin{verbatim} -go version -\end{verbatim} - -\item Ensure docker is installed (Should run without sudo) - -\begin{verbatim} -docker ps -\end{verbatim} - -\item Clone this repository - -\begin{verbatim} -git clone https://github.com/Akilan1999/p2p-rendering-computation -\end{verbatim} - -\item Install and build the project - -\begin{verbatim} -make install -\end{verbatim} - -\item If you look closely you will get outputs such as: -\texttt{// Add them to your .bashrc file export P2PRC=//p2p-rendering-computation export PATH=//p2p-rendering-computation:\$\{PATH\}} - -\setcounter{enumi}{4} -\item Test if it works - -\begin{verbatim} -p2prc -h -\end{verbatim} - -or - -\begin{verbatim} -./p2prc -h -\end{verbatim} - -\href{Docs/Installation.md}{Read more on the installation and -usage} -\end{enumerate} - -\subsection{Design Architecture} -\label{sec:org2e297a7} -The design architecture was inspired and based on the linux kernel -design. The project is segmented into various modules. Each module is -responsible for certain tasks in the project. The modules are highly -dependent on each other hence the entire codebase can be considered as a -huge monolithic chuck which acts as its own library - -\href{Docs/DesignArchtectureIntro.md}{Read more on the Design -Architecture} - -\subsection{Implementation} -\label{sec:orgd4b0943} -The programming language used for this project was Golang. The reason Go -lang was chosen was because it is a compiled language. The entire -codebase is just a single binary file. When distributing to other linux -distributing the only requirement would be the binary file to run the -code. It is easy to write independant modules and be monolithic at the -sametime using Go. Using Go.mod makes it very easy to handle external -libraries and modularise code. The go.mod name for the project is -git.sr.ht/\textasciitilde{}akilan1999/p2p-rendering-computation. - -\href{Docs/Implementation.md}{Read more on the Implementation} - -\subsection{Find out more} -\label{sec:orge8fec0a} -As we are working on the open source project p2prc (i.e p2p network -designed for computation).If you are interested in participating as a -contributor or just providing feedback on new features to build or even -just curious about new features added to the project. We have decided to -create a discord group. -\end{document} \ No newline at end of file diff --git a/README.org b/README.org deleted file mode 100644 index 34b1188..0000000 --- a/README.org +++ /dev/null @@ -1,180 +0,0 @@ -https://raw.githubusercontent.com/Akilan1999/p2p-rendering-computation/master/Docs/images/p2prclogo.png]] - -The main aim of this project was to create a custom peer to peer -network. The user acting as the client has total flexibility on how to -batch the tasks and the user acting as the server has complete -flexibility on tracking the container's usages and killing the -containers at any point of time. - -** Latest tutorial -:PROPERTIES: -:CUSTOM_ID: latest-tutorial -:END: -[[https://www.youtube.com/watch?v=OMwCpedu5cs%22][https://i.ytimg.com/vi/OMwCpedu5cs/hqdefault.jpg]] - -* Table of contents in the Docs folder -:PROPERTIES: -:CUSTOM_ID: table-of-contents-in-the-docs-folder -:END: -1. [[file:Docs/Introduction.org][Introduction]] -2. [[file:Docs/Installation.org][Installation]] -3. [[file:Docs/Abstractions.org][Abstractions]] -4. [[file:Docs/Implementation.org][Implementation]] - 1. [[file:Docs/ClientImplementation.org][Client Module]] - 2. [[file:Docs/P2PImplementation.org][P2P Module]] - 3. [[file:Docs/ServerImplementation.org][Server Module]] - 4. [[file:Docs/ConfigImplementation.org][Config Module]] - 5. [[file:Docs/CliImplementation.org][Cli Module]] - 6. [[file:Docs/PluginImplementation.org][Plugin Module]] -5. Language bindings - 1. [[file:Docs/haskell/][Haskell]] - -** Introduction -:PROPERTIES: -:CUSTOM_ID: introduction -:END: -This project aims to create a peer to peer (p2p) network, where a user -can use the p2p network to act as a client (i.e sending tasks) or the -server (i.e executing the tasks). A prototype application will be -developed, which comes bundled with a p2p module and possible to execute -docker containers or virtual environments across selected nodes. - -*** Objectives -:PROPERTIES: -:CUSTOM_ID: objectives -:END: -- Background review on peer to peer network, virtual environments, - decentralized rendering tools and tools to batch any sort of tasks. -- Creating p2p network -- Server to create a containerised environment -- The client node to run tasks on Server containerised node - -[[file:Docs/Introduction.md][Read more on the introduction]] - -** Extend your application with P2PRC -:PROPERTIES: -:CUSTOM_ID: extend-your-application-with-p2prc -:END: -#+begin_src go -package main - -import ( - "fmt" - "github.com/Akilan1999/p2p-rendering-computation/abstractions" -) - -func main() { - _, err := abstractions.Init(nil) - if err != nil { - fmt.Println(err) - return - } - - // start p2prc - _, err = abstractions.Start() - if err != nil { - fmt.Println(err) - return - } - - // Run server till termination - for { - - } -} -#+end_src - -*** Export once this is added export P2PRC as environment paths -:PROPERTIES: -:CUSTOM_ID: export-once-this-is-added-export-p2prc-as-environment-paths -:END: -#+begin_example -export P2PRC= -export PATH=:${PATH} -#+end_example - -[[file:Docs/Abstractions.md][Read more]] ... - -** Installation from source -:PROPERTIES: -:CUSTOM_ID: installation-from-source -:END: -1. Ensure the Go compiler is installed - - #+begin_example - go version - #+end_example - -2. Ensure docker is installed (Should run without sudo) - - #+begin_example - docker ps - #+end_example - -3. Clone this repository - - #+begin_example - git clone https://github.com/Akilan1999/p2p-rendering-computation - #+end_example - -4. Install and build the project - - #+begin_example - make install - #+end_example - -- If you look closely you will get outputs such as: - =// Add them to your .bashrc file export P2PRC=//p2p-rendering-computation export PATH=//p2p-rendering-computation:${PATH}= - -5. [@5] Test if it works - - #+begin_example - p2prc -h - #+end_example - - or - - #+begin_example - ./p2prc -h - #+end_example - - [[file:Docs/Installation.md][Read more on the installation and - usage]] - -** Design Architecture -:PROPERTIES: -:CUSTOM_ID: design-architecture -:END: -The design architecture was inspired and based on the linux kernel -design. The project is segmented into various modules. Each module is -responsible for certain tasks in the project. The modules are highly -dependent on each other hence the entire codebase can be considered as a -huge monolithic chuck which acts as its own library - -[[file:Docs/DesignArchtectureIntro.md][Read more on the Design -Architecture]] - -** Implementation -:PROPERTIES: -:CUSTOM_ID: implementation -:END: -The programming language used for this project was Golang. The reason Go -lang was chosen was because it is a compiled language. The entire -codebase is just a single binary file. When distributing to other linux -distributing the only requirement would be the binary file to run the -code. It is easy to write independant modules and be monolithic at the -sametime using Go. Using Go.mod makes it very easy to handle external -libraries and modularise code. The go.mod name for the project is -git.sr.ht/~akilan1999/p2p-rendering-computation. - -[[file:Docs/Implementation.md][Read more on the Implementation]] - -** Find out more -:PROPERTIES: -:CUSTOM_ID: find-out-more -:END: -As we are working on the open source project p2prc (i.e p2p network -designed for computation).If you are interested in participating as a -contributor or just providing feedback on new features to build or even -just curious about new features added to the project. We have decided to -create a discord group.