´╗┐Introduction

Broadly speaking, the Grassroots infrastructure is a lightweight architecture to share both distributed data and services across multiple servers.

Grassroots consists of a schema of how to access, query, and interact with other Grassroots servers and a set of computing tools to allow users and developers to perform many scientific tasks as easily as possible.

The infrastructure is accessible via a standard web connection and all data interchange is represented through JSON messages. Hence any server or client that can understand these JSON messages can be used to interact and integrate with Grassroots. For example, you can use a web browser or the included Qt-based desktop client to access all of the functionality of the system. The scientific data is what is important, not the user’s choice of tool to access the system.

Grassroots servers can be linked together, or federated, allowing the functionality of both to be made automatically available to users without having to perform any additional installation. This concept of federation and decentralisation is core to the Grassroots effort, making Grassroots instances “wrappers” or complementary infrastructure to existing data resources. Servers, Services and Clients are all interface specifications in that they declare an Application Programming Interface (API) that needs to be implemented. All JSON-based Server-Server and Server-Client communication specifications are described in the Schema guide. Grassroots currently runs on Linux, MacOS and Windows.

There is a public Grassroots server running at the Earlham Institute. There is also a demo site with complete instructions on how it was built that has its services and its field trials portal.

If you wish to set up your own Grassroots server, there is an installation guide which details the full process of installing Grassroots on Ubuntu 22.04.

Architecture

A list of all of the available components and their documentation is available here. Grassroots is to be as modular and adaptable as possible so there are many levels of configuration within the system which are detailed in the configuration guide.

All of components are open source and available on Github. Some of the highlights are: