Last updated 4 months ago
Many Cardano projects rely heavily on haskell.nix for building Haskell programs, with limited alternative frameworks that integrate well with the ecosystem.
This is the total amount allocated to Haskell.nix alternative: build Plutus contracts with Dream2Nix.
Dream2Nix is a modular framework for building software with Nix, already supporting various languages.
This project aims to add Haskell support to Dream2Nix, with a focus on building Plutus contracts.
If our work is rejected upstream, we reserve the right to use a fork. We will, however, strive to incorporate everything into the official repository.
Yes, Dream2Nix is open source under the MIT license, and this proposal aims to have all contributions merged into the main repository (incrementally through several PRs).
If separate repositories are necessary, they will also be MIT licensed.
A minimal proof of concept (PoC) for building Haskell programs with Cabal in Dream2Nix already exists. The goal is to expand (or rewrite) this module to support building generic Cabal projects using a "granular" approach (as defined by Dream2Nix), where each dependency is treated as a separate derivation, allowing for granular overriding.
Initially, we will focus on simple Cabal projects, but once the project reaches a stable status, we will shift to targeting real Cardano smart contracts.
Dream2Nix already includes examples for other languages and CI checks to validate these examples. We will integrate new Haskell examples and ensure they are built through updated CI checks.
This proposal increases the variety of technologies available for building Cardano applications. By leveraging a modular and generic framework, we can collaborate with non-Cardano developers to enhance the tooling.
Additionally, all projects utilizing haskell.nix could potentially benefit from this initiative.
We are both expert Nix developers with significant experience and a strong track record of contributions to several related projects, including:
Additionally, we serve as maintainers for numerous packages within the nixpkgs ecosystem and other nix-related projects, showcasing our deep understanding of the Nix environment and its package management. Our expertise extends to the Cardano blockchain, where we have actively contributed to projects such as:
These contributions demonstrate our capability to navigate complex systems and deliver high-quality software solutions.
To ensure our approach is feasible and to establish trust and accountability, we will employ strategies such as prototyping and iteration to refine our solution based on feedback, alongside transparent budgeting that outlines all expected costs. We will provide regular updates regarding the status of the project, including financial reports that reflect actual spending versus the budget. Our previous project management experience has equipped us with the skills to lead teams effectively, ensuring that resources are managed efficiently and responsibly. Together, our combined expertise and established processes demonstrate our capability to deliver this project with high levels of trust and accountability.
Milestone name: Settlement
Outputs:
Acceptance Criteria: -
Evidence:
Milestone name: Granularity
Outputs:
Acceptance Criteria:
Evidence:
Milestone name: Plutus Contracts
Outputs:
Acceptance Criteria:
Evidence:
Milestone name: Closeout and Video
Outputs:
Acceptance Criteria:
Evidence:
Andrea Ciceri - https://github.com/aciceri
Andrea has over 5 years of experience in blockchain technology, primarily focused on Cardano, with earlier work in Ethereum. For the past 3 years, he has worked as a DevOps Engineer and Nix expert, crafting solutions for the Cardano ecosystem. His passion for Nix led him to co-found the Nix Milano meetup, the first recurring Nix-focused community event in Italy.
Andrea has contributed to and led several open-source Cardano projects, including:
He has already shown to know dream2nix by implementing basic support for purescript/spago: https://github.com/nix-community/dream2nix/commits/main/modules/dream2nix/WIP-spago
Alberto Fanton - https://github.com/albertodvp
Alberto is a blockchain engineer with 7 years of professional experience working in both national and international contexts. Currently, he is working as a freelancer, dedicating his expertise to developing Cardano-based projects with a focus on distributed systems and blockchain development. His experience in various companies in Milan has given him deep familiarity with the local tech ecosystem and allowed him to build an extensive professional network.
An active member of the Milan tech community, Alberto co-founded the Nix Milano meetup, is a frequent attendee of the Open Source Saturday events and regularly participates in the Haskell Milano meetup. His involvement in these communities has helped foster a thriving developer environment in Milan, with a focus on functional programming, open-source contributions, and blockchain innovation.
In addition to his professional work, Alberto is a dedicated contributor to the open-source ecosystem. His notable contributions include:
He is also a Nixpkgs maintainer, contributing to the development of one of the most advanced package management systems. Alberto’s strong presence in the open-source community, combined with his extensive network and local expertise, positions him well to support the growth of the Cardano ecosystem in Milan.
Hourly salary: 50 EUR/hour
Estimated hours: 2 days per week (overall among all the components) for 12 months (52 weeks) = 832 hours
Total development cost: 41600.00 EUR (138666.67 ADA at 0.3 EUR/ADA)
Contingency: ~7.5%
Grand total: 145000.00 ADA
The value for money is expected to be optimal, as costs are solely based on development hours.