Please describe your proposed solution.
The Problem
As a Cardano developer, I had to face a steep learning curve by myself. Even though I felt accomplished after going through it, It was a big pain and time-consuming process. My personal situation, having spare time, and being a self-learner allowed me to go through all of that, but definitely if we expect to onboard more developers this can not continue to be the case.
To reinforce this diagnosis we can go and see some data from a Developer Report, that shows the Cardano ecosystem, is far behind Polkadot, Solana & Cosmos in the number of developers, those three are above 300 active developers, while Cardano has only 160. But that is a snapshot. If we analyze the developer growing metric, it's a lot worse. Cardano is one of the slowest with a 14% increase comparing 2022 with 2021.
Link to the report: https://www.developerreport.com/developer-report
The solution
Our proposal is to create an all-in-one repository that enables developers to quickly start developing, compiling, testing, and implementing their projects.
We will implement an automated multi-container workflow that includes all the necessary tools and configurations to achieve this. By utilizing Docker Compose, we can define and run these multi-container applications seamlessly. This approach relieves developers from the burden of individually installing and configuring each tool, allowing them to concentrate on building dApps and smart contracts.
With our solution, developers can simply choose the desired version, begin writing their code, and experience a streamlined development process.
Protofire aims to create and maintain the Developer Studio as a public repository, offering a comprehensive resource for developers entering the world of Cardano smart contracts. This repository will include a CLI toolkit that empowers developers to make the most of the available tools. Additionally, it will provide sample contracts and Haskell libraries with essential functions to facilitate both on-chain and off-chain development. To enhance accessibility and adaptability, the repository will offer up-to-date Dockerfiles that users can easily configure to suit their specific needs, such as selecting desired tools, services, and networks.
Solution Features
Developer Studio will provide documentation, tutorials, and links to official pages and documentation. This ensures that developers have easy access to essential information and references.
To achieve this, we will provide the following tools within the Developer Studio repository:
1- Dockerfiles and Docker Compose for tools and services: We will offer Dockerfiles and Docker Compose configurations to facilitate the setup and execution of various core services in Cardano. These services, including Cardano Node, Cardano Wallet and DbSync are essential for many developments and applications. Developers will have the flexibility to start containers individually or in combination. The only requirement is that the user has Docker installed on their computer.
- cardano-node (software capable of running as a core block producer, as a relay or as a local entry-point to the network)
- cardano-wallet (provides an HTTP API and CLI for working with the wallet)
- cardano-cli (provides a collection of tools for generating keys, constructing transactions, creating certificates, and other important tasks)
- db-sync (database that maintains a copy of the ledger state)
2- Dockerfile and Docker Compose that sets up a development environment ready for writing, compiling, testing, and deploying smart contracts. It includes GHCup, Cabal, Nix, Plutus-Tx, and optionally Plutus-Apps. This uses the DevContainers offered by VS Code, the most widely used development environment for these projects today. Once the Docker is established within the DevContainer, VS Code seamlessly loads and runs the Docker for the user. This means that users can start writing and executing code within the mentioned Docker without any extra setup required.
Link: <https://code.visualstudio.com/docs/devcontainers/containers>
3- Bash script-based CLI toolkit to manage and utilize all the included tools within the Studio: containers, services and utilities. Users will be able to choose, configure, and create the aforementioned containers through interactive menus. The toolkit will also feature menus to interact with various services, such as querying the Cardano Node, creating basic transactions, signing and sending raw transactions, managing wallets in the Wallet Server and more.
Additionally, the toolkit will offer menus for performing essential tasks in the Cardano development process. This includes utilities to convert and derive addresses, view wallet balances, inspect UTXOs of addresses, calculate hash values of datums and redeemers, and more.
Menus will also be provided to interact with example contracts included as part of this solution, including minting contracts. Users will be able to create and utilize different pre-existing minting policies or add their own policies. These policies can be wallet-dependent or limited to one-time use (e.g., for creating NFTs). Users will be able to mint their tokens directly from this toolkit, add metadata to minting transactions and create metadata files in the required format for presentation to the Cardano Foundation. The suite empowers developers to create and deploy their own FT and NFTs needed for running and testing their applications.
Wallets can be exported for users to add them to their preferred wallet applications, such as Eternl, Nami, and others.
The toolkit will offer menus to download and select specific versions of Plutus Apps, along with commands to initiate the specific nix-shell for each of them. Additionally, there will be menus to facilitate running the documentation server (Haddock) for each of the downloaded Plutus Apps.
Menus will be available to start Chain Index, Playground Server, and Playground Client for the example contracts in the suite.
Other utility menus included:
- Fixing folder permissions (addressing issues with Cabal)
- Adding a folder to Git's safeDirectory for improved compatibility
4- Haskell libraries that encompass both off-chain and on-chain functions. These libraries serve as valuable resources for developers, enabling them to efficiently develop and interact with Cardano smart contracts. Includes functions to evaluate scripts that allows developers to assess the resource consumption of their contracts and getinsights into the performance and efficiency of the contracts, helping developers optimize their code and ensure optimal resource utilization.
These libraries equip developers with the necessary libraries, tools, and evaluation capabilities to enhance their development experience, simplify contract deployment, and optimize the efficiency of Cardano smart contracts.
5- Suite of example smart contracts and customizable minting policies: These examples, designed to inspire and empower developers, serve as invaluable references, providing developers with a solid foundation and inspiration to create their own smart contracts.
Moreover, the suite includes comprehensive testing files and a user-friendly CLI interface, enabling developers to easily execute PAB Simulator, Trace Emulator, and Plutus-Simple-Model. These tools facilitate thorough testing and interactive experimentation in simulated newtwork, ensuring the reliability and effectiveness of the contracts.
With these example contracts and customizable minting policies, developers have the resources they need to explore and experiment with different contract functionalities.
6- Automatization of building production image: To facilitate the deployment of the production environment, we offer a set of actions and scripts that automate the process. These actions and scripts enable the generation of a production-ready image that is portable and can be easily uploaded to Docker Hub.
With every new release on GitHub, the automation scripts automatically build and upload the image to Docker Hub. This ensures that the latest version is readily available for deployment.
The generated image is designed to be easily deployable on hosting services like Demeter. You can effortlessly mount the image on the hosting service, allowing for seamless deployment and scaling of your application.
With these actions and scripts, developers can efficiently generate a production environment, create a portable image, automate the release process, and deploy their applications on hosting services with ease.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Our proposed solution directly addresses several aims outlined in the challenge:
- Developer accessibility: We provide an all-in-one repository with tools, configurations, and documentation that streamline the development process to onboard on the Cardano smart contracts ecosystem.
- Developer productivity: By automating the setup and integration of essential tools, developers can focus more on building dApps and smart contracts rather than dealing with individual installations and configurations.
- Knowledge base & Documentation: The Developer Studio repository includes comprehensive documentation, tutorials, and links to official pages and documentation. This ensures that developers have easy access to essential information and references, helping them overcome barriers and learn how to build on Cardano more effectively.
- Samples, recipes, and templates: We offer a suite of example smart contracts, customizable minting policies, and Haskell libraries. These examples serve as invaluable references and provide developers with a solid foundation to create their own smart contracts. The included libraries and evaluation capabilities enable developers to optimize their code and ensure optimal resource utilization.
- Support structures: Our solution provides a CLI toolkit that allows developers to manage and utilize the tools within the Developer Studio repository. The toolkit includes interactive menus for various tasks, such as querying the Cardano Node, creating transactions, managing wallets, and more. It offers a user-friendly interface that simplifies the development process and provides support throughout.
By providing these tools and resources, our project brings significant value to the Cardano ecosystem:
- Increased developer engagement: Our solution aims to attract developers from outside the current Cardano community. By offering a streamlined development environment, comprehensive documentation, and user-friendly interfaces, we make it easier for developers to get involved and build on Cardano. This can lead to an influx of developers joining the Cardano ecosystem and contributing to its growth.
- Strengthened developer community: The Developer Studio repository, along with its supporting documentation and resources, fosters collaboration and knowledge sharing among developers. It creates a platform for developers to connect, exchange ideas, and collaborate on projects. This helps build a strong community of developers who can support each other and drive innovation within the Cardano ecosystem.
- Increased open-source projects throughput: Our project encourages and facilitates open-source development on Cardano. By providing a comprehensive resource repository and example contracts, we empower developers to create and contribute to open-source projects. This can lead to an increase in the number of open-source projects on Cardano, aligning with Cardano's strategic goals.
- Improved developer experience: Our solution aims to make it easier for developers to build on Cardano by providing streamlined workflows, automation, and user-friendly interfaces. This improved developer experience reduces barriers, increases productivity, and enhances overall satisfaction. It incentivizes developers to continue building on Cardano and encourages them to explore the full potential of the platform.
While it is challenging to quantify the exact impact our project will have, we anticipate the following outcomes within a reasonable timeframe:
- Increase in the number of developers actively building on Cardano, measured by developer engagement in the community, participation in hackathons, and project proposals in Project Catalyst.
- Growth in the number of repositories on GitHub using the Developer Studio tools and resources, indicating adoption and utilization by developers.
- Positive feedback and testimonials from developers who have benefited from the streamlined development process, documentation, and example contracts.
- Expansion of the Cardano developer community with a diverse range of developers joining from outside the existing ecosystem.
- Increase in the number of open source projects on Cardano, measured by the number of new projects initiated, forks, clones, and community involvement in the projects.
Overall, our project aims to contribute to the evolution of the Cardano developer ecosystem by providing essential tools, resources, and support structures that enhance developer productivity, knowledge sharing, and collaboration. This, in turn, can attract more developers, increase the number of open source projects, and strengthen the overall Cardano ecosystem.
How do you intend to measure the success of your project?
To measure the success of our project, we will utilize a combination of quantitative and qualitative metrics that reflect the benefits our solution brings to the Cardano ecosystem. Here are some metrics we will consider:
- Number of active developers: We will track the number of developers actively utilizing the Developer Studio repository, engaging in the community, participating in hackathons, and submitting project proposals in Project Catalyst. An increase in the number of active developers indicates the success of our solution in attracting and retaining developers in the Cardano ecosystem.
- GitHub engagement: We will monitor metrics such as the number of GitHub forks, clones, and traffic for the Developer Studio repository and other repositories utilizing our tools and resources. Increased engagement on GitHub demonstrates the adoption and utilization of our solution by developers.
- Community involvement: We will assess the level of community involvement through various channels such as Discord, Telegram, Cardano Stack Exchange, YouTube and Twitter. This includes monitoring the growth of community members, engagement in discussions and knowledge sharing, and positive feedback or testimonials from users. A thriving and active developer community indicates the success of our project in fostering collaboration and support structures.
- Number of open source projects: We will track the number of new open source projects initiated on Cardano, particularly those that utilize the tools, resources, and example contracts provided by the Developer Studio repository. This metric reflects the impact of our project in encouraging open source development and contributing to the growth of the Cardano ecosystem.
- User satisfaction: We will gather qualitative feedback from developers who have utilized our solution. This feedback can be collected through surveys, interviews, or community forums. By understanding their experiences, challenges, and satisfaction levels, we can assess the effectiveness of our project in improving the developer experience and productivity on Cardano.
The measures mentioned focus on tangible indicators of adoption, engagement, and growth within the Cardano developer community. These metrics can be tracked and assessed based on available data, user feedback, and community interaction.
In the short term, our project will enhance developer productivity by providing streamlined workflows and tools. This will result in more efficient development processes, faster iterations, and reduced barriers for developers entering the Cardano ecosystem. The availability of comprehensive documentation and example contracts will further accelerate dApp development and experimentation.
In the long term, the benefits of our project will contribute to the overall growth and productivity of Cardano. The increased number of active developers, open source projects, and community involvement will foster innovation, knowledge sharing, and collaboration. This will lead to a broader range of applications and use cases built on Cardano, attracting more developers, investors, and users to the ecosystem. Ultimately, the project will help position Cardano as a leading platform for decentralized applications and contribute to its long-term success.
Please describe your plans to share the outputs and results of your project?
- GitHub Repository: We will create a dedicated GitHub repository to share all the code, Dockerfiles, documentation, and resources developed as part of the project. This repository will serve as a centralized hub where developers can access and contribute to the project's outputs.
- Public Documentation: We will create and maintain detailed documentation in ReadMe files on the repository that explains the usage, configurations, and best practices related to the tools and resources provided in the Developer Studio repository.
- Community Engagement: We will actively engage with the Cardano community through channels such as Discord, Telegram, and Cardano Stack Exchange to share updates, gather feedback, and address any questions or concerns. This will ensure that the project's outputs are widely communicated and understood within the community.
- Project Catalyst: We will submit regular updates and progress reports to Project Catalyst, sharing the milestones achieved, impact metrics, and future plans.
- Developer Outreach: We will actively promote and showcase the project's outputs to developers outside the current Cardano community. This includes reaching out to relevant developer communities, participating in industry conferences and events, and leveraging social media platforms to create awareness about the benefits and opportunities provided by Cardano and our solution.
- Research and Development: The results generated from the project will serve as valuable inputs for further research and development activities. We will analyze user feedback, metrics, and community engagement to identify areas of improvement and potential enhancements. This iterative process will drive continuous improvement and inform future development efforts within the Cardano ecosystem.