About the Foundation for Public Code

Assessing existing codebases

This resource

During the assess phase in the codebase stewardship lifecycle, the Foundation for Public Code staff and a codebase’s current maintainers evaluate whether a codebase is ready and suitable for incubation. They do this by checking it against:

Based on this, staff and a potential codebase’s current maintainers (for example the project managers or developers) can estimate how much work will be needed during incubation to meet the Standard for Public Code. This ensures a codebase’s current maintainers and community can meaningfully decide whether committing to full Foundation for Public Code stewardship (and the work required of them in incubation) is right for them.

Stewardship feasibility criteria

These criteria enable us to decide whether the codebase is a good fit for the Foundation for Public Code:

  • Business case: what is the business case for the codebase becoming public code and being reused?
  • Co-develop-ability: does the codebase lend itself to collaborative development?
  • Community: does the codebase have an active and engaged community?
  • Community potential: is there a strong potential for the community to grow beyond its existing members?
  • Code reusability: is the code written in a way that makes it easy to be reused?
  • Reuse potential: to what extent can the codebase be reused, both in a different context or for a different purpose?
  • Societal impact: what is the potential societal impact of the codebase becoming public code and being reused?
  • Story: what is the story-telling and communication value of this codebase becoming public code and being reused?

How the criteria are assessed

This list of questions for current maintainers of potential codebases helps us understand their codebase better. To collaborate with current maintainers we use a shared spreadsheet. Use this guide for creating a new one.

If Foundation for Public Code staff don’t believe stewardship is feasible based on these criteria, then we will not proceed with incubation.

Business case

  1. Do you have a business case for the codebase that you can share?
  2. Do you have any financial forecasting or modelling of the cost of the codebase over its lifetime that you can share?
  3. What, if any, is the budget currently committed to the codebase?
  4. Did this codebase replace a previous IT solution or service? Why was the previous one discontinued?

Co-develop-ability

  1. What percentage of the codebase is covered by tests?
  2. Can developers run the tests on their laptop?
  3. What are the buildtime and runtime dependencies?
  4. How many modules does the codebase have?
  5. How many lines of code does the codebase have?
  6. Is there a diagram and description of the system architecture?
  7. What portion of the APIs are documented?
  8. What portion of the code is commented/has inline documentation?
  9. What portion of the documentation exists in English?
  10. Are there any proprietary dependencies?
  11. Are there written engineering guidelines to inform architectural and code structure decisions?
  12. Are there explicit style guidelines for how code should look?

Community

  1. What portion of contributors are staff, contractors/freelancer, 3rd party procurement/vendors or volunteer?
  2. How many contributors have contributed in the last 6 months?
  3. What is the average number of commits per week in 2019?
  4. How many organizations contribute to this codebase?
  5. Which of these does your community have for discussion among users: email at a specific addres, email list, forum, bugtracking system, other (write in)?
  6. Which of these does your community have for discussion among developers: email at a specific addres, email list, forum, bugtracking system, other (write in)?
  7. Is there a defined process to help new people contribute to the codebase?
  8. Does the community currently use English?
  9. What other languages does your community use?

Community potential

  1. Is there a 2 to 4 year roadmap?
  2. Are your goals for the next 6 months more ambitious or realistic?
  3. How far through your current set of goals are you?
  4. Is there a public backlog in English or one you can make public?
  5. Is there a public bugtracking system in English or one you can make public?
  6. Is the codebase being deployed by another organization?
  7. Has any other organization expressed an interest in deploying the code?

Code reusability

  1. How long would it take a team of 2 developers to extract to make the code configurable such that it could be deployed for a different organization?
  2. Which programming languages are used in your project?
  3. Are operational requirements (hosting requirements etc.) documented and tested?
  4. Are there any technical documentation for how the solution is implemented?
  5. Does the codebase exist in more than one version?

Reuse potential

  1. What portion of the codebase is only understood by 1 or 2 people?
  2. Is the relevant policy bundled with the code?
  3. Can the relevant policy be bundled with the code in English?
  4. Is the full policy that the codebase implements available online?
  5. Does the policy rely on published research or academic papers?

Societal impact

  1. Who are the end users of the codebase or the service the codebase powers?
  2. Do you have any performance metrics for this codebase or the service it powers (like the UK government’s performance dashboard)?

Story

  1. Does this codebase have a public facing website?
  2. Has there been a communications campaign about this codebase or the service it powers? If so, please provide links.
  3. Has this codebase or the service it powers received any press coverage? If so, please provide links.
  4. Is there anything about this codebase or the service it powers that you would describe as innovative, groundbreaking or really clever?
  5. What makes you proud to work on this codebase?

Further reading