Fadroma (dev tooling) - Funding proposal

Development update

Community pool spend funding proposal

We’ve submitted an on-chain community pool spend proposal for funding the project.

Please cast your votes on Governance proposal #143. (SecretNodes link | Mintscan link)

:wrench: :construction_worker_man: :tractor:

2 Likes

Could you please explain why you’re asking for the whole sum in one payment ? Why did you not follow the initial prop to do milestone payments ?

1 Like

We proposed the full amount of the grant in the governance proposal because of several reasons:

It is common for development grants to be split into multiple milestones, with each milestone representing a specific stage or deliverable in the development process. Each milestone is typically associated with a specific payment, and the payment is only made once the milestone has been successfully completed.

Initially we proposed the grant based milestones in the application towards the foundation but we only saw weeks of dragged communication without clear answer, and a rejection because of foundation restructuring and lack of funds.

In general, milestone-based payments provide a way to mitigate risk and ensure that both parties are aligned in terms of expectations and deliverables. By breaking the development process into manageable stages, both the funding entity and the grant recipient can ensure that the project is progressing according to plan and that funding is being used effectively. We as development agency though have only had issues working in this approach by delivering the work (open source) and then waiting for multiple months to receive payment. Thus we decided to request funding for the whole roadmap that we’ve outlined this time.

The work on the project so far and some of the newly outlined items in the roadmap have been tackled on our expense so far over the months and we are slowly moving to our goals set in the proposal.

In case the proposal does not get accepted and funded we might fallback for milestone based requests if there is still demand for Fadroma in the community.

1 Like

Been noticing a lot more proposal / upcoming asking for around 10% of the pools assets. I think voting no is the only way to push proposers to break up their asks into multiple over time as they deliver, especially in the case of large proposals, i think it’s important that risk to the community is minimized above any risks to the proposers of convenience and such.

I have to say no to the proposal, not because of the content (which I quite like), but because you have no milestone payments and instead requested a lump sum. Could you please resubmit the proposal with milestone payments ?

Also another important thing: How do you see a long term (6m - 1y or even 1y+) support of fadroma for Secret ? Would you go the community pool with it, what plans do you have there ?

2 Likes

Also would like to see milestones. Voting no because of above concerns, but will support with a payment plan that’s broken up.

1 Like

@thenodefather @SecretSaturn @Brendan Thanks for the feedback.

We’ll resubmit the proposal with milestone payments then. Do you have any suggestion on how to submit the first proposal, shall we apply for the Grant Accepted milestone first and then for the rest to follow, or do you expect a different payment structure than the one proposed initially?

I’ll think more on it but I’d very much like to hear a response to this in the proposal as well. Simply because we want to avoid abandoned products that are costly. Not saying you will, saying others have, so it’s preferable to hear a response to what saturn asked.

1 Like

While working within this ecosystem, we encountered challenges and obstacles that ultimately led to the creation of Fadroma. Since January 2021, we have been committed to maintaining and advancing the project, even at our own expense. However, we now seek to validate our assumptions and product value proposition by receiving financial support from individuals other than ourselves. We understand that open source funding can be complex, but we remain dedicated to developing and advancing Fadroma, and financial support will only accelerate this process. Thus, we believe a 6-month to 1-year support would greatly benefit the community that utilizes Fadroma and we’re committing to it.

Given the Secret Foundation’s recent restructuring, we had to pursue a community pool proposal, which will likely be our primary option in the future. We hope that projects benefiting from Fadroma will reciprocate by donating, funding, or contributing to the project. In an ideal world, such contributions would allow us to continue developing and advancing the platform for the benefit of the entire community.

2 Likes

Open source / public good funding is indeed complex in general and on secret. I dont see an issue with you going to the pool for this sort of infrastructure, cosmwasm is in a somewhat similar boat on how to fund their work. Even saying that’s likely the plan for you and the rest of what you said, is good info / answering what I was curious about. Side minor note, foundation restructuring has zero impact on what options you had, foundation would have never funded your efforts based on what they have funded in the past and what they have refused to fund. I get your point though, slabs Grant process adjusting to delegations mostly probably had a higher impact on you.

