Golem GitHub Digest: understanding the Golem Repositories

What is the Golem GitHub Digest?

This is a new bi-weekly series we’re starting to help our community stay more up-to-date on the latest focus of our development and research teams. With New Golemgoing full steam ahead towards the MVP, the Yagna repository being open (since ReadyLayerOne), and many changes in both focus and development in the Golem Factory Github we want to take the opportunity to provide you with more regular, and easy-to-read updates.

What’s in store for this Digest?

Since this is the first one of this new series, we’ll spend a bit of time introducing individual repositories on which the team has been working on during the past months and how they relate to Golem and our goals

So, what’s in the Golem GitHub? (in chronological order for last commits)

yagna
With the team restructuring towards a more efficient and faster setup to build New Golem, the development contributions in the Golem repo have decreased gradually. The Next Milestone, New Golem’s MVP was internally dubbed Yagna some time ago, and when open-sourcing we decided to keep the name temporarily. Yagna and related repos are where most of this series will focus going forward.

golemate
This is a recently released set of research that’s been looked into by a contributor in our research team, Marcin M, who was temporarily aiding the R&D team. Golemate utilizes Golem to calculate the next best move for a chess game. Since Golem requires determinism, uses one-off computations, and chess is often timed, this research project highlights up a number of interesting challenges.

ya-runtime-vm
A work-in-progress (WIP). Yagna plugin. This provides: a lightweight docker-like execution environment for tasks. This repo is part of the broader topic of ya-runtime which also contains Yagna plugins: ya-runtime-wasi—a wasmtime based execution environment; and ya-runtime-emscripten—a Spider Monkey (Javascript engine from Firefox) based execution environment.

jsonrpc
A Rust JSON-RPC implementation (a fork of paritytech’s JSON-RPC) which we use for our nodes to communicate with the Ethereum blockchain.

boinc-supervisor
An application that implements enough of BOINC IPC to support running simple apps without requiring the user to run the BOINC client. It’s research in this repo’s current state. It's possible to run Rosetta with this. Other applications might use some capabilities provided by BOINC client, that make it impossible to run with our supervisor.

golem-client-mock
A mockup of the Golem Client with all the standardized API which we used for some tests (found here).

ya-client
A public New Golem REST APIs client, binding with Data Model and specifications in OpenAPI format.

golem-monitor-frontend
Simply the Web frontend for the Golem stats page.

ProofOfDevice
Our recent research and PoC produced by our amazing R&D team. You can read more about Proof-of-Device in our recent blog post.

Golem-electron
The repo for the desktop application and Graphical User Interface (GUI) using Electron which many users will know unless you use `golemcli` to interact with your node.

gfaas
Stands for Golem-Function-as-a-Service. An experimental implementation of FaaS on top of gWasm in Golem Network—by our Golem Wasmnator, Kubkon. It's currently not-even-alpha-ready so use it at your own risk!

sp-wasm
A WebAssembly sandbox using standalone SpiderMonkey engine.

ya-net-p2p
This is the start of our non-centralized p2p network for New Golem.

gwasm-rust-api
gwasm-api is a Rust library for interfacing your native apps with gWasm. gWasm is Golem's meta use-case which allows Golem's developers/users to deploy their Wasm apps on Golem Network.

golem
Current Clay-Beta implementation - production. This repository will eventually become a Legacy Golem of sorts.

gwasm-runner
A command line tool for running gWasm compatible apps locally, via Golem Unlimited or via Clay Golem.

golem-wiki
This is the repo we use to build the Golem documentation in combination with docsify!

homebrew-golem
Homebrew is simply a package managing tool for MacOS which we use to help us install Golem for our Mac users.

Digest wrap-up!

For any of you curious bees who want to learn more about it and watch things a bit more in real-time, we’ve put together feeds in our new-ish Discord community chat. Last week we also added a platform bridge Discord<->Telegram, connecting together communities on both platforms so they can interact without the need to install the other application. Feel free to try it out! Or you can always join to have a chat with the Golem team, suggestions, theoretical applications, issues, etc. Anything Golem related that you can think of, we want to hear it.

For next Golem GitHub Digest we will dive more deeply into specific repositories in contrast to this week’s more introductory style. If you have any questions, suggestions, or want anything in this update elaborated on then leave a comment.