Distribution channels for the Cartesi Machine Emulator binaries
Introduction
The Cartesi Machine Emulator is at the core of the Cartesi technology stack. It is used in the Cartesi Rollups framework, while running a validator node for a DApp, but it’s also used as tooling during the development of a Cartesi DApp.
The emulator binary is currently officially distributed as a docker image, available at Docker only for linux/amd64. While that may be sufficient for node execution it’s not the most convenient for tooling.
The goal of this project is to build a distribution strategy of binaries for the two main development platforms: Linux and macOS, and the two main architectures: amd64 and arm64. Windows developers are encouraged to use WSL, so they can use the binaries available for Linux.
Scope of Work
The machine emulator source code, publicly available at GitHub - cartesi/machine-emulator: The off-chain implementation of the Cartesi Machine, provides a Makefile and build instructions for two platforms, Linux (Ubuntu 22.04) and macOS. The scope of this work is to build an automated process for building, packaging, signing and distributing emulator binaries for those two platforms and architectures mentioned above, and as many Linux distributions as possible.
Linux
Linux has a vast ecosystem, comprising several different distributions, and different alternatives for binary release channels. We currently only build for Ubuntu 22.04 and Alpine 3.17 as a linux/amd64 Docker image, but it’s important to expand that scenario. The two main distribution formats are .deb and .rpm, and there are several initiatives that try to facilitate the packaging and distribution, like fpm, appimage, flatpack, snaps and homebrew.
macOS
macOS has a few alternatives for distribution channels, including the official macOS App Store, a standalone .dmg package, and popular alternatives like homebrew and macports, the latter two being more appropriate for command line tools, like the cartesi machine-emulator.
Windows
Windows developers are encouraged to use WSL, so they can use the emulator binary of the Linux distribution they choose and its associated distribution channel.
Deliverables
- An automated build process of the machine-emulator binary artifact for Linux and macOS, and two architectures, amd64 and arm64;
- An automated packaging and release process for any distribution channel on the platforms mentioned before;
- Entire codebase on a permissive open-source license;
- Readme file explaining the project.
Technical Requirements
- The build automation process must run using GitHub actions;
- The automation code and procedures must be properly documented.
Evaluation Criteria
- Adherence to Cartesi’s technical requirements;
- Quality and completeness of the proposal and documentation;
- A proposal can partially fulfill the scope of work of this RFP, i.e. only for homebrew distribution, or only for .deb package.
Submission Requirements
- A detailed description of the proposal;
- Overview of the team and their relevant experience and expertise;
- Timeline for the development and delivery;
- Cost estimate and budget breakdown;
Bidding instructions
Interested teams should confirm the intention to submit a proposal and express their needs to the Cartesi Foundation.
The Cartesi Foundation is happy to help address any questions, share helpful resources, or advise on formulating the team’s proposal.
We are excited to see your proposals and work together towards the growth of the Cartesi ecosystem!