An open-source editor built for ITV News, used in hundreds of projects worldwide
madebymany.github.io/sir-trevor-jsITV News needed an editor that could keep up with newsrooms. Journalists were publishing diverse content (rich media, embeds, breaking updates) all under deadline pressure. The WYSIWYG editors of the time produced messy markup, fought against structured content, and made it nearly impossible to build flexible, multi-platform publishing workflows.
Working in collaboration with the ITV News editorial team, I designed and built a modular, block-based editing framework that solved these problems. It was later open-sourced and has been used in thousands of projects worldwide.
WYSIWYG couldn't keep pace
Newsrooms move fast. Journalists need to publish diverse content, rich media, embeds, and breaking updates, all under deadline pressure. The WYSIWYG editors of the time were built for a different era. They produced messy markup, fought against structured content, and made it nearly impossible to build flexible, multi-platform publishing workflows.
What we made
Sir Trevor is a modular, block-based editing framework. Instead of a single rich-text blob, content is composed from discrete blocks: text, images, video, embeds, quotes, each with its own structure and behaviour.
This made content portable. The same article could render differently on web, mobile, and syndication feeds because the underlying data was clean and structured, not a tangle of HTML.
We worked closely with journalists to get the interaction design right. The editor had to feel fast and stay out of the way. No friction, no fuss, just write and publish.
Open source and beyond
After launching at ITV News, we open-sourced Sir Trevor. The community ran with it:
- Ported to 7 different backend frameworks including Rails, Django, Node, and PHP
- Adopted across thousands of projects worldwide
- Became a reference point for the block-based editing pattern that later influenced tools like Gutenberg
Check out the repo at github.com/madebymany/sir-trevor-js.
