github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/docs/developers/code_overview.md (about) 1 --- 2 layout: default 3 title: FireFly Code Overview 4 parent: Developers 5 nav_order: 1 6 --- 7 8 # Firefly Code Overview 9 {: .no_toc } 10 11 ## Table of contents 12 {: .no_toc .text-delta } 13 14 1. TOC 15 {:toc} 16 17 --- 18 19 ## Developer Intro 20 21 FireFly is a second generation implementation re-engineered from the ground up to improve developer experience, runtime performance, and extensibility. 22 23 This means a simplified REST/WebSocket programming model for app development, and a wider range of infrastructure options for deployment. 24 25 It also means a focus on an architecture and code structure for a vibrant open source community. 26 27 A few highlights: 28 29 - Golang codebase 30 - Strong coding standards, including unit test coverage, translation support, logging and more 31 - Fast starting, low memory footprint, multi-threaded runtime 32 - OpenAPI 3.0 API specification (Swagger) 33 - Generated from the API router code, to avoid divergence with the implementation 34 - Active/active HA architecture for the core runtime 35 - Deferring to the core database for state high availability 36 - Exploiting leader election where required 37 - Fully pluggable architecture 38 - Everything from Database through to Blockchain, and Compute 39 - Golang plugin infrastructure to decouple the core code from the implementation 40 - Remote Agent model to decouple code languages, and HA designs 41 - Updated API resource model 42 - `Asset`, `Data`, `Message`, `Event`, `Topic`, `Transaction` 43 - Added flexibility, with simplified the developer experience: 44 - Versioning of data definitions 45 - Introducing a first class `Context` construct link related events into a single sequence 46 - Allow many pieces of data to be attached to a single message, and be automatically re-assembled on arrival 47 - Clearer separation of concerns between the FireFly DB and the Application DB 48 - Better search, filter and query support 49 50 ## Directories 51 52 - [internal](https://github.com/hyperledger-labs/firefly/tree/main/internal): The core Golang implementation code 53 - [pkg](https://github.com/hyperledger-labs/firefly/tree/main/pkg): Interfaces intended for external project use 54 - [cmd](https://github.com/hyperledger-labs/firefly/tree/main/cmd): The command line entry point 55 - [solidity_firefly](https://github.com/hyperledger-labs/firefly/tree/main/solidity_firefly): Ethereum/Solidity smart contract code