This article was first published on null
What does “compatibility” mean in the Golem context?
The term “compatibility” means “the ability of one computer, piece of software, etc. to work with another.” In Yagna terms, this refers to all components collaborating within the Golem Network.
When designing the scalable architecture of New Golem, we put special emphasis on modularity. We wanted the Golem ecosystem to be built of components, crafted by various parties, and interacting according to the protocols and APIs we have designed. While this might sound ideal, there are downsides to everything. ‘Dependency hell’ is how the industry refers to the struggle to enhance individual elements of the platform without breaking the stack’s functionality in an uncontrolled manner. The more components - the more complex their compatibility relationships are, and the more their authors struggle.
On top of the above challenge which is known to any software engineer dealing with complex systems, at Golem we have the evolving network where nodes are running on different versions of components, with no centralized control over their upgrades. The nodes need to upgrade on their own. These upgrades come with APIs and components evolving, new ExeUnits being added, protocols optimized and plain bugs being fixed... thus adding more compatibility conundrums.
We want Golem App developers to be able to work without limitations or constraints, and with this we do not only refer to building an unstoppable protocol, but also to building a protocol that will not stop them. Applications are to be resilient to Requestor upgrades (while ensuring the app remains compatible with the Yagna APIs), and they should be runnable on as many Provider nodes as possible in the network (which requires those Providers to be compatible with the app).
On the other end, when running a Provider node, users are most likely concerned about how ...
To keep reading, please go to the original article at: