Bonsai a Gnome-centric multi-device sync service

gnome-bonsai

Christian Hergert, a Red Hat developer who has worked in the Gnome Builder integrated development environment, introduced a new pilot project called "Bonsai" which has as main focusl be run as a solution to the problem of synchronizing the contents of various devices using Gnome.

Users can use Bonsai to link multiple Linux devices on their home network when they need to access files and application data on all computers, but don't want to transfer their data to third-party cloud services.

Bonsai it should work similar to a personal cloud.

Bonsai is a daemon and a shared library for providing and consuming personal cloud-like services. The target audience is users of the GNOME desktop with multiple devices for whom you would like to have your content synced.

About Bonsai

Bonsai includes the bonsaid background process and the libbonsai feature library to provide cloud-like services.

The background process can be started on the main workstation or on a mini computer Raspberry Pi constantly connected to the wireless network and to a data storage device that works permanently in the home network.

The library is used to make GNOME applications access Bonsai services using a high-level API.

To communicate with external devices (other PCs, laptops, phones, Internet of Things devices), the bonsai-pair utility is proposed, which allows generating a token to connect to services. After binding, an encrypted channel (TLS) is organized to access services using serialized D-Bus requests.

Bonsai is not just limited to sharing data y can also be used to create objects accessible to multiple systems with support for partial synchronization between devices, transactions, secondary indexes, cursors, and the ability to apply specific local changes to each system on top of a common shared database.

Storage of common objects it is based on the GVariant API and LMDB.

Apps are much better when they can communicate between devices. Therefore, a Data-Access-Object library, aptly named libbonsai-dao, provides serializable object storage based on GVariant and LMDB.

 Supports primary and secondary indexes, queries, cursors, transactions, and incremental synchronization between devices. It has the ability to change local changes on the changes pulled from the primary Bonsai device.

Currently, only one service is offered to access file storage, but in the future it is planned to implement other services to access mail, calendar planner, notes (pending tasks), photo albums, music and video collections, search system, backup, VPN etc.

For example, using Bonsai on different computers in Gnome applications, you can organize work with a synchronized calendar planner or a common collection of photos.

Alsos Christian Hergert mentions that the service is currently not secure, but it will work on the fly to be able to isolate the applications and improve this part to make the service safe.

In particular, we need to provide developers with great tools to build apps that natively support device syncing.

What I have built to experiment with all of this is Bonsai. It's a great experiment at this stage, but it's getting interesting enough to collaborate with others who want to join me.

How to obtain and install Bonsai?

Regarding the project, for those interested in knowing how it works, try it or look at its source code, you should know that the project code is written in C and comes under the GPLv3 license. This can be obtained from Gitlab In the following link.

The construction of the package can be done with the help of Meson. 

git clone https://gitlab.gnome.org/chergert/bonsai.git
cd bonsai/
meson build --prefix=/opt/gnome --libdir=lib
cd build/
ninja
ninja install

If you want to know more about this service, you can consult the original publication in the following link


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.