Error message
Deprecated function: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in Drupal\Component\Utility\Unicode::validateUtf8() (line 395 of core/lib/Drupal/Component/Utility/Unicode.php).
Drupal\Component\Utility\Unicode::validateUtf8() (Line: 65) Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in Drupal\Component\Utility\Xss::filter() (line 69 of core/lib/Drupal/Component/Utility/Xss.php).
Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
Deprecated function: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in Drupal\Component\Utility\Unicode::validateUtf8() (line 395 of core/lib/Drupal/Component/Utility/Unicode.php).
Drupal\Component\Utility\Unicode::validateUtf8() (Line: 65) Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in Drupal\Component\Utility\Xss::filter() (line 69 of core/lib/Drupal/Component/Utility/Xss.php).
Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
In a March column in The New York Times, Donald McNeil proposed a thought experiment. Imagine if every person on the planet could sit down, at least six feet from each other, and not move for 14 days. At the end of those 14 days, the virus would be gone, or close enough [1]. We’d be done with this.
Unfortunately, this global time-out won’t work, and for a number of reasons. Among these is the fact that we’re mammals. We need to eat constantly. If we were snakes, going without food for 14 days would not be a problem.
My goal today is to explore another way we might end this – by creating herd immunity.
What is herd immunity? How could we get it? And how long would it take?
In essence, herd immunity is simple. If enough people are immune, the virus will eventually die out. But why? To survive, the virus has to keep infecting new hosts. But finding a susceptible host becomes increasingly unlikely as more and more people become immune. More immunity also means fewer people shedding virus particles that could land on others.
But herd immunity is more complicated than that characterization would suggest. Let’s start with how herd immunity could be achieved.
There are 3 paths we could follow:
1) Allow the virus to do what it is currently doing – infecting people around the world, some of whom acquire immunity
Eventually, enough people would be immune that the infected would be unlikely to pass the virus to a new host before their body cleared it. We could call this the laissez-faire path to herd immunity, and it is fraught. Along the way, many people would die, and many others would suffer debilitating illness.
2) Vaccinate people
The vaccination path to herd immunity is appealing but slow. If a vaccine can be developed to render us immune to infection, and if enough people get vaccinated, we could achieve herd immunity with less debility and loss of life. But a vaccine will take time to develop. One group has had some success so far. They have a candidate vaccine that they suspect could be tested by September. It’s worked in rhesus macaques, and tests are beginning in people next month. But many candidate vaccines fail at this stage. And even if it is safe and effective in people, the global production, distribution, and administration of any vaccine will take time.
3) Combine these two approaches
This is the path most countries around the world are taking, even if that choice is by default [2]. In the past weeks, there have been reports of the first antibody surveys, which provide a measure of how many people have already been exposed to the virus. About 20% of people in New York City, for example, appear to have been exposed already. Elsewhere in New York, the number is smaller. Some places around the world report percentages less than 5%, a few others as high as 30%. Why does this number matter? It gives us an idea of how much further we might have to go to achieve herd immunity [3]. But this takes some further exploration.
First, and most importantly, we don’t yet understand the immunity part of herd immunity
For example, we don’t yet know if people with antibodies to this virus – SARS-CoV-2 – can be reinfected. If previous exposure doesn’t protect you in the future, the laissez-fair path to herd immunity is not an option, and the vaccination path will only be possible if the vaccine invokes a different kind of immune response. There are a lot of other questions about immunity to SARS-CoV-2, like how long protection lasts, if it occurs at all, and whether everyone is equally protected.
We don’t know that much about the size of the herd required to achieve herd immunity either
News reports would suggest that we’ll have achieved herd immunity when 50-60% of the population is immune, but how do they get that number? The proportion of the population that needs to be immune to achieve herd immunity is estimated using a measure of how readily the virus is spreading from person to person. If each infected person infects a lot of other people, we need a higher percentage of immune people in order to achieve herd immunity. If each infected person infects very few, we could get by with a lower level of herd immunity. A study that came out in March estimated that herd immunity to covid-19 would require 45-85% of a population to be immune. To understand why that range is so large, we need to go deeper still.
Right now, many people in the world are under movement restrictions, allowed to leave their homes only under very limited circumstances, and forbidden from gathering in groups of any size. The goal of these efforts is to reduce transmission of the virus, and the data indicate that places that are doing this well are slowing its spread [4]. By lowering the rate of transmission this way, we’re lowering the level of immunity we need to achieve protection for our herd, but we’re also slowing our path to getting there. In contrast, the more we transmit, the greater the number in our herd that need to be immune and the more quickly we get there, but at a devastating cost. In a nutshell, if we want to go back to normal, we’re going to need almost everyone to be immune to the virus. We’re going to need a vaccine.
A new thought experiment
Let’s imagine that antibodies to SARS-CoV-2 are fully protective and last a lifetime. Let’s imagine that the fatality rate is much lower than we originally estimated because many more people have been exposed than we knew. Let’s imagine that this promising vaccine is effective and safe in humans, and that our leaders are already making a plan for its global production, distribution, and equitable administration. In this world of our imagination, we are tantalizingly close to herd immunity, with the potential to achieve it sometime this fall.
In the real world, what do we do?
In practical terms, herd immunity is a way of socially isolating the virus. But for now, socially isolating ourselves is our best available strategy. While it reduces transmission, it also buys us time to develop and test vaccines. So we should keep doing what we have already been doing for weeks. We should maintain rigorous social distancing, practice the best hygiene of our lives, and support our essential workers – and everyone else – in every way we can. Herd immunity isn’t something anyone achieves alone.
Notes
- When people started moving again, a few with unusually long periods of viral shedding might still infect others, but those cases could be easily tracked down and managed.
- There is another option, and that is to rid your country of the virus entirely. New Zealand, for example, is well on the way to this endpoint. They responded early and aggressively to the pandemic, and now they are tracing and quarantining the handful of remaining cases. As long as no new cases are imported, New Zealand could eliminate the virus entirely. This path is foreclosed to most countries, which have seen less decisive, less science-based leadership.
- It tells us other things as well. For example, if the number is high, it indicates that there are a lot of undetected cases. That means that there’s a lot of asymptomatic transmission, and it also means that the case fatality rate is lower than we have been estimating.
- This website estimates the current rate of transmission of the virus for each state in the US using a measured called Rt (which is a practical version of the much discussed Ro). Values below one, indicated in green, are a main goal of social distancing.