Last updated a year ago
Guix is an advanced functional, source-based package manager. Packaging cardano-node for Guix will make compiling from source trivial and will produce bit-for-bit identical binaries every time.
This is the total amount allocated to Packaging Cardano-Node for Guix, A Functional Package Manger.
None
No dependencies
Project will be fully open source.
Pre-built binaries are a significant threat to the trust model of blockchain systems. There is no way to guarantee what a binary will do until it is run, and by that point it may already be too late. Building software from source is important for security and for trust. Many users are compelled to download pre-built binaries due to their convenience, but this requires a lot of trust in the software being installed, and could result in malicious code being run.
Building from source allows one to verify that the binary does what the source code calls out. However, there are challenges when building from source:
Guix provides multiple tools to help developers manage their packages.
In addition, Guix is a free software project, enabling maximum user freedom to use, learn from, modify, replicate, and share code without interference. This aligns with the values of the Cardano ecosystem, and combining the two will foster a more open software ecosystem.
My dream is to enable developers, enthusiasts, hackers, and the community to build software themselves, empowering them to take control of the tools they use, and to do so with as little friction as possible. Packing cardano-node for Guix will simply the process of compiling from source and serve as the stepping stone for packaging more Cardano tools for Guix. The long term goal is to enable developers to leverage Guix for managing their entire software stack in a purely functional way.
Recently, Bitcoin adopted the Guix package manager as part of their build process to minimize trust and improve reproducibility. Including cardano-node in the package repository might help on-board Bitcoin developers to the Cardano ecosystem, since they can continue using a familiar tool.
Including cardano-node in the Guix package manager will make the Cardano network more accessible to a wider group of people. Reducing friction in building software will bring more trust to the ecosystem and allow for a much better development experience for builders in the space, and confer greater collaboration due to consistent work environments.
There are many functional programming enthusiasts in the Cardano community, but not all of them use Haskell. Guix is a popular functional package manager, written in Guile Scheme, and sees wide use do to its inclusion in Bitcoin's build system.
(Guix is also a very swanky tool, beautifully engineered and elegant in its simplicity. There will be a mutually beneficial relationship between Guix and Cardano, and a win for free and open source software as a whole.)
I will measure the success of the project through the adoption of Guix across various Cardano ecosystem tools. Having cardano-node available as a package will make it easier for people to package their own tools, since the main node software is already available to build on.
I will also pursue adding Guix as an optional installation method to the official documentation for cardano-node, solidifying its place within the ecosystem. Inclusion in the official documentation will be recognition of its utility.
As more people adopt the tool, people will feel compelled to write their own documentation or tutorials to teach new people how to use it. This will create a snowball effect, leading to more and more adoption as time goes on. The first step is to get the ball rolling, and I will be the one to spearhead the effort, much like Carl Dong spreadheaded it for Bitcoin.
I will write documentation for cardano-node, detailing how one can install the software using Guix.
I will pursue inclusion of this documentation into the official repo for cardano-node.
Cardano-node currently has almost 3000 stars on its github repo, signifying its popularity. It is also the most used node client for the Cardano network.
I use Guix as a primary tool for development due to its reproducibility, and ease of packaging.
The code I write to package cardano-node for Guix will be licensed under the GNU AGPL, similar to the upstream Guix package manger. This will make the code free and open source, to the highest standards possible. Its inclusion into the Guix pacakge repo will demonstrate its trust, having gone through a vetting process by core developers.
The main goals for the project are as follows:
I will validate if the approach is feasible by ensuring licensing compatibility for the invovled software packages. Cardano-node is licensed under the Apache 2.0 license, which is AGPL compatible.
Cardano-node will be built using the Guix pacakge manager. I will also be using Emacs as a development environment, for its compatibility with Guix via the emacs-guix package.
After building cardano-node with Guix, I will test it by running the software and seeing if it works correctly. From there, I begin the process of including it in Guix, following the contribution guide in the official Guix documentation.
Once accepted, I shall write the documentation explaining how to install cardano-node with Guix and submit that over git to the official cardano-node Github repository.
Month 1:
Month 2:
Month 3:
I will use 18k ADA to fund purchasing more powerful development equipment suitable for production. I will convert ADA to USD, which would incur capital gains taxes in the country I live in, so a portion of the funds will be set aside to pay for that. The US dollars will be used to purchase the equipment, an upgrade motherboard 13th gen intel i7 with 20 core CPU, 64GB memory, and fast nvme storage. Compiling software from source is resource intensive, so to speed up the process, the powerful and speedy hardware will minimize the time spent compiling.
Any remaining ADA funds leftover will be delegated to a mission-driven, single stake pool operator, to support small stake pools and promote decentralization.
High end hardware is expensive, but yields incredible boosts to productivity. I am committed to developing more tools for the Cardano network, so having access powerful hardware will enable me to continue producing tools, beyond the scope of this proposal for Project Catalyst. An initial investment now will yield years of dedication to improving the network.
I am the sole team member. I will undertake writing the package recipe definition, submitting it upstream, writing the documentation for the official cardano-node github repo, and submitting that to upstream.