firefly
firefly copied to clipboard
Evolving: v1.0.0 milestone scope
WORK IN PROGRESS
... output of this piece of work will include organizing and tagging issues in Git into a milestone.
Line item list
Below is a list of line items that are known requirements, and an initial mapping on which would be required to consider a version of FireFly to be a v1.0.0 release.
The high level requirements of what a v1.0.0 release is would include are:
- Stable API proven to solve a set of real-world problems - on-chain/off-chain coordination is the primary candidate here
- Proven on top of at least two blockchain technologies - Ethereum and Fabric are the primary candidates
- Sufficient non-functional testing of throughput and resiliency, including in fail-over scenarios
- Enough reference plugins for non-core technologies to allow proof of viability for production deployment
There are items below that are under active development, that are not considered a pre-req for meeting the requirements of a v1.0.0 release. Depending on readiness those items might obviously might be available functions at the point the milestone criteria are met.
Category: Line item | v1.0.0 Prereq |
Done July 6th 2021 |
Ref |
---|---|---|---|
On-chain/off-chain: Private send - pinned | ✓ | ✓ | |
On-chain/off-chain: Private send - unpinned | ✓ | ✓ | |
On-chain/off-chain: Broadcast - pinned | ✓ | ✓ | |
On-chain/off-chain: Broadcast - unpinned | |||
On-chain/off-chain: Request/Reply - pinned | ✓ | ✓ | |
On-chain/off-chain: Request/Reply - unpinned | ✓ | ✓ | |
On-chain/off-chain: Custom on-chain transactions with off-chain data | ✓ | ||
On-chain/off-chain: Fungible token transfer integration | |||
On-chain/off-chain: Non-fungible token transfer integration | |||
On-chain/off-chain: Anonymized transaction submission support | ✓ | ||
On-chain/off-chain: Blocking API option to await confirmation | |||
On-chain/off-chain: Large/BLOB attachment support | ✓ | ✓ | |
On-chain/off-chain: JSON Schema Validation (source & target) | ✓ | ✓ | |
On-chain/off-chain: Group management | ✓ | ||
Network admin: Organization identities - broadcast | ✓ | ✓ | |
Network admin: Nodes (owned by orgs) - broadcast | ✓ | ✓ | |
Network admin: Network registry plugin for admission of new members | ✓ | ||
Network admin: Network registry - File based | ✓ | ||
Network admin: Network registry - On-chain | |||
Multi-tenancy: Namespace segregation | ✓ | ✓ | |
Multi-tenancy: Parent/child orgs | ✓ | ✓ | |
Batching: Broadcast data - pinned | ✓ | ✓ | |
Batching: Private data - pinned | ✓ | ✓ | |
Batching: Private data - unpinned | |||
API: CRU(D) on local resources (delete on local-only resources) | ✓ | ✓ | |
API: Delete on network shared resources | |||
API: Filtering (database pluggable) | ✓ | ✓ | |
API: Data upload / JSON | ✓ | ✓ | # 34 |
API: Data upload / large BLOB (multiparty form upload) | ✓ | ✓ | |
API: Metrics | ✓ | ||
API: Database change events (ephemeral WebSockets only) | ✓ | ||
Off-chain logic integration (events): Long-lived (durable) app subscriptions | ✓ | ✓ | |
Off-chain logic integration (events): Ephemeral (non-durable) subscriptions | ✓ | ✓ | |
Off-chain logic integration (events): WebSockets | ✓ | ✓ | |
Off-chain logic integration (events): Webhooks | ✓ | ✓ | |
Off-chain logic integration (events): Low-code (NodeRED) | |||
Off-chain logic integration (events): Trusted compute (Hyperledger Avalon) | |||
Off-chain logic integration (events): MPC framework | |||
Off-chain logic integration (events): Message queuing (AMQP/MQTT) | |||
Custom blockchain transactions: TX submission API | ✓ | ||
Custom blockchain transactions: On-chain event subscription API | ✓ | ||
Custom blockchain transactions: Private transaction data support | |||
Multi-ledger support: Fabric channels | ✓ | ||
Tokens: Fungible token mint/transfer API | |||
Tokens: Non-fungible token mint/transfer API | |||
Tokens: Transaction history API (database cached) | |||
Tokens: Role/permission management API | |||
Ethereum: All-participant chain management (ethconnect) | ✓ | ✓ | |
Ethereum: Pinning contract implementation (ethconnect) | ✓ | ✓ | |
Ethereum: Pinning contract audit (ethconnect) | ✓ | ||
Ethereum: Reliable transaction submission (ethconnect) | ✓ | ✓ | |
Ethereum: Reliable event detection (ethconnect) | ✓ | ✓ | |
Ethereum: Private transaction data support (Tessera / ethconnect) | ✓ | ||
Ethereum: Plug-point for advanced key management (ethconnect) | ✓ | ✓ | |
Ethereum: Plug-point for anonymized signing (ethconnect) | ✓ | ✓ | |
Ethereum: Fungible token support - tested with ref implementation | |||
Ethereum: Non-fungible token support - tested with ref implementation | |||
Fabric: All-participant chain management (fabconnect) | ✓ | ||
Fabric: Pinning contract implementation (fabconnect) | ✓ | ||
Fabric: Pinning contract audit (fabconnect) | ✓ | ||
Fabric: Reliable transaction submission (fabconnect) | ✓ | ||
Fabric: Reliable event detection (fabconnect) | ✓ | ||
Fabric: Private transaction data support (fabconnect) | |||
Fabric: Plug-point for advanced key management (fabconnect) | ✓ | ||
Fabric: Plug-point for anonymized signing (fabconnect) | ✓ | ||
Fabric: Fungible token support - tested with ref implementation | |||
Fabric: Non-fungible token support - tested with ref implementation | |||
Ethereum: All-participant chain management (cordaconnect) | |||
Private Data Exchange: HTTPS + Mutual TLS | ✓ | ✓ | |
Private Data Exchange: Message Queuing (AMQP/MQTT) | |||
Public data: InterPlanetary File System (IPFS) | ✓ | ✓ | |
Web UI: Messages (table/timeline) | ✓ | ✓ | |
Web UI: Events (table/timeline) | ✓ | ||
Web UI: Data | ✓ | ✓ | |
Web UI: Subscriptions (inc. manage) | ✓ | ||
Web UI: Transactions | ✓ | ||
Web UI: Operations (inc. resubmit) | ✓ | ||
Web UI: Filtering | ✓ | ||
Web UI: Network map (orgs/nodes) | ✓ | ||
Web UI: Graphical timeline navigation | |||
State store: SQL common abstraction layer | ✓ | ✓ | |
State store: SQL / PostgreSQL | ✓ | ✓ | |
State store: SQL / SQLite (CGO version) | ✓ | ||
State store: SQL / SQLite (pure Go) | |||
State store: SQL / QL (pure Go) | ✓ | ✓ | |
State store: SQL / MySQL | |||
State store: SQL / Oracle | |||
State store: SQL / DB2 | |||
State store: SQL / migration tooling | ✓ | ✓ | #2 |
State store: NoSQL / common abstraction layer | |||
State store: NoSQL / CouchDB | |||
State store: NoSQL / MongoDB | |||
State store: Auto-delete / auto-archive of old data | |||
Active/active clustering: Config model | ✓ | ||
Active/active clustering: DB-backed leadership election | ✓ | ||
Kubernetes support: Reference helm chart | ✓ | ✓ | |
Kubernetes support: Pre-release test | ✓ | ||
Kubernetes support: Operator | |||
CLI: Dev environment creation - docker compose | ✓ | ✓ | |
CLI: Dev environment admin/status | ✓ | ✓ | |
CLI: Ethereum + IPFS + HTTPS Data Exchange support | ✓ | ✓ | |
CLI: Fabric + IPFS + HTTPS Data Exchange support | ✓ | ||
CICD: code coverage | ✓ | ✓ | |
CICD: unit test framework (initial 100% coverage) | ✓ | ✓ | |
CICD: unit test thresholds for contributors | ✓ | ||
CICD: e2e acceptance test framework | ✓ | ✓ | |
CICD: e2e acceptance test - Broadcast | ✓ | ✓ | |
CICD: e2e acceptance test - Private send | ✓ | ✓ | |
CICD: e2e acceptance test - Ethereum | ✓ | ✓ | |
CICD: e2e acceptance test - Fabric | |||
CICD: e2e acceptance test - HTTPS Data Exchange | ✓ | ✓ | |
CICD: e2e acceptance test - IPFS | ✓ | ✓ | |
Hardening: Ethereum / Throughput & latency measurement | ✓ | ||
Hardening: Ethereum / Bottleneck analysis and triage | ✓ | ||
Hardening: Ethereum / Multi-day soak testing | ✓ | ||
Hardening: Ethereum / HA fail-over testing - at least once in-order tx/event delivery | ✓ | ||
Hardening: Fabric / Throughput & latency measurement | ✓ | ||
Hardening: Fabric / Bottleneck analysis and triage | ✓ | ||
Hardening: Fabric / Multi-day soak testing | ✓ | ||
Hardening: Fabric / HA fail-over testing - at least once in-order tx/event delivery | ✓ | ||
Docs: Core concepts | ✓ | ✓ | |
Docs: Quick start | ✓ | ✓ | |
Docs: Reference | ✓ | ||
Docs: Open API 3.0 / auto-generation | ✓ | ✓ | |
Docs: Open API 3.0 / full descriptions of all types | ✓ | ||
Samples: Broadcast | ✓ | ✓ | |
Samples: Private send | ✓ | ✓ | |
Samples: Custom blockchain transactions | ✓ | ||
Samples: Tokens |