Introduction
In addition to the official Go and Java SDKs, the Cadence community has developed client libraries for other popular programming languages. These SDKs are maintained by community members and provide varying levels of feature support.Available Community SDKs
Python SDK
cadence-python
Community-maintained Python client for Cadence workflows
Overview
The Python SDK provides a Pythonic interface for building Cadence workflows and activities. It’s suitable for prototyping, internal tools, and non-critical workflows.Installation
Quick Example
Features
Supported Features
Supported Features
- Basic workflow and activity definitions
- Workflow execution and completion
- Signal and query support
- Child workflows
- Timer operations
- Basic error handling
Limitations
Limitations
- Limited production testing
- Fewer built-in retry mechanisms
- Less comprehensive documentation
- May lag behind official SDK features
- Community support only
Use Cases
- Internal automation tools
- Data processing pipelines
- Prototyping and experimentation
- Integration with Python data science libraries
- Lightweight orchestration tasks
Ruby SDK
cadence-ruby
Community-maintained Ruby client developed by Coinbase
Overview
The Ruby SDK was developed by Coinbase for their internal use. It provides a Ruby-native interface for Cadence workflows and has been battle-tested in Coinbase’s production environment.Installation
Add to your Gemfile:Gemfile
Quick Example
Features
Supported Features
Supported Features
- Workflow and activity execution
- Signals and queries
- Child workflows
- Activity retries with exponential backoff
- Rails integration helpers
- Production-tested at Coinbase
Production Usage
Production Usage
- Actively used at Coinbase
- Battle-tested in financial services
- Good documentation and examples
- Active maintenance (though not official)
Use Cases
- Ruby on Rails applications
- Background job orchestration
- Complex business process automation
- Financial transaction workflows
- Integration with existing Ruby services
Other Community Projects
iWF Framework
iWF
Domain-specific language (DSL) framework built on top of Cadence
- Simplified workflow definition syntax
- Multi-language support through HTTP API
- State machine-based workflow modeling
- Built-in best practices and patterns
- Reduced boilerplate code
Example
TypeScript/JavaScript
While there’s no official TypeScript/JavaScript SDK for Cadence, developers looking for TypeScript support may consider:- Temporal
- REST API
Temporal (a fork of Cadence) has excellent TypeScript support:Note: Temporal and Cadence are not wire-compatible.
Comparing Community vs Official SDKs
- Official SDKs (Go, Java)
- Community SDKs
Advantages:
- Full feature support
- Regular updates and bug fixes
- Comprehensive documentation
- Official support channels
- Production-ready guarantees
- Performance optimizations
- Extensive testing
- Production applications
- Mission-critical workflows
- Long-term maintenance
- Enterprise deployments
Contributing to Community SDKs
How to Contribute
Building a New SDK
Interested in creating an SDK for a new language?Prerequisites
Prerequisites
- Deep understanding of Cadence concepts
- Familiarity with the target language
- Understanding of RPC frameworks (Thrift/gRPC)
- Knowledge of async/concurrent programming
- Access to Cadence IDL definitions
Core Components to Implement
Core Components to Implement
- Service Client: Connection to Cadence server
- Workflow Runtime: Deterministic execution engine
- Activity Runtime: Non-deterministic task execution
- Worker: Task polling and execution
- State Management: Workflow state persistence
- Retry Logic: Configurable retry policies
- Testing Framework: Unit testing support
Best Practices
Best Practices
- Study official SDK implementations
- Start with core features (workflow, activity, worker)
- Ensure deterministic execution
- Implement comprehensive tests
- Document all public APIs
- Provide working examples
- Engage with Cadence community
Community Resources
Slack
Join #cadence-users on CNCF Slack for discussions
GitHub Discussions
Ask questions and share ideas
Stack Overflow
Find answers to common questions
Contributing Guide
Learn how to contribute to Cadence
Migration Paths
From Community SDK to Official SDK
If you start with a community SDK and later need to migrate to an official SDK:Next Steps
Go SDK
Explore the official Go client SDK
Java SDK
Learn about the official Java client SDK
Core Concepts
Understand Cadence fundamentals
CLI
Manage workflows with Cadence CLI