Project Plan - Aries VCX Next-gen Mobile Wrapper (UniFFI)

Project Plan - Aries VCX Next-gen Mobile Wrapper (UniFFI)

Abstract

Aries-VCX is a collection of Rust crates which provide APIs for stepping through Hyperledger Aries Protocols. Previously, Aries-vcx has provided it's functionality to mobile (android and ios) consumers via a wrapper layer known as libvcx. Libvcx wraps over aries_vcx functionality and creates C-callable FFI bindings, and provides Java and Objective-C bindings for calling those bindings from mobile ecosystems. Overtime, manually maintain libvcx has become quite a chore, and does not leverage new FFI tech which is now available. The goal of this mentorship project, is to create new mobile bindings using the UniFFI tool, which from initial prototyping has shown a lot promise.

Mentor and Mentees

Mentors

Patrik Stas, Discord: Patrik Stas#7722, Absa Group
Bogdan Mircea, Discord: bobozaur#5997, Absa Group
Miroslav Kovar, Discord: mirgee#3763, Absa Group
George Mulhearn, Discord: gmulhearn#0356

Mentee

Swapnil Tripathi, Discord: swaptr, Github: https://github.com/swaptr

Deliverables

Create Android binary + bindings compilation scripts for the existing UniFFI prototype in aries-vcx: https://github.com/hyperledger/aries-vcx/tree/main/uniffi_aries_vcx

Bootstrap sample android demo application, which consumes the existing prototype's bindings and binaries
Create bindings for all Connection  APIs and update sample app accordingly
Create bindings for all Holder  APIs and update sample app accordingly
Update existing prototype to use newer aries_vcx functionality (switch from vdrtools profile to modular_libs profile)

Bonus Deliverables

Create CI for compiling and packaging an Android SDK deliverable with aries_vcx and mediator client functionality

Consider async API optimizations (how can be improve on the existing run_blocking  approach.. UniFFI may have support for this later in the timeline!)
Create CI for compiling and packaging an iOS SDK deliverable with aries_vcx and mediator client functionality

Milestones

Eval 1:

Comfortable with aries-vcx and UniFFI tool
Script for building uniffi_aries_vcx android consumables developed
Sample app bootstrapped and consuming/demonstrating uniffi_aries_vcx bindings

Eval 2:

Connection APIs wrapped in UniFFI
Sample app updated to demonstrate Connection APIs

Eval 3:

Holder APIs wrapped in UniFFI

Eval 4:

Migrate to modular libs stack (credx, indy-vdr)
Sample app updated to support Holder flow (receive a credential)

Timeline

Dates

Tasks/Plan

Status

Dates

Tasks/Plan

Status

Jun 12 - Jun 26

Mentee intro with the mentor.

On-boarding:

understand aries vcx project/s

Get aries-vcx integration tests working to confirm development environment
plan out the scope and tasks for the UniFFI project
complete UniFFI tutorials
build rust sample project for Android architectures

Jun 27 - Jul 10

Manually build the existing uniffi_aries_vcx project for android
Create a convenience script for compiling uniffi_aries_vcx project for android
Expand the script to generate UniFFI bindings for uniffi_aries_vcx

Jul 11 - Jul 24

Bootstrap android sample app which consumes bindings generated by script mentioned above - demonstrate app to mentors (e.g. a simple button that calls into an existing uniffi method).

consider how to best automate/optimize personal development flow from creating new feature to testing in app
update uniffi_aries_vcx to use modular-libs instead of vdrtools
Not an appropriate time for this

Jul 25 - Aug 7 (Jul 28 eval)

Complete Connection  API uniffi bindings
Update sample app to create profile

Aug 8 - Aug 21

Update sample app to scan invitation
 

Aug 22 - Sep 4 (Sept 1 eval)

Update sample app to send request

Sep 5 - Sep 18

Update sample app to wait for response and complete connection protocol

Sep 19 - Oct 2

Work on Holder API bindings

Oct 3 - Oct 16 (Oct 13 eval)

complete Holder API bindings

start/plan work on sample app holder flow (receive a cred)

Oct 16 - Oct 30

Migrate to modular libs stack (credx, indy-vdr) and ensure successful compilation still

continue work on sample app holder flow (receive a cred)

Oct 31 - Nov 6

complete sample app holder flow
Breather and any final touches

 

Nov 7 - Nov 30 (Nov 30 eval)

Consider bonus deliverables mentioned above