Photo: staff photographer
Local
Example lead headline, set large across the top of the page
A short summary under the headline, written by the desk to tell the reader what happened and why it matters.
Newsroom publishing system
A publishing system we build and run for newsrooms: every story moves from the reporter to the reader through clear stages, and the pages stay fast when the news breaks.
Section AThe front page
The breaking banner, the lead story, the live blog, the opinion column and the correction under a story are all written, checked and published in the same place.
Breaking Example headline: a developing story, updated as it happens 09:42
Photo: staff photographer
Local
A short summary under the headline, written by the desk to tell the reader what happened and why it matters.
Opinion
Gallery
Video
Business
Correction An earlier version of this story gave the wrong date. It was corrected at 11:05
Section BThe workflow
A story never waits in someone's inbox. It sits in a stage, with a name on it, and it moves only when the person allowed to move it does.
Filed2
61Location
Correspondent
Writer
On the desk2
Editor
Desk editor
Ready3
Editor-in-chief
18:00
Publisher
06:00
Publisher
Live2
Publisher
Desk editor
Archive1
Section CRoles and permissions
Every account has a role, and every role has the rights its job needs and no more. A contributor can write; a contributor cannot publish.
| Role | File a story | Edit | Review | Approve | Schedule and publish | Correct after publishing |
|---|---|---|---|---|---|---|
| Correspondent / reporterFiles text, photos, video and the location from the field | Yes | Own stories only | No | No | No | No |
| Writer / editorWrites and edits stories for a section | Yes | Yes | No | No | No | No |
| Desk editor / copy editorReviews, tightens and checks every line | No | Yes | Yes | No | No | Yes |
| Editor-in-chiefApproves what the paper publishes | No | Yes | Yes | Yes | No | Yes |
| PublisherSchedules, publishes and places stories on the page | No | No | No | No | Yes | Yes |
| ContributorWrites for the paper from outside the newsroom | Own stories only | No | No | No | No | No |
YesOwn stories onlyNoThe defaults we start from. Each newsroom sets its own.
Who changed what, and when, is kept for every story: the headline before and after, the photo that was swapped, the minute it went live. Any two versions can be compared, and any earlier version restored.
History of one example story
Section DThe content
Each kind of story has its own form and its own page, and all of them share the same authors, sections, tags and workflow.
Headline, summary, body, photos and captions, with the author and the section.
Raised across the whole site from one switch, and taken down the same way.
Short timed updates on one page, newest first, from several reporters at once.
Photo stories with a caption and a credit on every picture.
Reports and clips with a poster frame, placed inside a story or on their own.
Set apart from the news, with the writer's name and picture.
Every writer has a page with a short biography and everything they have written.
Each story sits in one section and carries the tags that link it to others.
Chosen by the editor or found by tag, at the end of every article.
Right-to-left layout, Arabic type and dates built in from the start, with each story able to carry its translations.
Section EPublishing
A story goes out at the minute it was set for, and in the same moment it reaches the search engines, the feeds, the social networks and the readers' phones.
news-sitemap.xml
Stories from the last two days, listed the way Google News reads them, updated on every publish.
"@type": "NewsArticle"
Headline, author, dates, section and image marked up on every article, so search shows it as news.
/rss/section.xml
One feed for the whole paper and one for each section, for readers and for partners.
og:image · twitter:card
The picture, headline and summary a link shows when it is shared, set by the editor.
web push
Sent by the publisher to the readers who asked for them, never by accident: the story has to be live first.
There is no separate AMP copy to keep in step. The regular page is built to be light and fast, so one version of each story serves every reader.
Section FSpeed and infrastructure
When a big story breaks, readers arrive all at once. The system is built so that almost none of them wait for the database.
Publish or correct the story, its section and the front page are purged from the cache at once
CDN photos resized once to WebP and AVIF at the widths each screen needs
Nginx keeps each published page for a short moment and hands the same copy to every reader who asks in that moment. The reader gets a finished page; PHP and the database are not touched.
When the copy expires, one request is let through to rebuild it while everyone else is served the previous copy. However many readers arrive at once, the page is rebuilt once, not once for each of them.
fastcgi_cache_lock on; fastcgi_cache_use_stale updating;
The moment an editor publishes, updates or corrects a story, the cached copies of that story, its section and the front page are dropped, so the next reader sees the new version.
Editors work outside the cache, on PHP-FPM with Redis beside it. Because readers are served from the cache, a spike on the site does not slow down the people writing it.
Measured on our own servers
The rest of the time is the distance between our servers in Germany and you. That part depends on where you are, so measure it from your own connection.
Measure it from your connection
How many desks and languages you publish in, where your reporters file from, and what you run on today. We quote the system after one conversation about it.