Skip to content

Latest commit

 

History

History
461 lines (372 loc) · 17.6 KB

results-2021.md

File metadata and controls

461 lines (372 loc) · 17.6 KB

Government frontend survey results 2021

The 2021 Frontend survey asks additional questions in a different order from the previous surveys, 2016 and 2018. For this survey, we are not interested in prototyping projects and those responses are not included in the results.

Respondents can skip any question and where users do skip, it's recorded as 'No answer'.

Question 1: Thinking about your current project, how would you describe it? If you work on more than one project, pick the one you spend the most time on. Keep this project in mind for the rest of the survey.

Answers

Name Count Percentage
Live service/website 34 61.82%
Service/website that will go live in the future 20 36.36%
Design system across department 1 1.82%

Question 2: What type of project is it?

Answers

Name Count Percentage
Public-facing transactional service 20 36.36%
Public-facing website 10 18.18%
Case working system 8 14.55%
Internal transactional service 8 14.55%
Internal website 2 3.64%
A platform other services use to send emails, sms messages, letters and now emergency alerts. 1 1.82%
Currently internal with public facing parts in the roadmap. 1 1.82%
Dept to business service - for use by educational institutions. 1 1.82%
Has a public facing section but is mostly 'internal' for use by providers of legal services 1 1.82%
NHS digital service for NHS clinicians 1 1.82%
Publicly available but intended to be used by department 1 1.82%
Register with publicly facing external web applications & internal web applications. 1 1.82%

Question 3: What department, agency or organisation do you work in?

Answers

Name Count Percentage
Cabinet Office (inc GDS) 7 12.73%
DWP 6 10.91%
MOJ 5 9.09%
Home Office 5 9.09%
NHS 5 9.09%
HMRC 3 5.45%
DfT (DVLA, DVSA) 4 7.27%
The National Archives 4 7.27%
DfE / ESFA 4 7.27%
DIT 2 3.64%
DEFRA 2 3.64%
Local authority 2 3.64%
OFGEM 1 1.82%
Solicitors Regulation Authority 1 1.82%
CQC 1 1.82%
UKHO 1 1.82%
BEIS and DCMS 1 1.82%
Not Government 1 1.82%

Question 4: What is your main role on your current project?

Answers

Name Count Percentage
Frontend development 26 47.27%
Full stack development 16 29.09%
Design 5 9.09%
Backend development 2 3.64%
Content 1 1.82%
Product Manager 1 1.82%
Product Owner 1 1.82%
Project management 1 1.82%
SRE 1 1.82%
Technical Architect 1 1.82%

Question 5: If you're happy to share it, tell us the code repository URL(s) for your project. Getting to see your repository can help us understand how frontend technologies are used in your project.

Answers

Answers are not shared.

Question 6: What is the frontend of your project built upon? (Projects can declare multiple)

Answers

Name Count Percentage
Node.js 18 32.73%
Ruby on Rails 13 23.64%
React 13 23.64%
.NET / C# 5 9.09%
Python 4 7.27%
Angular 3 5.45%
Scala and Play 3 5.45%
Next.js 2 3.64%
Java 1 1.82%
PHP 1 1.82%
jQuery 1 1.82%
Go 1 1.82%
MS Powerapp 1 1.82%
Do not know 1 1.82%
No frameworks 1 1.82%

Question 7: What templating languages do you use on this project?

Answers

Name Count Percentage
React 12 23.64%
Nunjucks 11 21.82%
ERB 7 12.73%
haml 3 5.45%
Razor 3 5.45%
Twirl 3 5.45%
Django templates 2 3.64%
Jinja 2 3.64%
Angular 1 1.82%
ASP.NET Razor Pages 1 1.82%
C# 1 1.82%
Vue.js 1 1.82%
Ruby "helpers" with HAML 1 1.82%
Slim 1 1.82%
Twig 1 1.82%
None 1 1.82%
I do not know 4 7.27%