2 Likes

You are still confusing the Secret Foundation with SCRT Labs. SCRT Labs gives out the grants for such projects. SCRT Labs did not restructure.

1 Like

Mar 2023 Update: Proposal #143 was rejected; as suggested, we’re going to break this down into 3 separate 6-week milestones, which are currently taking shape in this GitHub project.

Our first milestone will primarily focus on establishing a smooth onboarding flow:

  • :building_construction: A project creation tool for scaffolding a new Secret Network project with smart contracts, API client library, and deploy/ops module.
  • :package: The option to deliver a full development environment (including Rust/TS toolchains and related development dependencies) over the Nix package manager for a secure no-hassle setup.
  • :open_book: Up-to-date API documentation and getting started guide.

These are coming along nicely, and developers will be able to try out Fadroma in greenfield projects during the 1st milestone.

The full feature set that will be available to developers after the completion of milestone 1 is outlined at https://fadroma.tech.

For subsequent iterations, we’ve prioritized the following features:

  • :mirror:Self-identifying contracts with built-in API schema discovery.
  • :chains: IBC/cross-chain support.
  • :star_struck: A development dashboard.
  • :stopwatch: Tracing and profiling of contract deployments and method calls (in terms of time as well as gas).
  • :fuelpump: Better gas estimation for query and transaction bundling.

This latter part of the roadmap is not set in stone; as always, we’re looking forward to your input, and are open to feature requests from the community.

4 Likes

As per request of @laura on the last week’s governance call we are providing some data from Github about usage.

Sadly Github does not provide this data for longer period than the last 14 days.
But what we can see for the said period (23 feb - 08 march) is:

  • 928 clones of the project (132 unique)
  • 93 views of the repo (22 unique visitors)

