Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evolving: v1.0.0 milestone scope #117

Open
peterbroadhurst opened this issue Jul 6, 2021 · 0 comments
Open

Evolving: v1.0.0 milestone scope #117

peterbroadhurst opened this issue Jul 6, 2021 · 0 comments
Assignees

Comments

@peterbroadhurst
Copy link
Contributor

peterbroadhurst commented Jul 6, 2021

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant