Version 0.9.0
Search
⌃K
Links

4 Building Block Design Principles

4.1 Citizen-Centric

  • Right to be forgotten: everything must be deletable
  • User-centered design
The best tools evolve from empathizing, understanding and designing for the needs of end-users. Accordingly, we’ve identified a series of use cases and user journeys here: InfoMed - RFIMPL_Use Case Journeys.docx
Each use case is composed of a collection of modules, or building blocks. As you can see, a relatively small set of these building blocks can be readily applied to a wide variety of applications in low-resource settings.

4.2 Open

4.3 Sustainable

  • Stewardship is critical, see https://publiccode.net/codebase-stewardship/
  • Continuous funding for maintenance, development and evolution
  • Attractive to ICT industry and individual developers in deployment environment (incentives must be aligned)
  • Lower cost than commercial solutions due to shared development costs
  • Uses microservices-based architecture instead of monolithic.
    • This increases interoperability, development and deployment speed and reliability.
    • From Wikipedia: a variant of the service-oriented architecture (SOA) structural style – arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight.

4.4 Secure

  • Blocks are audited and certified before being made available
  • Development processes and standards enforce quality and security
  • Different certification levels reflect level of standards-compliance
  • Regular security scanning and auditing
  • Public ratings and reviews
  • Comprehensive logging and exception handling

4.5 Accessible

  • Meets users where they are: web, mobile, SMS and/or voice. UI supports accessibility technologies, e.g. screen readers.
  • SSO allows for signing in once for multiple services
  • Shared ownership of code
  • Deployment and development processes and standards are open to contributors
  • Community-driven development tools for documentation and support
  • Blueprints, templates and documentation

4.6 Flexible

  • Blocks can be reused in multiple contexts
  • Each block is autonomous
    • Blocks are interoperable
    • Easy to set up
  • Standardized configuration and communications protocols connecting blocks
  • Blocks can be provided as a service (ICT opportunity)

4.7 Robust

  • Operates in low-resource environments:
    • Occasional power
    • Low bandwidth
    • Low-reliability connectivity
  • Easily scalable for high availability and reliability
  • API-only based decoupling
  • Asynchronous communications pattern decoupled through rooms is ideal
  • Eventual consistency for data
Copyright © 2022