Question 8 and 9: Does your project need to support any legacy or non-standard browsers? These are usually browsers not included in the list of browsers to test in in the Service Manual. How long do you plan to continue supporting any legacy or non-standard browsers?

Answers

Name Count Percentage How long?
Internet Explorer 8 3 5.45% 33% no decision
67% continue for now
Internet Explorer 9 6 10.91% 16.7% up to 12 months
50% no decision
33% continue for now
Internet Explorer 10 9 16.36% 11% up to 12 months
56% no decision
33% continue for now
Internet Explorer 11 23 41.82% 4% up to 6 months
9% up to 12 months
44% no decision
35% continue for now
No, our project only needs to support browsers listed in the Service Manual 25 45.45% N/A
I do not know 9 16.36% N/A
unclear 1 1.82% N/A

Question 10: Could you explain why you've decided to support the legacy or non-standard browsers for the time being?

Answers

Answers are summarised

  • Staff still uses Internet Explorer.
  • Support browser our internal agents uses
  • Support as many users as possible.
  • Old system still relies on older technologies, although support is functional rather than full compliance
  • Use-statistics shows hundreds of thousands still uses IE11
  • Users can only access system through IE due to group policy
  • Support whatever is listed on the GDS website

Question 11: What frontend resources from government or public sector does your project use? We'd like to hear about frontend resources other than those offered by GDS. This can include departmental design systems or departmental frameworks.

Answers

Name Count Percentage
GOV.UK Design System (GOV.UK Frontend) 45 81.82%
GOV.UK Prototype Kit 19 34.55%
GOV.UK Design System Community resource 10 18.18%
GOV.UK Frontend Toolkit 10 18.18%
GOV.UK Elements 5 9.09%
GOV.UK Template 5 9.09%
NHS Design System (NHS Frontend) 4 7.27%
govuk-react 2 3.64%
HMRC Design System (HMRC Frontend) 2 3.64%
MOJ Pattern Library (an extension of the GOV.UK Design System) 2 3.64%
GOVUK publishing components 1 1.82%
Hackney Design System 1 1.82%
None 4 7.27%
Don't know 2 3.64%

Question 12: How are these frontend resources integrated into your project?

Answers

Answer are categorised

Name Count Percentage
npm 22 40.00%
Manually 1 1.82%
Gulp 1 1.82%
We don't 1 1.82%
Departmental resource 3 5.45%
Gem 2 3.64%
Webpack 2 3.64%
Other 2 3.64%
Package manager 1 1.82%
NuGet 1 1.82%
No answer 19 34.55%

Question 13: How do you keep these resources up-to-date in your project?

Answers

Answer are categorised

Name Count Percentage
npm 11 20.00%
Dependency notification service (e.g Dependabot) 9 16.36%
CI/CD pipeline 5 9.09%
Manually 4 7.27%
Watch for changes 2 3.64%
Rarely 2 3.64%
Bundler 1 1.82%
With difficulty 1 1.82%
Not sure 1 1.82%
No answer 19 34.55%

Question 14: Does your project use any automated accessibility or performance testing tools? List any tools that you find useful in your project.

Answers

Name Count Percentage
aXe 18 32.73%
Lighthouse 8 14.55%
Cypress 4 7.27%
Wave 3 5.45%
Cucumber 3 5.45%
Speed Curve 3 5.45%
SiteImprove 1 1.82%
Firefox Accessibility Inspector 1 1.82%
Webpack bundle checkers 1 1.82%
JavaScript tests 1 1.82%
Not sure 2 3.64%
No 9 16.36%
No Answer 17 30.91%

Question 15: What CSS pre-processor do you use on your project?

Answers

Name Count Percentage
Sass 40 72.73%
We don't use a pre-processor 4 7.27%
Less 2 3.64%
PostCSS 1 1.82%
SCSS 1 1.82%
We don't write our own styles 1 1.82%
I do not know 7 12.73%

Question 16: What SASS compiler do you use on your project?

Answers

