4 Building Block Design Principles
While the following principles are relevant to many technology deployments, when leveraging the GovStack approach it is important to keep these principles in mind during all phases of design, development, and deployment.
Design of systems should be rooted in the needs of the citizens/users of these platforms. A Citizen-centric technology will include the following attributes:
- User-centered design
- Right to be forgotten: everything must be deletable
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: GovStack Use Cases
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.
Where possible, GovStack advocates for the use of open technology, which can reduce cost and help avoid vendor lock-in. Open technology can be defined as:
- Based on open standards
- Based on Digital Development Principles, see https://digitalprinciples.org/ and https://digitalinvestmentprinciples.org/
- Built on open-source software where possible
- Cloud native where possible (Docker/Docker Compose/OCI containers)
Any Building Blocks should be developed in a manner which is sustainable and ensures that the technology will continue to be updated and maintained. Some core considerations for sustainability are:
- 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.
With any technology deployment, security is paramount. Detailed security requirements are defined in the GovStack Security Requirements. Beyond those standards, Building Blocks should have the following attributes:
- Building 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
It is vitally important that technology solutions be usable by all. Some characteristics of accessible design include:
- 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
GovStack is rooted in the concept that Building Blocks should be re-usable and configurable, such that they can support multiple use cases with minimal effort:
- Building Blocks can be reused in multiple contexts
- Each Building Block is autonomous
- Building Blocks are interoperable, adhering to shared standards
- Building Blocks should be easy to set up
- Standardized configuration and communications protocols should be used to connecting Building Blocks
- Building Blocks can be provided as a service (ICT opportunity)
Deployments of Building Blocks should follow these principles:
- Any client-facing functionality should operate 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