On October 2018, we presented our product, Golem Unlimited. As you might know, Golem Unlimited allows users to create an internal trusted network of computers with one of them, called the Hub being in charge. The Hub is a requestor and other computers in the company join it as providers. This solution significantly reduces the overhead for “fat providers” to set up Golem in their machines, and allows them the freedom to compute their own tasks in a web of trust setting.
Przemysław Rekucki (team lead, developer), Piotr Chromiec (developer) and Filip (developer) are the people in charge of this product. As part of our People of Golem series, the team shares insights on their day to day responsibilities and what makes Unlimited such a cool product.
Team’s core responsibilities
Team Unlimited is primarily responsible for determining the scope and creating the architecture for Golem Unlimited as a whole. Another of the responsibilities is supporting users and developers willing to integrate with it.
In order to achieve this, Team Unlimited is designing, developing, testing and maintaining:
- Golem Unlimited Hub - the main node in a local Golem Unlimited network which may be used to schedule tasks on connected providers.
- Golem Unlimited Provider - a node that is usually running on computers in a local area network. All popular operating systems (Linux, macOS, and Windows) are supported.
- REST API and Rust API for developers using Golem Unlimited.
- Native user interfaces (written in Vala/GTK for Linux, C# for Windows and Cocoa for macOS) for Golem Unlimited Provider.
- Web user interface for GU Hub.
- Host direct, Docker and Wasm runtime environments for GU Provider.
- Code examples and sample plugins for GU Hub.
On a day to day basis, the Unlimited team needs to cooperate with the following teams:
- R&D team - cooperation to run gWasm apps also on GU. Unlimited supports them on the creation of PoC integrations based on GU: molecular computations in LAN networks (GUMPI MPI, Gromacs, and more).
- Brass team - this cooperation’s goal is to enable plugging GU cluster as a single “fat” Provider within Brass Golem Network.
Also, the teams have reimplemented golemcli in Rust which is two orders of magnitude faster (100x; 20ms vs 2s) than its Python brother. This implementation was really appreciated, for its speed but also for built-in multi-shell completion.
Moreover, team Unlimited contributes to multicore support for gWasm on mainnet in the next Brass release.
- CGI team - sharing knowledge and working together on transcoding on Golem Unlimited.
- UX team - working together on native user interfaces for Golem Unlimited Provider and on the web user interface for Golem Unlimited Hub.
- Hoard (external company) - allowing distributed compilation using Golem Unlimited (https://blog.golemproject.net/hoard-compiler-on-gu-veni-vidi-vici/)
Team Unlimited Long-term Goals
- gVMkit - QEMU-based tool for running arbitrary images containing applications that need distributed computing power (more information: https://github.com/golemfactory/golem-unlimited/wiki/Golem-Unlimited-Roadmap#Runtime-Environments)
- Task Management APIs: task priorities (low-priority tasks should be suspended until the high-priority tasks are completed).
- Basic Task Scheduler as a library. This is done in order to facilitate creating basic integrations for our users. It will cover a simplistic strategy for acquiring provider nodes, failover and job balancing.
- Provider Information API - used to query providers about resources shared with Golem Unlimited.
- Virtual Networking for Golem Unlimited Provider nodes - so that they can communicate with each other even if their external IP addresses change.
- Authentication, Authorization, and Permissions - apps will be authenticated using keys and each app will have multiple permissions - being authorized to run some images on selected providers. The Golem Unlimited Hub will be responsible for keeping and verifying all permissions.
Finally, we asked them what makes the team exciting:
“Golem Unlimited is written mostly in Rust (a modern, performant and memory-safe programming language; chosen most loved in the last four years) and has a tiny footprint, <4Mb binaries for both: Hub and Provider- which are very robust at the same time.
Our team pioneered Rust within Golem Factory, and now most of our colleagues are using it. We have also initiated an internal Rust meetup series, to further educate our colleagues, and discuss challenges and ideas around our use of the language.
We are the last team within the company not using Scrum, and still, have good traction, because of the strong, brave and innovative leadership within the team. Our weekly standups are usually carried out… walking(!) in the green area of our Warsaw HQ.
Our main product has simpler requirements than the Golem software (roughly speaking: original Golem but within a trusted environment and no economy) which allows us to progress faster. The project is open-source, cross-platform, written with efficiency in mind. Moreover, GU enables quick prototyping, so we are constantly at the battlefield seeking for new use-cases for the future of Golem.”
That’s it for now! We hope you enjoyed this new edition of People of Golem. Stay tuned, because there’s plenty of more people in our team that we want to introduce our community.