Name Count Percentage
Dart Sass 12 21.82%
LibSass (including node-sass) 7 12.73%
Ruby Sass 4 7.27%
gulp-sass 1 1.82%
Multiple 1 1.82%
I do not know 12 21.82%
No answer 18 32.73%

Question 17 and 18: Ruby Sass and Lib Sass (including node-sass) are deprecated. Do you have any plans to migrate to Dart Sass? Can you explain why you haven't made any plans to migrate to Dart Sass?

Answers

Name Count Explanation (Q18)
I did not know that they were deprecated 2 -
Once our webpack update is done. 1 -
We do not have any plans to migrate for now 5 Budget
Not project critical
Time and effort
At the moment there are higher priority things to do.
Yes, in the next 12 months 1 -
Yes, in the next 3 months 1 It was seen as a low priority for us

Question 19: Can you explain what technical constraints prevent you from migrating to Dart SASS?

No answers for question 19.

Question 20: Which CSS architecture do you follow?

Answers

Name Count Percentage
BEM 22 40.00%
ITCSS 3 5.45%
CSS-in-JS 2 3.64%
SMACCS 1 1.82%
We don't write our own styles 4 7.27%
We don't follow a CSS architecture 12 21.82%
Don't know 9 16.36%
No Answer 2 3.64%

Question 21: How do you write JavaScript in your project? This is how you write JavaScript in the developer environment (before it might get transformed or transpiled).

Answers

Name Count Percentage
ECMAScript 2015 (ES6) or later 38 69.09%
ECMAScript 3 (ES3) 7 12.73%
We don't write our own JavaScript 1 1.82%
I do not know 9 16.36%

Question 22: Does your project use any JavaScript module bundlers or transpilers?

Answers

Name Count Percentage
Webpack 24 43.64%
Babel 15 27.27%
Typescript 12 21.82%
Rollup 4 7.27%
Gulp 3 5.45%
Browserify 1 1.82%
BuildBundlerMinifier 1 1.82%
Grunt 1 1.82%
We do not use JavaScript on this project 2 3.64%
None 8 14.55%
I do not know 10 18.18%

Question 23: If you transform or transpile your JavaScript to another format for production environment, can you tell us what the format is?

Answers

Answers are summarised

  • ES5
  • @babel/preset-env
  • Minification
  • ES6 with babel where we need older browser support
  • TypeScript
  • Use rollup to package javascript in the cjs format

Question 24: Describe how your project, on average, uses JavaScript? (Project can choose multiple options)

Answers

Name Count Percentage
We write JavaScript to create our own components 30 54.55%
We bring in JavaScript components and/or functionality from elsewhere and write JavaScript to initialise them and connect them to our project 26 47.27%
We write substantial JavaScript to modify how components and/or functionality brought in from elsewhere work 15 27.27%
We use JavaScript to create all or part of our user interface 14 25.45%
We don't use any or use very little JavaScript on our project 12 21.82%
We use JavaScript on the client side to handle page level interactions such as routing of pages 11 20.00%
We use JavaScript to manage tooling and/or deployments 10 18.18%
I do not know 7 12.73%

Do you have any other comments about how you use JavaScript on your project?

Answers are summarised

  • Use Node, so JS is server-side
  • Use as little as possible
  • Typescript not JS
  • Trying to achieve smaller micro-frontend apps that render server side and bring in a minimal of progressively enhanced JS components
  • Reducing client side JS and custom JS from inherited project
  • Use default GOV.UK / department's design system
  • JS approached based on progressive enhancement
  • JS is required for UI elements (filter, auto complete) to work well
  • Bespoke components (dynamic search and table select/sort)
  • Modified existing component using JS
  • Follow govuk-frontend convention
  • Use Javascript for the orchestration of micro-frontends
  • Use Javascript to prevent auto-suggesting previous answers
  • Use a combination of JavaScript on the client side and Python on the server-side to update parts of our pages, through AJAX calls to Python endpoints.
  • Currently use very little JS. If we didn't have to support users without JavaScript, we would switch to using SPAs and use the same generators as our internal apps.
  • Use JavaScript to call various APIs on the client-side, such as webauth and websharing
  • A specific page only works with JavaScript, it needs to extract client-side metadata (file path, last modified date, calculated checksum) from files being uploaded

