4. Use open standards and solutions

[TODO: Add/revise introductory text]

Guidelines:

4.1 Leverage open standards and embrace leading practices, including the use of open source software where appropriate

Build technology that uses open standards to ensure your system works and communicates with other products or systems, and can easily be upgraded and expanded.

Adopting and using open standards means you can:

  • move between different technologies when you need to, avoiding vendor lock-in
  • quickly and easily change your service when you need to
  • increase compatibility with all stakeholders
  • open up the range of companies you can purchase from as more of them are likely to use the same standard as you
  • access a wider range of both open source and proprietary software vendors

Our choices for hosting infrastructure, databases, software frameworks, programming languages and the rest of the technology stack should seek to avoid vendor lock-in and match what successful modern consumer and enterprise software companies would choose today. In particular, digital services teams should consider using open source software, cloud-based, and commodity solutions across the technology stack, because of their widespread adoption and support by successful consumer and enterprise technology companies in the private sector.

Open source software (OSS) tends to use and help define open standards and publicly available specifications. OSS products are, by their nature, publicly available specifications, and the availability of their source code promotes open, democratic debate around their specifications, making them both more robust and interoperable.

Using open source software means you can benefit from:

  • solving common problems with readily available open source technology
  • more time and resource for customised solutions to solve the rare or unique problems
  • lower implementation and running costs

Checklist

[TODO: Add/revise checklist items]

  • Use open standards and open source software at every layer of the technology stack
  • Factor in the use of open Standards and open source software when calculating total cost of ownership of a solutions including exit or transition costs
  • Avoiding lock-in to any proprietary solutions where open source software and/or open standards are available
  • Ensure that software can be deployed on a variety of commodity hardware types

Government of Canada Cloud Adoption Strategy:

Implementation guides

Reusable solutions

Similar resources

4.2 Design for services and platforms that are seamless for Canadians to use no matter what device or channel they are using

In order to limit costs, avoid duplication of effort and provide a consistent client experience when using various services, the reuse and adaptation of existing technological solutions is encouraged. If the development of new solutions is required, consider the ability of others to reuse and adapt your work as this will provide additional value on an organizational level.

Using common, proven government solutions, approaches, and platforms will help the government:

  • meet the needs of your users by building with proven solutions
  • make users' experience of government more consistent, which generates trust
  • save time and money by reusing things that are already available

Interoperability is a characteristic of a product or system, whose interfaces are completely understood, to work with other products or systems, present or future, in either implementation or access, without any restrictions. Interoperability should be ensured, via the use of open standards.

Application Program Interfaces (APIs) are a means by which business functionality is exposed digitally. They are building blocks that are critical to the successful delivery of government online digital services and expanding service delivery to third party providers. They can also enable greater interoperability between services, optimized experiences across devices and can even lead to innovative new services by enabling third party products to work seamlessly with Government of Canada systems.

Checklist

  • Ensure content and functionality is optimized for a wide range of devices, including mobile devices and voice assistants, enabling users to be successful with their device of choice
  • Build services that are API-centric services, which execute most, if not all, functionality through API calls (e.g., connecting frontend to backend through an API)
  • Plan out API access from the beginning, designing services to be able to safely and securely expose functionality to other systems and the public.
  • Design APIs to be compete but also minimal, ensuring the expected functionality is provided but with as few public members per class and as few classes as possible. This makes it easier to understand, remember, debug and change the API.
  • Design APIs to have clear and simple semantics to make common tasks easy. Rare tasks should still be possible but not the focus. Avoid being overly general, optimizing specific use cases.
  • Design APIs to be intuitive so that a semi-experienced user can be successful with minimal assistance from the documentation and programmers can easily understand code that uses the API.
  • Design APIs to be easy to memorize by implementing a consistent and precise naming convention. Use plain language and recognizable patterns and concepts, avoiding abbreviations where possible.

Implementation guides

Reusable solutions

Similar resources