Enhancing Developer Experience on Corda 5: Empowering Efficient & Productive CorDapp Development
August 08, 2023
By: Ido Katz, Product Manager – Developer Experience at R3
The next generation of Corda represents a new era for R3 and its flagship distributed application platform Corda. R3’s Developer Experience (DevEx) team understands the importance of providing the best journey for CorDapp developers—a productive and efficient process including designing, coding, and testing. In this blog post, we will share what the DevEx team learned from Corda 4 user and customer feedback and give insights on team objectives and key deliverables.
Developing on Corda 4—Lessons Learnt
Product feedback is essential to product development to meet your user’s and customer’s needs. At R3, we have built a Corda 5 developer journey based on lessons learnt from our developer community, clients, and internal application development teams. Here are the main insights from Corda 4 developers:
- Faster unit testing modification and automation capabilities
- Easier and faster build process for bootstrapping local network with every change of code
- Lower computing resources for flow testing on the local network
- Higher compatibility for testing mid-flows (tests must start by issuing a new state)
Corda 5 is significantly different (and better) from Corda 4. Therefore, based on clients’ feedback and experience developing on Corda 4, R3’s DevEx team is building new set of tools and feature to improve CorDapp development process and environment.
R3’s DevEx—North Star
R3’s DevEx team is building a Corda 5 Developer Journey with a focus on three main pillars: Productivity, Ease-of-use, and Quality.
- Productivity – Simplified Development process: Corda simplifies the development process with its Java-based API, java and Kotlin smart contract languages support, and CorDapp development training materials. We reduce the learning curve and enables developers to write secure and efficient code. Corda’s comprehensive documentation and tutorials facilitate quick onboarding, ensuring developers can easily start building DLT solutions from day one.
- User Experience – Extensive Tooling Support: Corda provides various development tools, including Corda Standard Development Environment (CSDE), Gradle plugins, command-line interfaces, and debugging utilities. These tools streamline the development process and offer developers a seamless experience while working on Corda-based projects.
- Quality – Local CorDapp Testing : Corda provides a robust testing framework that enables developers to write comprehensive unit, integration, and end-to-end (E2E) tests. This ensures reliability and resilience of developed CorDapps, reducing potential bugs and enhancing the overall quality of the codebase.
- Productivity – Faster Release Cycles: Corda’s developer tooling and capabilities are being designed in faster timeframes than Corda Core Platform/APIs. Therefore, the DevEx team is publishing its tools and features in multiple release iterations (beta/ GA), with some content decoupled from the main releases (e.g., v5.0, v5.1, v5.2).
Corda 5—what’s ready and what’s still in the oven?
- CSDE provides a modular local development and deployment to easily build and test your CorDapp. R3’s CSDE comes in two supported templates – Java and Kotlin, Gradle plugins for local deployment automation, and Combined Worker to emulate/mock Corda 5 microservices management.
- To be improved: Combined Worker is slower than the real operational network. DevEx team is redesigning a new Combined Worker with improved throughput and higher architectural resembles to operative network. The new CSDE will be released with v5.1
- Contracts Testing: A comprehensive suite of test APIs which implements the UTXO ledger, providing the ability to construct a transaction and assert that it verifies, or fails for a specific reason.
- Release date: The Contracts Testing will be available for beta on GitHub by September 2023
- Flows Testing: The ‘Driver’ is a local, in-memory version of Corda that can be launched using JUnit 5. The Flow Testing Tool allows developers to upload their CPBs (Corda Package Bundles) and debug their flows within Corda’s flow framework. The driver contains Corda functionality from the main codebase without needing either Kafka or REST.
- Release date: The Driver has passed a PoC phase and is currently under development. A beta will be available in November 2023
- CorDapp E2E Testing: Using the CSDE, Gradle plugins, and Rest API Swagger, a CorDapp developer can write E2E tests for their CorDapps.
Summary
Corda’s developer-friendly features, such as simplified development process, robust testing framework, modular architecture, seamless integration capabilities, collaborative eco-system, and extensive tooling support, make it an ideal platform for building private distributed ledger applications. By prioritizing developer experience, R3 empowers developers to focus on creating innovative solutions without unnecessary complexities, ultimately accelerating the adoption of blockchain technology across industries.
We are very excited about the general availability of Next-Gen Corda. It is a work in progress and DevEx team will continue to build tools and features to support our developer community.
To make Corda even better, we need your feedback to help us identify and resolve issues. Corda is freely available. So why not give it a try?
- Visit our new Next-Gen Corda doc site
- Download Next-Gen Corda (including required prerequisites)
- Discover our new CSDE
- Learn more with our new “Apples Tutorial”
- Share comments/feedback or ask our experts any questions on our Slack channel or Dev Forum