firefly icon indicating copy to clipboard operation
firefly copied to clipboard

Evolving: v1.0.0 milestone scope

Open peterbroadhurst opened this issue 3 years ago • 0 comments

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

peterbroadhurst avatar Jul 06 '21 17:07 peterbroadhurst