This page contains 0 facts

Design / Musings

I had the start of an idea that could be part of the solution for limiting the damage of fake news.

In essence when reading something you need to know:

  • Does it have any factual basis?
  • What are the sources for the facts?
  • Have those sources and the facts quoted been corroborated by somebody I trust?

I think simple enhancements to HTML markup and some browser integration could achieve this.

In a sense there is nothing new here. References in academic and formal papers are standard. What we need is to add these to digital content in a way that can be corroborated and verified, and that changes cannot be made to reference material after they are corroborated.

In a nutshell, browsers would extract any “fact” references from content and show this information in the UI, much like they show a site’s security or certificate status.

? this page contains 0 facts

Something like that. You click on it, and if there are facts, they are highlighted in the page, much like Safari highlights search results, and you can click through or preview the relevant part of the source material. A short statement from the source is shown by each link to a fact-ref, such as “In 1975 the speed of light was known to be 299792458 m/s (186,282 mi /s) with a measurement uncertainty of 4 parts per billion”.

On a page where there are verified facts (more on what verified means shortly), the value would be non-zero, and it would show you all the facts declared in the page, but highlight the ones that are verified by the “authority” that you trust, much like your Root CA certificates / chain of trust for SSL:

✅ – 3 facts checked at “FactCheckTastic”
✅ – 2 facts checked at “WikiFacts”
❓ – 7 facts checked at “Dubious Neo-Con Source”

My thinking is that whatever happens, and despite the hard definition of “fact”, no one body is going to be able to cover all facts and corroborate everything. Browser manufacturers and users will have to choose who to trust. This has the inevitable downside that people who agree with racist fake news may choose dubious sources that “corroborate” false information. However browsers could of course ship with an industry agreed politics-neutral collection of organisations (is that even possible?).

The point is that worst case scenario, this is raising peoples’ awareness that you can’t just believe what you read. At best it could mean there is a consortium of fact checking authorities that operate on a hard peer-reviewed basis.

The beauty of this is that once introduced, it is “year zero” for the web in terms of corroborated facts. This alone would drive people who care about how their content is perceived to add support for fact-refs, and provides an opportunity for online publications who create high quality content to show this. For example maybe there would be a corroboration authority that specialises in journalism and verifying confidential sources and source material, while keeping it in escrow.

Those articles you read on The Daily Mail? “0 facts in this page”. The ones you read on NY Times, “23 facts in this page”. That feels like it could really change things, doesn’t it? Arguably better than completely suppressing what is deemed to be fake news.

So how would this work in markup? It should be pretty simple. You need source material to declare the facts contained within — something that is inherently useful and surely attractive for papers that are expressly made to disseminate facts, or want to prove their veracity with full source referencing. The fly in the ointment is that it is easy to write something, get it corroborated, and then change the content to no longer be factual, to back up some fake news propaganda that references it.

Source material would have extra markup such as this:

<p>Here is some content where I am describing a new discovery.</p>
<p fact-ref=“234” fact-statement="Racism is bad">We have long established that 
racism is bad because it discriminates arbitrarily between beings due 
to ignorance or ideological purposes. This is the part where I actually 
talk about the facts and make the definitive statement. 
This could actually be multiple DOM elements, all under a common parent.</p>

The fact-ref value is simply an identifier (or list of them) unique to the page, like anchor references.

In a post that references this fact, you would link to the source material as normal, but include the reference of the fact:

<p>Did you know that <a href="https://somesite.org/paper1" 
fact—ref="234">racism is abhorrent</a>?</p>.

This is how the browser discovers the facts from a document, just scanning for fact-ref attributes in links. Then it has to check their status with the corroboration authorities.

This would include the following steps:

  1. Send a standard request to the browser’s corroboration authories, passing the URL of the source and the fact-ref
  2. The corroboration service checks the status of that reference in its database (and/or re-fetches the source). It returns a hash of the content in the original source document that was wrapped in that fact-ref as well as the fact-statement, and the status; “verified”, “unverified” or “retracted”, and a signed version of the hash, which must be verified by the browser. If the authority fetches the original source frequently e.g. every second, it should revert status to “unverified” if the content has changed since it was corroborated
  3. The browser then uses this information to compose the UI mentioned previously, based on the statuses retrieved
  4. There is a possible exploit here where the authority has checked a site but the server is lying about its Last-Modified date or modified status, until fetched by a browser. To trap this scenario browsers would need to pre-fetch the current text of the source and re-calculate the digest of the relevant fact-ref section, and check that it matches the hash from the corroborative authority. If it doesn’t match up, this needs to be flagged with a warning in the UI.

Well there’s the start of the idea. It feels a bit draconian that we need to have “fact police” (corroboration authorities) and this may be as much a risk as a benefit, but I haven’t seen anybody suggesting anything better.

Really, the corroboration authority is the hardest part. After all, what is a “fact”? It sounds ridiculous to say this in the climate of “alternative facts” but they do actually change sometimes. Something like “There is one true God” was, and perhaps is in some circles still considered fact, as is “There is no God” in other circles. A great example of alternative facts, and “facts” that can “change” over time for scientific or cultural reasons. Huge numbers of past scientific facts are now invalid. So… truth seems to be a function of time on some level.

At least this would show up old content and education articles as stale which would be a bonus, even if you choose a corroboration authority that supports your particular world-view.

Video and images… now they are a separate problem. Maybe there is a similar approach that could be used with metadata in the video for various time regions, that use fact-ref equivalents and the video player or browser playing the video would have to apply all the above to it.

Native apps showing content… they’d have to incorporate it too. As long as HTML remains the primary source of such written content, that is not likely to be too bad, in that system browser components could be updated to show it.

I think over time people would value the “0 facts” indicator. People don’t like feeling like they may be being deceived.

They just don’t think about it much at the moment.

The Author

Marc Palmer (Twitter, Mastodon) is a consultant and software engineer specialising in Apple platforms. He currently works on the iOS team of Concepts sketching app, as well as his own apps like video subtitle app Captionista. He created the Flint open source framework. He can also do a pretty good job of designing app products. Don't ask him to draw anything, because that's really embarrassing. You can find out more here.