Question 25: How does your project work if JavaScript does not load?

Answers

Name Count Percentage
We test that users can still complete all the tasks without JavaScript 23 41.82%
We don't test how the project works if JavaScript does not load 7 12.73%
We test that users can still complete all the tasks, but we know that the user experience will be substantially different 7 12.73%
We test without JavaScript, but we know that, if JavaScript does not load, it might make it harder for users to complete some tasks 6 10.91%
We don't use any JavaScript on this project 1 1.82%
I do not know 10 18.18%
No Answer 1 1.82%

Do you have any other comments about how your project works if JavaScript doesn't load?

Answers are summarised

  • Does not function without javascript
  • Fallback for autocompletes means searching is harder
  • Mostly the same
  • Designed to work without JavaScript
  • Aim for progressively enhance experience, but some parts of the interface are slow
  • Let the user know when it is necessary to enable JS to complete a task
  • Everything is server side generated
  • Doesn't work well. It causes significantly more work for a tiny portion of people who disable js.
  • Team isn't concerned, internal project so it doesn't matter
  • All pages tested to work without JavaScript

Question 26: Can you explain how the user experience on your project will be substantially different if JavaScript does not load?

Answers

Answers are summarised

  • Some features wouldn't work - word counts, client side validations, redirect after a download to sign out of service,
  • Backlink will hide
  • Service wouldn't work
  • Users cannot complete the task
  • Requests are initiated from forms and links in the fallback state, rather than immediately via buttons. Build extra pages to handle states that would normally be moved to the same page.
  • Will not look as nice stylistically
  • Users will struggle to navigate themselves around many/most websites in circulation.

Question 27: Can you explain what tasks on your project might be harder for users to complete if JavaScript does not load?

Answers

  • We do an ajax lookup with an autocomplete to search for schools - a set of ~30k entries. For js this works very nicely and is quick. For non-js we revert to an input and results page to pick from.
  • Sorting tables, filtering, general layout, authentication via Microsoft ADB2C
  • Maps will be missing
  • Search / Filter features will be harder. Transactional journeys that rely on endpoints will be impossible to use
  • The application contains a lot of "tables" of cases for caseworkers with filters, and autocompleting fields on forms. Without JS this functionality is lost so it becomes more difficult to use the application.
  • Uploading files, because that specific task requires client-side JavaScript to extract client-side metadata

Question 28: Are there any specific improvements you'd like to see in the frontend resources offered by GDS?

Answers

Answers are summarised

  • more templating languages, Django, react, Angular
  • better documentation
  • more examples
  • more components and patterns
  • More complex components, e.g search, tables with sort/filter
  • Patterns and components to help internal users manage large numbers of entities, e.g. interacting with tables of data and modifying multiple items at once.
  • Support for non-public facing services
  • Support single page application (SPA) - guidelines dedicated to the dynamic aspects and much richer set of components and concepts used in SPAs.
  • better JavaScript
  • a clear contribution model
  • Class for hiding/showing depending on whether JS loads or not.
  • Support for Welsh
  • Utility classes and macros
  • Mobile as the preferred method of government services
  • More help and guidance
  • Remove requirement for services to work with JS off
  • Highlight accessibility or performance considerations
  • guidance to build resilient SSR application
  • Support CSS-in-JS
  • Schema based form generation framework, so we can define a question schema, generate templates from it, record the answers in a schema and then later cross reference questions and answers in a structured way.
  • accessibility acceptance criteria
  • Raise a11y issues as bugs on repos
  • Unbundled .js source
  • Testing guidance
  • provided non transpilled non-polyfilled JS modules for components via npm
  • Continued improvement
  • Docker auto-refresh
  • Nothing else right now