Description
This is a P2PRC release after around a year. We would like to welcome @xecarlox94 as a main member to the P2PRC team!
@xecarlox94 has done a major contribution to the project which includes supporting Nix Flakes to easily to build P2PRC from source in
most Unix based machines which support Nix (alias p2prc='env P2PRC=<path you want the configs to exist in> nix run github:akilan1999/p2p-rendering-computation -- and then just run p2prc -h. If this works you are fully setup!).
Another exiting bit contributed from @xecarlox94 is the Haskell bindings which allows the possibilities to orchestrate workloads (A custom process to deploy a server as an example) on P2PRC nodes (Which can be machines behind NAT for instance) in a functional manner (Something no one should touch in Go. If you do here are the nearest therapy centres).
Other mainline features include the possibility for a P2PRC processes to be linked to a domain name while switching nodes behind NAT without having to change the A name entry on your DNS provider. We have also designed a p2p based system to share public keys with
all the nodes in the network. This will allow public-private key authentication by default for users to SSH or deploy processes into P2PRC nodes.
The P2PRC documentation has been as well fully ported over to ORG mode allowing us to use a single text file to generate the docs webpage.
The scam we are protecting people from:
What's Changed
- Polishes up the Documentation by @cr2007 in #100
- Updates the
CITATION.cfffile by @cr2007 in #101 - adding nix shell development environment by @xecarlox94 in #106
- modifying nix config by @xecarlox94 in #107
- Adds Alerts Markdown Support by @cr2007 in #111
- Added possibility to add domain name for nodes on P2PRC by @Akilan1999 in #112
- Setup baremetal by @Akilan1999 in #115
- Initial integration of Haskell orchestration module bindings by @xecarlox94 in #116
- Nix Flake development environment by @xecarlox94 in #118
- Nix Flake development and build environment upgrade by @xecarlox94 in #121
- P2PRC docs by @Akilan1999 in #122
New Contributors
- @xecarlox94 made their first contribution in #106
Future work:
-
To support heterogeneous set of Nodes that cannot run P2PRC: This stems from a personal issue I have when doing research on CheriBSD kernel. For my research I am using the ARM morello which is a 128bit ARMv8 processor. At the moment Go programs can cannot compile and run inside the CPU. This means I cannot run P2PRC at the moment inside the ARM morello to remotely access it when it's behind NAT using P2PRC. This would indeed be a common problem when running against various Architectures that do not support running P2PRC. We intend to use the implementations similar to socat to ensure we can bind addresses of local nodes to a node running P2PRC and the node running P2PRC can do a local map port function call to escape NAT.
-
Formalising a P2PRC process: To design a data structure that can represent current set of properties:
Example:- IP address (string)
- Port no (int)
- Task name (string)
- Task id (int)
- Encoded deployment script (multi-line string)
- Command to run deployment script (multi line string)
- Command to kill deployment script (multi line string)
- Status (boolean)
- Domain name (string)
Sample implementation being worked on: https://github.com/p2prc/p2prc-home-server/blob/main/python/library.py
Formal document: https://github.com/p2prc/p2prc-home-server/blob/main/docs/p2prc-home-server.pdf
Full Changelog: v2.0.0...v3.0.0
