by FT Labs,

The digital signage at the FT office in London is a big mixture of different technologies that have appeared over time. Standardising control over these screens using a centralised system would unlock lots of new use cases. What can we do with that?

Here’s an example of the ‘digital signage’ that you can see around the building:


Currently many of these are connected to local computers, or TV decoders, but there are a couple of linked systems with multiple screens on a central controller. In all we have about 80 screens in our 6 storey building. Those on linked systems are often powered by out of date tech that makes it hard to update content, and those hooked up to single computers are mostly ‘off grid’ so might be logged in with a single individual’s network credentials, giving only them the power to update it.

Ideally, anyone should be able to ‘walk up and use’ any screen, control it from any device, and not have to install anything to do that. The web will provide, we thought.

We worked with Chris Hall in the operations team and put together a list of use cases:

    • Promotional content for staff from the Communications team
      Video content, usually from YouTube or FT Video, to be displayed in common, walk-through areas, often with audio. Not time sensitive.
    • Company wide urgent alerts
      Major incident scenarios such as extreme weather, terror attacks, or major accidents close to the building may require staff to be given specific instructions, like to move to a safe zone. This is web content which should usually be displayed across the entire building and should appear immediately.
    • Streaming of major company events
      When we have an all-staff meeting that’s bigger than the largest available room, a live stream of the content should be fed to selected screens. Requires audio, ideally scheduled to start at the same time as the event
    • Divided layouts for dashboards
      Particularly in public areas of the building, it’s common to see screens with distinct regions displaying different content in each area of the screen
    • Carousels of dashboards for tech teams
      Software teams have the largest number of screens, and they typically use them for dashboards, often rotating through a number of different pages.
    • Notifications
      Commonly it’s useful to be able to push notifications to screens for a very short period at a specific time, eg to announce the start of an event, to post an announcement that everyone is waiting to hear, or more routine cases such as announcing what today’s menu is in the restaurant.
    • Event signage
      During complex multi-session, multi-track events, signs display content showing what the current session is in each room.

Later we realised that there was potential for further use cases if the screen control system were extended outside of the company – specifically in offering the ability for our business customers to display big-screen FT content on screens or video walls in their own office or venue.

Commercial solutions

There are lots of commercial digital signage solutions. The leader in the open source category seems to be Screenly, but we also looked at Concerto and Xibo. None seemed to support all our use cases – for example, solutions involving generated carousels are not really workable in cases of major incidents when the message telling you the building is on fire has to wait for its turn in the carousel. So to better analyse what a good solution looks like for us, we decided to build our own prototype.

Solution design

Our solution needed to be able to be utterly flexible in what it could display, so it was a no brainer to use a web browser as a client. This also allows the client to be easily updated – the page just has to refresh. We connected the client to the server with websockets, and built an admin tool to manage the screens and assign content to them.

Screens admin

Screens can be tagged, filtered into groups, content can be assigned to screens individually or in groups, and can be scheduled for some time in the future. We also remember stacks of content for each screen and when the top item expires, go down to the next item in the stack.

We made an early decision to separate content from distribution. There are lots of good tools you can use to produce web content, and tools like Splunk, Mixpanel, Dashing and Pingdom are already great at producing dashboards. YouTube and FT Video are great platforms we already have for encoding videos. So we avoided creating any new content tools.


But that does leave a gap for some very simple content generators where using a third party tool would seem like overkill, or where they don’t really exist. We made some generators to help non-developers produce these basic types of content easily:

      • Carousel: Take a set of URLs and create a new page that rotates between them in IFRAMES at specified intervals
      • Layout: Take a set of URLs and create a new page that organises them in a frameset-style layout
      • Ticker: Take a set of strings or an RSS feed URL and render a smoothly scrolling ticker
      • Markdown: Enter a simple message in Markdown and have it render as a big screen notice

Markdown generator

Generators help non-technical users produce simple content very quickly, and it can then be used anywhere, not just to put on the screens.


We investigated a range of options for the hardware we could use to power the screens:

      • Raspberry Pi is the obvious choice, but isn’t as easy as it seems: the ARM architecture makes for a more limited choice of browsers, the CPU is not powerful enough to drive full screen video in the browser, and it’s not as cheap as you might think – after you’ve bought a case, HDMI cable, USB power supply, SD card and wifi dongle there’s not much change from £70.
      • Asus and Google have a new product called the Chromebit that looks ideal: tiny form factor, boot to ChromeOS with full screen Chrome, built in wifi, all for around £75. Basically a Chromecast but… it actually has Chrome in it. Unfortunately it’s not shipping yet, but this looks promising for future hardware.
      • The Intel compute stick is like a larger, less elegant version of the Chromebit, but it does come with full Windows 8 crammed into the same basic form factor of a stick with an HDMI plug at the end. The main problem is that while it only has a single USB port it does require both a keyboard and a mouse to be plugged in for easy setup, so a hub or a keyboard with USB passthrough is really the only viable option.

We found the Compute stick to be the best system-on-a-stick option that we tried, and until the Chromebit is available, will probably be the best option for us.

“Walk up and use”

Being quite serious about the ‘Walk up and use’ thing, we implemented two ideas to make it happen. First, if there’s no content on the screen, it displays its own web address:

Unused screen

But what if the screen does have something on it? We also used some Physical Web beacons to allow screens to be discovered using Bluetooth. Screens local to you appear in the notifications area of your smartphone when bluetooth is enabled, and tapping the screen name or ID will take you to the admin tool, with that screen pre-selected enabling you to quickly allocate content to it.

Key issues

A solution involving a zero-install client turns out to be tricky due to same-origin restrictions that many websites now express via an X-Frame-Options header, which prevents them being loaded in an IFRAME. For a similar reason, code injection from a browser extension would not be completely reliable either, as that can be prevented from running with Content-Security-Policy.

There’s also always the possibility of the browser crashing, leaving the screen showing the OS desktop or an error dialog. We used Electron, the framework powering Github’s Atom editor, to create a standalone browser instance wrapper that could restart the browser process when it died.

Electron also turned out to be a useful way of solving another issue – going directly to full screen on boot.


This turns out to be a harder problem to solve than we thought, which is probably why people buy rather than build. That said, we’ve got a system that works, and is accessible to and usable by lots of people. It empowers many new people to interact with the screens and encourages more turnover of interesting content. Screens that had been gradually ignored can find new life as people discover they can control them easily.

Final note from Chris Hall:

The end product delivered, is a hybrid of all the commercially available systems, all of which were discounted quite early in the process. The available options proved either difficult to setup/use or were costly to have the same level of features. The Labs product delivers the ability to display anything a user wishes to display through a series of simple tools built into the system. The mainstay of this is the ability to create complex carousels of content to display for a fixed period of time, when the display cycles through to the item – whether that be a video, presentation, image or website. What makes this system truly clever is that is it will sit on a desktop, compute stick or indeed any device with a web browser.