Some usage statistics from Fadroma on crates.io (https://crates.io/crates/fadroma) since we’ve published the stable version:

2 Likes

Note that the public Cargo package is very young. Before publishing 0.5.0, the Fadroma contracts library was mainly consumed via Git submodule. This mode is still available so it’s easy to hack on Fadroma from your project repo :slight_smile:

And here are some quick numbers from NPM:

2 Likes

…ofc, these stats don’t really tell the full story because of submodules, because of some past package deprecations/renames, etc.

Fadroma actually started out in 2021 as little more than a declarative Rust macro and a JS vuln repro…those were the days :sunglasses: In the meantime, even though we’ve made it known that we’re working on a framework, we haven’t made any organized effort to go out of “stealth mode”; instead, we’ve been building out Fadroma’s capabilities and battle-testing them against the various occurrences afforded by Secret Network development.

So that’s exactly what our upcoming Milestone 1 proposal is adding up to be all about: making it easy for everyone to set up a fresh project and start writing contracts on the solid foundation that Fadroma provides. Stable deployment API, extensive documentation, and a smooth onboarding flow for new users are our top priorities.

As a sort of stretch goal, we’ll also lay the foundations for a future Fadroma-based project that aims to address the hot-button topic of sustainable funding for open source projects – by enabling seamless, secure crypto donations from the immediacy of the terminal. This, cross-chain support, and putting together a cohesive development dashboard to provide a context-switch-free overview of an in-development dApp, are among the long term goals we will pursue over the course of all three planned iterations.

1 Like

We’ve been building Fadroma, the full-stack dApp framework, in “internal tooling” mode since 2021. This year, we aim to get the Secret Network developer community involved in the making of a cross-chain dApp revolution.

We have the vision of Secret Network as a globally distributed decentralized backend for general purpose computing (in the class of AWS Lambda or Cloudflare Workers), and would like to make it easier for everyone to build the next generation of applications that leverage distributed ledger-based backends.

The Rust side of Fadroma is used to write contracts, and is comparable to secret-toolkit. The TypeScript side of Fadroma is used to manage the contract lifecycle, from source-code to transactions, and contains deployment and operations tooling comparable to Polar.js and Griptape.js.

In both cases, we provide an extensive programmatic vocabulary for building more complex projects and maintaining continuity as a dApp’s codebase evolves over time. The current feature list is available at https://fadroma.tech/.

In the on-chain governance community pool spend proposal that will follow we request the following funding:

Phase Time Sum
Grant Accepted Present (T0) $13,337
Milestone 1 Completed T0 + 6 weeks $25,420

Total: $38,757 (~ 57k SCRT)

This feeds our team of organically grown free range non-grass-fed Balkan developers for 6 weeks, with the goal of making Fadroma 100% ready for public greenfield adoption, by providing the much needed:

  • Getting started guide and step-by-step explanation of feature set.
  • Project creation tool with pre-configured CI workflow (GHA and/or Drone).
  • Up-to-date reference documentation and usage examples.
  • Self-contained development environment - Rust, Node and associated dev tools securely delivered using nix-shell https://nix.fadroma.tech.
  • Interactive REPL for exploring smart contract deployments.
  • Various minor refactors and bug fixes for improving the usability of the API and CLI.

As well as research and initial prototyping of the following features:

  • Library support for mainline CosmWasm, IBC and multi-chain projects.
  • Enhanced reproducible builds and deployments, such as the ability to build a custom localsecret image with your contracts pre-deployed (which you can then use for CI, or hand off to a front-end team for testnet-less development)
  • An embedded “pay-what-you-want” mechanism for funding open source software, where the Fadroma interface occasionally prompts the user for a donation in SCRT and/or SNIP-20 – which can be made from the immediacy of the terminal, after which an offline-friendly license key generated by a smart contract replaces the donation prompts with “thank you” notes and/or a custom message. This licensing system will be built entirely using Fadroma, and aims to subsequently support IBC donations as well.

A full roadmap is available at: Fadroma · GitHub

We plan for two more milestones of $25,420 each, corresponding to “Iteration 2” and “Iteration 3” in the GitHub project. After completing each milestone, we will hold demonstrations and take community feedback for the development of Fadroma into account for the content of the next milestone.

2 Likes

Community pool spend funding proposal #183

On-chain proposal for funding the first Milestone outlined above is submitted:

:wrench: :construction_worker_man: :tractor:

Today, Fadroma levels up. Thanks to Secret Network Proposal #183 (SecretNodes, MintScan), after nearly a hundred beta versions, the long-awaited stable 1.0.0 build of our devtool and operations component, @hackbg/fadroma, is now officially released on NPM.

This package defines a TypeScript framework implementing isolated builds and declarative deployments of smart contracts. This system is tailored for Secret Network and based on real experiences and workflows from the development and maintenance of a CosmWasm-based DEX and lending protocol.

The @hackbg/fadroma tool serves as the missing link between smart contract platforms and twelve-factor applications. It automates repetitive tasks encountered during development and testing, and its script-friendly API enables you to orchestrate deployments, migrations and other on-chain actions with ease. The @fadroma/agent library defines the backbone of @hackbg/fadroma - a TypeScript API for integrating Secret Network smart contracts into any application.

The easiest way to get started with Fadroma, is to create a new project by running the following command in your trusty terminal:

npx @hackbg/fadroma create

This will download the latest version of Fadroma from NPM, and prompt you to name a project, define the contracts in it, etc.

Having created a project, you can compile your code with:

npm run rebuild

You can deploy your project to a localsecret instance with:

npm run devnet deploy

For writing smart contracts, we offer the Rust library, fadroma. This will be automatically included in contracts created by the project creation utility, and you can add it manually to Cargo.toml like this:

[dependencies]
fadroma = { version = "0.8.7", features = [ "scrt" ] }

For more information about the features offered by Fadroma, check out our documentation.

Now, what will you build with Fadroma?

1 Like

SCRT Agents…

What have you built General oljo to use against the blood suckers in meat-space?

Your Metaverse worries are currently in jeopardy of being unclicked by lunatics baiting the freaks to go into full Mad Max berserk world mode. If you want to continue scripting in the depths of the wide web, you need to feed me streak daily to battle back against the homunculus.

My General! Give Naphtha!