@vpetersson At a glance ● Fully bootrapped (i.e. never took investment) ● Fully distributed since inception (i.e. we were remote before it was cool) ● Over a decade of remote ● Turns out to be helpful for open source projects too
@vpetersson Skarmverket AB ● Joint venture / acquisition ● Our first exposure to digital signage ● Small deployment (~10 screens) ● Horrible existing software ● Flash, Windows, RDP ● 30 days from acquisition to go-live and no software
@vpetersson Market due diligence ● Two "buckets" of signage solutions ● "Black boxes" and commercial (e.g. Brightsign etc) ● Hobbyist and open source (e.g. Xibo) ● Neither felt like a good fit
@vpetersson We can do better... ● Asus EeePC running Linux ● 3G Modem for connectivity ● Software glued together using Bash: ● mplayer ● ffmpeg ● cron ● rsync ● at ● puppet ● Total price per unit: ~$300
@vpetersson nerd trivia: `man at(1)` "at and batch read commands from standard input or a specified file which are to be executed at a later time." $ at 11:00 AM next fri warning: commands will be executed using /bin/sh at> /usr/local/bin/myscript.sh at> job 1 at Fri Apr 3 11:00:00 2020 $ atq 1 Fri Apr 3 11:00:00 2020 a root
@vpetersson nerd side-note: cellular modems *suck* ● USB 3G/4G Modems are unreliable ● Required multiple levels of "fallback" ● Sometimes required physical power cycle to recover (i.e. unplug/plug back in) ● Avoid consuming USB modems directly at any cost. ● Use a router. ● Positive note: Required me to refresh my Hayes commands (and minicom)
@vpetersson A perfect device for digital signage ● $35 price point (plus accessories) ● Low power draw ● Runs Linux ● Supports 1080p video playback ● h264 video support ● What's the catch?
@vpetersson Porting our player to the Raspberry Pi ● Turns out it wasn't that difficult ● Required some customization and optimization ● Most software were available
@vpetersson We hit it out of the ballpark ● We got a ton of interest ● Drove a lot of traffic ● One of the most popular forum threads on the Raspberry Pi Forum ● Screenly OSE is today the most popular digital signage project on Github ● Within weeks we had our first commercial request
@vpetersson How Screenly Pro came to be ● Screenly OSE was great for one screen, but... ● Users wanted to manage multiple screens from one interface ● Did not want to rely on community support channels ● Wanted a turn-key solution (e.g. automatic updates) ● Were happy to pay for it ● ...Allows us to spend money on OSE
@vpetersson Screenly Pro v1 ● Forked Screenly OSE with central management interface ● Device management was very rough ● Scaling was hard ● The technical debt from the early days became increasingly challenging to deal with ● Yet we managed to scale the system to support thousands of screens and build out a team
@vpetersson Screenly Pro v2 ● No shared code base with Screenly OSE or Screenly Pro v1 ● Incorporate lessons learned from v1 ● Don't re-invent the wheel - find partners ● Transactional (and automatic) updates ● Goals ● Commercially managed operating system ● "Unified" player with seamless playback ● Transitions between assets ● Locked down and secure ● Full hardware acceleration ● Full compositing / future proof
@vpetersson Open Source Community Learnings (1/2) ● Open source communities can be amazing ● Documentation is very important ● Try to lower the barrier for new developers ● Have good test coverage and automated tests ● KISS ● Successful open source projects require financial resources (or lots of your time) ● Take good care of your contributors
@vpetersson Open Source Community Learnings (2/2) ● Stick to popular languages and frameworks ● Content marketing is important ● Partners and integrations are important to drive engagement/users ● Don't assume new contributors are familiar with "modern" dev flows
@vpetersson Raspberry Pi Learnings ● SD cards *suck* ● Raspbian requires a fair amount of tweaking ● No, your old phone charger is not a sufficient power supply ● Lack of RTC can be painful at times
@vpetersson Notes about Raspberry Pi 4 Model B ● Was rushed out (IMHO) ● Still missing some drivers ● Some hardware issues ● We still haven't fully adopted it