{"id":58103,"date":"2023-04-23T22:04:24","date_gmt":"2023-04-23T22:04:24","guid":{"rendered":"https:\/\/alecmuffett.com\/?p=58103"},"modified":"2023-04-23T22:49:38","modified_gmt":"2023-04-23T22:49:38","slug":"how-whatsapp-could-shut-down-service-to-the-uk-using-feature-flags","status":"publish","type":"post","link":"https:\/\/alecmuffett.com\/article\/58103","title":{"rendered":"How WhatsApp could shut down service to the UK using &#8220;Feature Flags&#8221;"},"content":{"rendered":"\n<p>Speaking as a former Facebook engineer, I would expect pushing some kind of &#8220;feature flag&#8221; (global configuration option) which prevented the service connecting for people with a &#8220;+44&#8221; phone number.<\/p>\n\n\n\n<p>Pretty simple. Geo blocking could be done similarly.<\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Feature_toggle?wprov=sfla1\">https:\/\/en.wikipedia.org\/wiki\/Feature_toggle?wprov=sfla1<\/a><\/p>\n\n\n\n<p>2\/n) When you&#8217;re coding for at-scale platforms you quickly realise the utility of creating a tool to divide users into groups by {country, language, phone-number, userid-modulo-N-test-group, employee\/non-employee} \u2014 and then THAT tool gets used for everything.<\/p>\n\n\n\n<p>3\/n) At Facebook-proper this tool was\/is &#8220;Gatekeeper&#8221; and it&#8217;s the software which is used to switch you between seeing new-user-interface vs: old-user-interface, that sort of thing.<\/p>\n\n\n\n<p>Nice essay about Gatekeeper, here:<\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background\"><a href=\"https:\/\/launchdarkly.com\/blog\/secret-to-facebooks-hacker-engineering-culture\/\">https:\/\/launchdarkly.com\/blog\/secret-to-facebooks-hacker-engineering-culture\/<\/a><\/p>\n\n\n\n<p>4\/n) True story: I was working on some logging code once &amp; had pushed it to production, only then to realise there was a potential bug which would&#8217;ve been embarrassing\u2026but I&#8217;d wrapped it in Gatekeeper controls, so I switched it off in the last seconds before it went live. <\/p>\n\n\n\n<p>5\/n) WhatsApp will have something similar, not least because someone will have anticipated the need for a bunch of phones to be switched-off by international dial prefix, e.g. in case the USA declared Libyan use to be export-controlled\/illegal, or something.<\/p>\n\n\n\n<p>6\/n) So WhatsApp could probably NOW make their clients shut-down service to both of:<\/p>\n\n\n\n<p>&#8211; anyone apparently inside the UK<br \/>\n&#8211; anyone with a +44 prefix<\/p>\n\n\n\n<p>\u2026trivially, by pushing a configuration update and waiting for clients to refresh their settings.<\/p>\n\n\n\n<p>About 5 mins work for 1 person.<\/p>\n\n\n\n<p>7\/7) With centralised platforms it&#8217;s not a big technical challenge to switch off service to a country; it&#8217;s a political and legal-exposure (i.e. &#8220;lawsuits&#8221;) one.<\/p>\n\n\n\n<p>But if the alternative is &#8220;make your software raddled with British Government spyware&#8221;, then it&#8217;s likely worth it.<\/p>\n\n\n\n<p><em>Originally tweeted by Alec Muffett (<a href=\"https:\/\/twitter.com\/AlecMuffett\">@AlecMuffett<\/a>) on <a href=\"https:\/\/twitter.com\/AlecMuffett\/status\/1650252846183378949\">2023\/04\/23<\/a>.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Postscript: but what if WhatsApp simply waits to be blocked by the UK Government for non-compliance?<\/h2>\n\n\n\n<p>I&#8217;ve <a href=\"https:\/\/alecmuffett.com\/article\/57060\">already written a blogpost that is broadly about that<\/a>, but I should note in passing that we have seen this battle before: when the UK, France, Sweden, etc, all petitioned Apple and Google to provide them with exceptional privileges in iOS and Android, to enable their own homegrown COVID apps.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.theguardian.com\/world\/2020\/may\/05\/uk-coronavirus-contact-tracing-app-is-it-safe-and-will-people-use-it\">That did not end well for the petitioning nations<\/a>, for instance the UK:<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background\"><strong>The UK is abandoning its current contact tracing app for Google and Apple\u2019s system<\/strong><br \/><strong><br \/><\/strong><a href=\"https:\/\/www.technologyreview.com\/2020\/06\/18\/1004097\/the-uk-is-abandoning-its-current-contact-tracing-app-for-google-and-apples-system\/\">https:\/\/www.technologyreview.com\/2020\/06\/18\/1004097\/the-uk-is-abandoning-its-current-contact-tracing-app-for-google-and-apples-system\/<\/a><\/p>\n\n\n\n<p>\u2026and\u2026<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background\"><strong>The UK\u2019s contact tracing app fiasco is a master class in mismanagement <br \/><\/strong><br \/><em>The failed rollout of Britain&#8217;s covid-19 app will damage digital contact tracing efforts worldwide\u2014but its troubles were the result of clear, specific errors.<br \/><\/em><br \/><a href=\"https:\/\/www.technologyreview.com\/2020\/06\/19\/1004190\/uk-covid-contact-tracing-app-fiasco\/\">https:\/\/www.technologyreview.com\/2020\/06\/19\/1004190\/uk-covid-contact-tracing-app-fiasco\/<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Speaking as a former Facebook engineer, I would expect pushing some kind of &#8220;feature flag&#8221; (global configuration option) which prevented the service connecting for people with a &#8220;+44&#8221; phone number. Pretty simple. Geo blocking could be done similarly. https:\/\/en.wikipedia.org\/wiki\/Feature_toggle?wprov=sfla1 2\/n) When you&#8217;re coding for at-scale platforms you quickly realise the utility of creating a tool [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[1],"tags":[1049,762,431],"class_list":["post-58103","post","type-post","status-publish","format-standard","hentry","category-uncategorised","tag-feature-flags","tag-online-safety-bill","tag-whatsapp"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/posts\/58103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/comments?post=58103"}],"version-history":[{"count":6,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/posts\/58103\/revisions"}],"predecessor-version":[{"id":58120,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/posts\/58103\/revisions\/58120"}],"wp:attachment":[{"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/media?parent=58103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/categories?post=58103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alecmuffett.com\/wp-json\/wp\/v2\/tags?post=58103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}