Skip to content
mikeskaife edited this page Mar 23, 2016 · 18 revisions

8. Make all new source code open and reusable, and publish it under appropriate licences (or provide a convincing explanation as to why this cannot be done for specific subsets of the source code).

Link to corresponding item in JIRA: https://jira.informed.com:8443/browse/FCOLOI-161

Questions

  • Describe how you are making new source code open and reusable?
  • What licences are you using to release code during beta?
  • Do you own the intellectual property?
  • Describe how a team in another department can reuse your code.
  • What code from other teams/services are you using?

Evidence

Service Manager able to:

  • explain how they are making new source code open and reusable.
  • show their code in an open internet source code repository.
  • explain what licences they are using to release code during beta.
  • confirm that they own the intellectual property.
  • explain how a team in another department can reuse their code.
  • explain what code from other teams/service they are using.

We have made extensive use of the Design Patterns Hackpad to ensure components of our service are implemented in line with agreed best practice across other government departments (e.g. address lookup, summary page, confirmation page). Where we are using design patterns for which there is currently no agreed best practice we have liaised closely with various members of the GDS design team to seek clarification (e.g. document eligibility checker).

Talk us through your plan for making all new source code open and reusable?

  • Code initially developed in private Informed Solutions GitHub repositories as new digital service had not been announced to the public
  • Code now hosted in Informed Solutions GitHub repositories which are being made publicly accessible (coding in the open)
  • Plan to migrate code into repositories owned by FCO as part of service transition handover to Kainos (snapshot, will lose commit history at that point)
  • GDS blog we referred to: https://gdstechnology.blog.gov.uk/2016/01/26/working-out-how-to-open-up-the-register-to-vote-code/

Security considerations:

  • configuration files containing sensitive data (usernames, passwords, etc.) are not committed into the public repository
  • we are using an NPM module called 'dotenv' which allows us to commit an obfuscated configuration file
  • a private file containing the actual data to be 'plugged in' to the config file is then given to developers locally and also resides on each web server for use by deployed services
  • the module makes use of environment variables to set values when the service is started
  • pull requests restricted by organization level permissions, will be replicated when moved to FCO repositories

Technologies and languages used within the service are open source including:

  • Node.js (open source web application framework written in JavaScript)
  • PostgreSQL (open source relational database provider)
  • Mocha (a Node.js unit testing framework)
  • Jenkins (used for continuous integration and deployment)

Do you own the intellectual property?

  • Yes the Foreign and Commonwealth Office owns all Intellectual Property associated with the new Legalisation service. Code is released under GNU General Public Licence or MIT License (both equivalent to Open Government Licence) into publicly accessible GitHub repository

Will I be able to reuse your code in another department?

Yes all code will be available for reuse:

  • Service has been designed to have a Service Oriented Architecture with microservices - isolated independent components which can be reused
  • Operating Sytem agnostic, code can be hosted in any environment (Linux/Windows/OSX)
  • API/microservice approach means third-party service components can be swapped in/out e.g. different payment provider or alternative underlying database technology

What code from other teams/services are you using?

  • some SmartPay code from existing payment pages used as basis for the Payment service on the new portal