Please describe your proposed solution.
Our goal is to foster the adoption of the Cardano ecosystem by facilitating interaction between native Android and Apple application developers and the Cardano Blockchain. Currently, Cardano offers JavaScript and TypeScript tools that are primarily useful for developers using React-Native stacks. However, these tools have limited applicability for "native" application development using Swift, Kotlin, or Java.
To bridge this gap and empower all types of applications to engage with the Cardano ecosystem, we propose the creation of Software Development Kits (SDKs) in Swift and Kotlin. These SDKs will provide Cardano Wallet functionalities to mobile and desktop platforms within the Apple and Android ecosystems, respectively. This will enable seamless integration of Cardano Blockchain capabilities into a wide range of applications developed using Swift, Kotlin, or Java.
Concrete Artifacts/Deliverables:
Swift:
- Iterative Delivery of Functional Swift SDK for Cardano
- Swift SDK Open Source repository
- Swift SDK distribution over Swift Packages and indexed through https://swiftpackageindex.com/
- Documentation through Swift DoC
- Linux support (best effort)
- Continuous Integration and testing through Github Actions Free tier
Kotlin
- Iterative Delivery of Functional Kotlin SDK for Cardano
- Kotlin SDK Open Source repository
- Kotlin SDK distribution over JitPack
- Documentation
- Kotlin Multiplatform support to enable Desktop / Web / Mobile (best effort)
- Continuous Integration and testing through Github Actions Free tier
Demo Application for Android (Jetpack Compose) and Apple Platforms (Swift UI)
A Software Development Kit (SDK) is a set of tools, libraries, documentation, and sample code that software developers use to create applications for a specific platform, framework, or programming language. It provides a standardized way for developers to build software applications by offering pre-built components and resources that can be easily integrated into their projects.
SDKs are typically created and provided by platform or framework vendors to enable developers to leverage the functionalities and capabilities of their systems. They serve as a bridge between developers and the underlying platform, abstracting complex operations and providing higher-level interfaces for developers to work with.
An SDK usually includes the following components:
- Libraries: These are pre-compiled code modules that contain functions, classes, and methods that developers can use in their applications. Libraries provide ready-made implementations of common tasks, such as handling network communication, file operations, user interface components, and more.
- Documentation: The SDK includes comprehensive documentation that describes the functionalities, features, and usage guidelines for the included libraries and APIs (Application Programming Interfaces). The documentation typically includes tutorials, code samples, reference manuals, and troubleshooting guides to assist developers in understanding and utilizing the SDK effectively.
- Tools: SDKs often provide specialized tools to aid in the development process. These tools may include code editors, debuggers, emulators or simulators, profiling utilities, and building systems, which help developers write, test, and deploy their applications more efficiently.
APIs: APIs are interfaces that define how different software components can interact with each other. SDKs expose APIs that allow developers to access and utilize the platform's functionalities, services, and resources. APIs provide a way for developers to integrate their applications with various system features, such as accessing hardware sensors, utilizing cloud services, interacting with databases, and more.
SDKs can be platform-specific, such as Android SDK for Android app development or iOS SDK for iOS app development. They can also be language-specific, like the Java SDK for Java development or the .NET SDK for .NET framework-based development. Additionally, there are SDKs for frameworks and services like web development frameworks (e.g., React, Angular) or cloud service providers (e.g., AWS, Google Cloud).
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Lower Entry barriers to the ecosystem:
Having both Cardano Wallet SDKs for Swift and Kotlin will simplify and accelerate the software development process by providing developers with the necessary tools, libraries, and resources tailored to the Android and Apple platforms and native programming languages. They will enable developers to leverage existing functionality, reduce development time, and build applications that seamlessly integrate with Cardano.
Key enabler factors for Engineering Management and Decision Makers:
We believe that this will make Cardano more attractive than its competitors when it comes to integrating a Blockchain from Android, iOS, iPad, and MacOS. Few blockchain projects provide native support for mobile applications. We believe that this will work as an adoption driver for Cardano.
Decentralization of End-User Cardano ecosystem:
Currently, our ecosystem has a handful of wallets to choose from. We believe in decentralization as the key factor of the democratization of Blockchain technology and the ultimate enabler to get global and massive adoption.
Having a Cardano SDK that supports the biggest mobile platforms natively will increase our outreach immensely, allowing builders from all across the globe to integrate into our Blockchain and provide tailor-made, culturally fit experiences for their users.
The Swift and Kotlin SDKs will allow many non-custodial wallet projects to support and bring Cardano to their users and therefore integrate those users into Cardano.
How do you intend to measure the success of your project?
Since this is an Open Source project that will be hosted on GitHub. We will use metrics available in GitHub Insights to track the development activity and other metrics such as:
- Issue Tracking: GitHub has a built-in issue-tracking system. You can access the issues by clicking on the "Issues" tab on the repository page. GitHub provides filters and labels to categorize and track issues. By analyzing the number of open and closed issues, as well as the response time for issue resolution, you can assess the project's issue-tracking performance
- Community Engagement: GitHub offers various features to foster community engagement. These include discussions, pull requests, and code reviews. You can track community engagement by monitoring the activity and participation in these features. Additionally, you can integrate external communication channels like mailing lists or forums and link to them in your GitHub repository to capture community engagement metrics beyond the platform
- Commits/Code Changes: GitHub displays the commit history for a repository. You can navigate to the repository's main page and click on the "Commits" tab to view the commit history. The frequency and volume of commits can give you an idea of the project's development activity.
- User Feedback/Satisfaction: GitHub provides a platform for users to submit issues, comments, or feedback. Monitoring the issue comments, pull request discussions, or external feedback linked in your repository can help capture user feedback and satisfaction.
Please describe your plans to share the outputs and results of your project?
We intend to share the progress in several ways.
Developers and code-savvy folks: Our Code will be open source from day one. Those who like to get involved in the project will be able to track our progress, even test and submit issues through GitHub.
Cardano Community: we will aim for bi-weekly or monthly reports through the Cardano Forums.
General Public / Crypto Enthusiasts: We intend to share briefings of the community reports on social media like Twitter and Threads. Also, we plan to launch Twitter Space to celebrate the kick-off of the project.