{"id":781,"date":"2014-03-05T17:02:04","date_gmt":"2014-03-06T01:02:04","guid":{"rendered":"http:\/\/blog.mozilla.org\/privacy\/?p=781"},"modified":"2016-01-19T14:03:26","modified_gmt":"2016-01-19T22:03:26","slug":"user-data-you-privacy-for-programmers-2","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/","title":{"rendered":"User Data &amp; You: Privacy for Programmers"},"content":{"rendered":"<p>This was originally posted as a guest post on January 31t 2014. Since then, it has been requested that I post under my own name.<\/p>\n<p><strong>Introduction<\/strong><\/p>\n<p>I am a Firefox Engineer at Mozilla. I have worked on Desktop Firefox, Firefox for Android, and Firefox Sync. I currently work on Firefox for Windows 8 Touch, (n\u00e9e Firefox Metro). I also serve on Mozilla\u2019s Privacy Council.<\/p>\n<p>On Data Privacy Day, I presented a perspective on what we can do differently. My primary audience is fellow engineers or those engaged in engineering related activities. When I say \u2018we\u2019 I am largely referring to engineering as group. The remainder of this post is a written expansion on the presentation. The Air Mozilla recording is available <a href=\"https:\/\/air.mozilla.org\/privacy-training-starting-the-conversation\/\">here<\/a>.<\/p>\n<p><strong>Goal<\/strong><\/p>\n<p>My goal is to start a public discussion about what engineers need to know about user privacy. Eventually the result of this discussion will evolve into a short training or set of best practices so engineers can ship better code with less hassle. Since this is the start of a public discussion, the content below will probably raise more questions than answers.<\/p>\n<p>There be scaly dragons. Ye have been warned.<\/p>\n<p><strong>Privacy? That Word is so Overused. What is it Exactly &amp; Why do I Care?<\/strong><\/p>\n<p>Privacy is a culturally laden word and definitions vary widely. Privacy means different things to different people at different times, even within the nascent field of <a href=\"http:\/\/blog.sidstamm.com\/2012\/12\/what-is-privacy.html\" target=\"_blank\">privacy engineering<\/a>. So for sanity\u2019s sake, the following are my table stakes definitions.<\/p>\n<p><em><strong>Privacy<\/strong><\/em>: How &amp; by whom the personal information of an individual is managed with respect to other individuals.<\/p>\n<p><em><strong>User Data<\/strong><\/em>: Any data related to users that they generate or cause to be generated; or that we generate, collect, store, have custody and control over, transfer, process, or hold interest in.<\/p>\n<p>Why do we care? The reason Mozilla exists is to defend and promote the open web. Firefox &amp; FirefoxOS are great products but they are not the raison d\u2019\u00eatre outlined in the Manifesto; they are means to an end. The <a href=\"http:\/\/www.mozilla.org\/en-US\/about\/manifesto\/\" target=\"_blank\">Mozilla Manifesto<\/a> declares that for a healthy web, users must be able to shape their own experiences on it. Ain\u2019t nothing shapes your experience online more than than the data generated for, by, and about you. Whoever controls that controls your experience on the web. So our goal of the open web is directly linked to individuals ability to control that for themselves.<\/p>\n<p><strong>Acknowledging the Elephant in the Room<\/strong><\/p>\n<p>Let\u2019s start by acknowledging the elephant in the room: whether or not Mozilla products should even handle user data. That would be a rich discussion on its own. This is not that discussion. This discussion assumes we\u2019re going to handle user data. Regardless of your views, let\u2019s agree that there are some things we will need to do differently when we choose to handle user data. Let\u2019s figure out what those are.<\/p>\n<p><strong>Ok, So We Care; There\u2019s Another Team at Mozilla for That.<\/strong><\/p>\n<p>There is a misconception I run into often that I\u2019d like to clear up. Data safety &amp; user privacy is everyone\u2019s job, but especially an engineer\u2019s job. At the end of the day, engineers make the sausage. No one has more leverage over what gets written than the engineer implementing it. The privacy team is here to help, but there are three of them and hundreds of us. The duty is really on us not them. Whether our code is fast, correct, elegant, secure, and meets Mozilla\u2019s standards is chiefly our responsibility.<\/p>\n<p><strong>Ok, So it\u2019s Kinda My Job. What do I Need to Think About or do Now?<\/strong><\/p>\n<p>I have good news &amp; bad news. The good news is that it boils down to writing more stuff down &amp; making more decisions upfront. Stated more formally:<\/p>\n<ul>\n<li>More active transparency <em>(writing more stuff down)<\/em><\/li>\n<li>More proactive planning <em>(making more decisions up front)<\/em><\/li>\n<\/ul>\n<p>Sounds simple eh? Seasoned engineers should feel their spider sense tingling. It\u2019s not miscalibrated. That\u2019s the bad news. It\u2019s how you do it that matters. The devil is in the details. So let\u2019s tackle the easier one first: what I flippantly referred as \u2018writing more stuff down\u2019<\/p>\n<p><strong>Active Transparency <em>(aka write more stuff down)<\/em><\/strong><\/p>\n<p><em><strong>Passive Transparency<\/strong><\/em>: unintentional, decisions aren\u2019t actively hidden, but are difficult to locate. May not even be documented<\/p>\n<p><em><strong>Active Transparency<\/strong><\/em>: intentional, everything is written down, easily searchable &amp; locatable by interested parties<\/p>\n<p>If you haven\u2019t heard these terms before, don\u2019t panic. I made them up years ago when I was a volunteer contributor trying to articulate how I was part of an open source project, actively following Bugzilla, but couldn\u2019t figure out what was going on in the <a href=\"http:\/\/mxr.mozilla.org\/mozilla-central\/source\/storage\/\" target=\"_blank\">\/storage module<\/a>, let alone the rest of the Firefox code base.<\/p>\n<p>Active transparency is functioning transparency. It requires sustained effort. Information, history, and decisions of a feature can be searched for, located, and consumed by all inclined.<\/p>\n<p>Passive transparency is what happens unintentionally. People aren\u2019t trying to hide information from each other. It just happens and no one notices until it is too late to do anything about it.<\/p>\n<p>We often don\u2019t notice because those who code marinate in information. We rarely bother to test whether or not anyone else outside can figure out what we\u2019re living and breathing life into.<br \/>\nBreak that habit. You test your code to prove it works; so test your transparency to prove it works (or doesn\u2019t). Ask someone in marketing or engagement to figure out the state of your project or why your design is in its current state. Can they explain your tradeoff, constraints or design decisions back to you? Can they even find them?<\/p>\n<p>I hear grumbling already: \u2018Sounds like useless paperwork, not worth it\u2019. What you really mean is \u2018not worth it to you right now\u2019, but it\u2019s worth much to the people who will be responsible for it after you ship it, and there will be many of them.<\/p>\n<p>One of the ways user data based features differ dramatically from application features of yore is that control will change hands many times over. Future development, operations, database administration, etc teams cannot read your mind. They also can\u2019t go back in time to read your mind.<\/p>\n<p>As an added bonus, privacy is not the only reason to be actively transparent. Active transparency is vital to building our community. Like open source software, it\u2019s not really open if no one can find it and participate. Active transparency applies to the decision making process as much as to source code.<\/p>\n<p><strong>Proactive Planning <em>(aka Making More Decisions With More People)<\/em><\/strong><\/p>\n<p>Now we move on the harder part \u2013 more decisions you\u2019ll need to make with more people. Getting agreement on requirements is often one of the most difficult and least pleasant part of of an engineer\u2019s craft. When handling user data, it will get harder. Your stakeholders will increase because the number of people who handle the data your feature generates or uses over its lifetime has increased.<\/p>\n<p>The reason for enduring that pain at the beginning is that effective privacy is something you\u2019ll only get one shot at. It\u2019s usually impossible or cost-prohibitive to bolt it on to stuff after it\u2019s built.<\/p>\n<p>Proactive planning decisions will make up the bulk of the rest of the post. They are phrased in question form because the answers will be different for each project. They should not be interpreted as an all-inclusive list. The call to action for you is to answer them (and write the reasons down in a searchable location. Ahem \u2013 active transparency!)<\/p>\n<p><strong>30,000 Foot Views<\/strong><\/p>\n<p>The problem space can be vast. Below are two high level categorizations to jumpstart your problem solving, so that your feature can concretely bring to life the Manifesto\u2019s declaration that users must be able to shape their own experience.<\/p>\n<p><strong>First Way to Slice It<\/strong><\/p>\n<p>An intuitive place to start is interaction.<\/p>\n<p><strong>Interactions between events and their data, or the data lifecycle<\/strong><\/p>\n<ul>\n<li>Birth<\/li>\n<li>Life<\/li>\n<li>Death<\/li>\n<li>Zombie (braaaains)<\/li>\n<\/ul>\n<p><strong>Interactions between us and their data<\/strong><\/p>\n<ul>\n<li>How sensitive is this data?<\/li>\n<li>Who should have access to it?<\/li>\n<li>Who will be responsible for the safety of that data?<\/li>\n<li>Who will make decisions about it when unexpected concerns come up?<\/li>\n<\/ul>\n<p><strong> Interactions between users and their data<\/strong><\/p>\n<ul>\n<li>How will a user see the data?<\/li>\n<li>How will a user control it?<\/li>\n<li>How will a user export it?<\/li>\n<\/ul>\n<p><strong> Second Way to Slice It<\/strong><\/p>\n<p>Another way to group key decisions is by basics plus high level concerns, such as:<\/p>\n<ul>\n<li>Benefits &amp; Risks<\/li>\n<li>Openness, Transparency, &amp; Accountability<\/li>\n<li>Contributors &amp; Third Parties<\/li>\n<li>Identities &amp; Identifiers<\/li>\n<li>Data Life Cycles &amp; Service History<\/li>\n<li>User Control<\/li>\n<li>Compatibility &amp; Portability<\/li>\n<\/ul>\n<p><strong>Things to Think About \u2013 Basics<\/strong><\/p>\n<p>To start off, most of these seem pretty obvious. However there can be gotchas. For example, how identifying a type of data is can be tricky. What is seemingly harmless now could later be shown to be strongly identifying. Let\u2019s consider the locale of your Firefox installation. If you are in en-us (the American English version), locale is not very identifying. Seems obvious. However, for small niche locales, it can be linked to a person.<\/p>\n<ul>\n<li>Does your product\/feature generate user data?<\/li>\n<li>Metadata still counts<\/li>\n<li>Does your product\/feature store user data?<\/li>\n<li>What kind of data &amp; how identifying is it?<\/li>\n<li>Are there legal considerations to this feature?<\/li>\n<li>How do you authenticate users before they can access their data?<\/li>\n<li>Which person or position is responsible for the feature while it remains active?<\/li>\n<li>Who makes decisions after the product ships?<\/li>\n<li>Figure this out. Now.<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Benefits and Risks<\/strong><\/p>\n<p>There will always be risk in doing anything. There exists a risk that when I leave my house an anvil with drop on me. That doesn\u2019t mean I never leave my house. I leave my house because the benefits(like acquiring dinner) outweigh the risk. Similarly, there will always be risk when handling user data. That doesn\u2019t mean we should handle it, but there had better be benefit to the user. \u2018<em>Well, it might be useful later<\/em>\u2018 is probably not going to cut the mustard at Mozilla as a benefit to users.<\/p>\n<ul>\n<li>What is the benefit to users from us storing this data?<\/li>\n<li>What are the current alternatives available on the market?<\/li>\n<li>What is the risk to users from storing this data?<\/li>\n<li>What is the risk and cost to Mozilla from storing this data?<\/li>\n<li>Where are you going to store this user data? Whose servers? (If not ours, apply above questions as well)<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Openness, Transparency and Accountability<\/strong><\/p>\n<p>For a Mozilla audience, this is preaching to the choir.<\/p>\n<ul>\n<li>Have the benefits &amp; risks of this feature been discussed on a public forum like a mailing list?<\/li>\n<li>Should we exempt detailed discussion of handling really sensitive data?<\/li>\n<li>Where is the documentation for our tradeoffs and design decisions, with respect to user data? (*cough* Active transparency!)<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Contributors and Third Parties<\/strong><\/p>\n<p>The use of third party vendors adds additional nuances, as I alluded to earlier.<\/p>\n<ul>\n<li>Are any third party companies or entities involved in this? (ex: Amazon AWS)<\/li>\n<li>Do we have a legal agreement governing what they can and can\u2019t do with it?<\/li>\n<li>Who makes decisions about access to the data?<\/li>\n<\/ul>\n<p>At Mozilla, we sometimes release data sets so researchers can contribute knowledge about the open web for the public good.<\/p>\n<ul>\n<li>Could researchers access it directly?<\/li>\n<li>Do we have plans to release the dataset to researchers?<\/li>\n<li>What would we do to de-identify the data before release?<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Identity and Identifiers<\/strong><\/p>\n<p>There\u2019s probably nothing more personal than someone\u2019s identity.<\/p>\n<ul>\n<li>Will this feature have a user identification?<\/li>\n<li>Who owns the login\/username\/identifier?<\/li>\n<li>Is it possible to use this feature without supplying an identifier?<\/li>\n<li>How will the user manage this identification?<\/li>\n<li>Can they delete it?<\/li>\n<li>Who can see this identifier?<\/li>\n<li>Can the user control who can see their identifier?<\/li>\n<li>Can this identifier be linked to the real life identity?<\/li>\n<li>Can a single person have multiple identifiers\/accounts?<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Data Lifecycles and Service History<\/strong><\/p>\n<p>This is an area that most application developers will have trouble with because we often don\u2019t think about the mid-life or death of our feature or the data it uses. It ships, it\u2019s out! Onto the next thing!<\/p>\n<p>Not so fast.<\/p>\n<ul>\n<li>Which person or position is responsible for the data\/feature while it remains active?<\/li>\n<li>Who makes decisions after the product ships?<\/li>\n<li>Can a user see a record of their activities?<\/li>\n<li>What happens to an inactive account and its associated data?<\/li>\n<li>When is a user deemed inactive?<\/li>\n<li>How will you dispose of user data?<\/li>\n<li>What\u2019s the security of the data in storage?<\/li>\n<li>How long would we retain the data?<\/li>\n<li>Who has access to the data at various stages?<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 User Control<\/strong><\/p>\n<p>To shape their own experiences on the web, users need to have control of their data.<\/p>\n<ul>\n<li>How can a user see their data?<\/li>\n<li>Can users delete data in this feature?<\/li>\n<li>What exactly would deletion mean?<\/li>\n<li>how will happen?<\/li>\n<li>what will it include?<\/li>\n<li>what about already released anonymitized data sets?<\/li>\n<li>what about server logs?<\/li>\n<li>what about old backups?<\/li>\n<li>Is there a case where the user identifier can be deleted, but not necessarily the associated data?<\/li>\n<li>Is any of the data created by the user public?<\/li>\n<li>What are the default user control settings for this feature?<\/li>\n<li>How could a user change them?<\/li>\n<\/ul>\n<p><strong> Things to Think About \u2013 Compatibility and Portability<\/strong><\/p>\n<p>In my not-so-humble opinion, it\u2019s not an open web if user data is held for ransom or locked into proprietary formats.<\/p>\n<ul>\n<li>Can the user export their data from this service?<\/li>\n<li>What format would it be in?<\/li>\n<li>Is it possible to use an open format for storage?<\/li>\n<li>If not, should we start an effort to make one?<\/li>\n<\/ul>\n<p><strong> That\u2019s a Lot of Extra Work, No. Not OK. Not Cool.<\/strong><\/p>\n<p>Yes, it is.<\/p>\n<p>Handling user data is going to increase your workload. So does writing test coverage. We do it anyway. We write tests to meet our standards for correctness; we must write code that meets our standards for privacy.<\/p>\n<p>I didn\u2019t say it would be easy, but it\u2019s doable. We can do it better and show that the web the world needs can exist.<\/p>\n<p><strong>The Privacy Team is Here to Help. Talk to Them Early and Often<\/strong><\/p>\n<p>That a metric ton of questions to ponder. I don\u2019t expect you to remember them all. The privacy team is working on a new kickoff form and a checklist of considerations to make this process smoother (Additional note I spent most of today on just this goal). They may even merge those two things. For now, use the existing <a href=\"https:\/\/bugzilla.mozilla.org\/form.moz-project-review\" target=\"_blank\">Project Kickoff Form<\/a> and check out this <a href=\"https:\/\/wiki.mozilla.org\/Privacy\/HowTo\/Decisions\" target=\"_blank\">wiki<\/a> containing the questions I\u2019ve listed above.<\/p>\n<p>Not sure if you need a review? Just have a question? Something you want to run by them? Drop them an email or pop into the #privacy irc channel.<\/p>\n<p><strong>Have an Opinion? Join the Effort.<\/strong><\/p>\n<p>The Mozilla Privacy Council needs more engineers, including volunteer contributors. No one knows more about building software than we do. User-empowering software won\u2019t get built without us. Help shape the training, best practices, the kickoff form, and privacy reviews of new features. To get involved, email stacy at mozilla dot com.<\/p>\n<p>Special thanks to the Metro team for their patience with my delayed code reviews this week.<\/p>\n<p>Thank you for reading. May your clobber builds be short.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This was originally posted as a guest post on January 31t 2014. Since then, it has been requested that I post under my own name. Introduction I am a Firefox &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/\">Read more<\/a><\/p>\n","protected":false},"author":400,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,847],"tags":[],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>User Data &amp; You: Privacy for Programmers - Open Policy &amp; Advocacy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/\",\"url\":\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/\",\"name\":\"User Data &amp; You: Privacy for Programmers - Open Policy &amp; Advocacy\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/netpolicy\/#website\"},\"datePublished\":\"2014-03-06T01:02:04+00:00\",\"dateModified\":\"2016-01-19T22:03:26+00:00\",\"author\":{\"@id\":\"\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/netpolicy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User Data &amp; You: Privacy for Programmers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/netpolicy\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/netpolicy\/\",\"name\":\"Open Policy &amp; Advocacy\",\"description\":\"Mozilla&#039;s official blog on open Internet policy initiatives and developments\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/netpolicy\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"User Data &amp; You: Privacy for Programmers - Open Policy &amp; Advocacy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/","twitter_misc":{"Written by":"","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/","url":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/","name":"User Data &amp; You: Privacy for Programmers - Open Policy &amp; Advocacy","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/netpolicy\/#website"},"datePublished":"2014-03-06T01:02:04+00:00","dateModified":"2016-01-19T22:03:26+00:00","author":{"@id":""},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/netpolicy\/2014\/03\/05\/user-data-you-privacy-for-programmers-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/netpolicy\/"},{"@type":"ListItem","position":2,"name":"User Data &amp; You: Privacy for Programmers"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/netpolicy\/#website","url":"https:\/\/blog.mozilla.org\/netpolicy\/","name":"Open Policy &amp; Advocacy","description":"Mozilla&#039;s official blog on open Internet policy initiatives and developments","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/netpolicy\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":""}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/posts\/781"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/users\/400"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/comments?post=781"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/posts\/781\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/media?parent=781"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/categories?post=781"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/tags?post=781"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/netpolicy\/wp-json\/wp\/v2\/coauthors?post=781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}