Five years ago today a half dozen students debuted “Concerto”, the home-grown digital signage system for RPI. Today we’re proud to announce the first beta release of Concerto 2, building a much more robust an extensible platform for open source signage of the future. To get started head over to our installation guide here.
When we first released Concerto 1 at RPI we had no immediate plans publicize the open source software powering it. None of us were quite sure if the project was going to take off past the 2 maiden screens on campus, never mind have a place outside our small collegiate community. We’ve been more than a bit surprised how well Concerto’s been received this far and are excited by all the interesting places screens have popped up.
If you’re looking at setting up a new digital signage system give Concerto 2 a try! We’re eager to hear any feedback and help with any problems that arise during the installation / setup process; let us know how it goes. Reading our past early preview posts [1, 2, 3] will share an overview of the features you can expect to find in Concerto 2.
For the Concerto 1 users, this beta release includes all the core functionality you’re familiar with in V1. Some of the more noticeable changes include a redesigned UI and workflow (the buttons are different, the nouns are the same), more granular authentication and authorization controls, and the notion of plugins so we can add support for additional content types to the system like RSS feeds, YouTube Videos, and more. Behind the scenes we rebuilt the system from scratch, trading PHP for Ruby on Rails.
Those who’ve been living on the bleeding edge with us through the rockier early preview releases should find all of the current show-stopping bugs fixed in this release. Everything that we knew about that was broken has been fixed and we made significant strides to achieve feature parity with the common V1 installation. We’ve added a clock to the frontend among other improvements, tossed in a weather plugin, and fixed some misbehaving user management pages. Thanks for all your help testing out the Early Preview releases!
Please get in touch with us via our group or issue tracker if you come across a bug or have a feature suggestion for us. You can find a full list of code changes for this “0.1.0.charliehorse” beta release here.
Concerto 2 has come a long way since we released the last update (0.0.2.alphamoose) back in December. Today we’re releasing the latest preview of Concerto 2, 0.0.3.bravochicken. This new build includes support for dynamic content, a fresh new content browsing UI, and dozens of backend improvements, bugfixes, and tweaks spread across over 230 commits!
To get started with the latest build of Concerto, check out our installation guide or view the 0.0.3.bravochicken tag directly. We’ve got virtual machine images, Debian/Ubuntu packages, and the regular old source code standing by to help get you up and running quickly.
Please note: this is an early software preview and a lot will still change from this version. The Concerto 2 Alpha is only for testing purposes and should NOT be used for actual deployments.
Concerto 2 introduces a plugin model to allow different types of Dynamic Content to be uploaded directly in the Add Content form letting you can setup an RSS feed in the same familiar place you would upload a new graphic. For now we’ve bundled Concerto 2 with plugins to support a very simple RSS display and YouTube video support. As we develop more plugins for the Concerto ecosystem administrators will be able to provide their users with a variety options when uploading content, hopefully with forms that don’t require you to serialize PHP arrays in your head. We’re going to devote a full blogpost to the nitty gritty details of dynamic content in the future, stay tuned for more on this front! If you’ve got a specific idea for a dynamic content source we should be keeping in mind open up an issue on Github.
Updated Content Browsing UI
We redesigned the core content browsing experience to provide a bigger window to show off the individual pieces of content in the system. For systems with lots of content, pagination lets users explore all the content in a large installation without an initial loading bottleneck. We also introduced some new filter controls let you rewind time to explore content of yesteryear or take a peak at what’s coming up in the future. If you’ve got Dynamic Content in the mix you’ll see Concerto 2 introduces stacks to collect all the content together under the it’s root.
Our first Early Preview release was shared with you back in late November. We quickly pushed out some updates in December’s release pushing Concerto 2 to to just about match the feature parity V1 provided. With this release we’ve tackled some of the harder challenges and limitations of Concerto 1 and I can safely speak for the rest of the team saying that we’re looking forward to sharing a stable beta release ready for testing in production environments quite soon.
After getting Concerto 2 up and running please send your feedback along to us (or send it along if you can’t get it up and running), we’ll be monitoring the Google Group closely for V2 related content and are keen to track down any bugs or unexpected behaviors that crop up.
Today we’re releasing an early tech preview of Concerto 2, bringing a fresh technology stack to the open source digital signage ecosystem that we’ve been cultivating for the better part of the past five years. Concerto 2 has been rewritten from the ground up, providing a stable platform we can use to solve some of the challenges we’ve run into with version 1 like the confusing setup process, limited system configurability, and lack of support for new content types like video. Over the next few weeks we’ll be releasing some of the new features Concerto 2 supports, starting today with the core stack.
This early preview release provides what we consider core Concerto functionality — the ability to upload content to feeds, have that content moderated by responsible parties, and then be displayed on screens subscribed to feeds. This build doesn’t include many of the long-touted features like video support or better dynamic content; we’re committed to releasing these soon but need to start gathering some feedback on the core experience first.
If you’re interested in taking a sneak peek at what we’re working on in Concerto 2, I encourage you to follow the setup process here to get started. Please note, Concerto 2 is still under heavy construction. This software should not be used in a production environment. It is also not backwards compatible with a V1 database, so we’ve included a tool with instructions to import your V1 data into V2.
We’re aware of a handful of outstanding issues with this early preview, but we’d love to start getting your feedback to start ironing out as many issues as possible in the scope of this release. Let us know what you think by posting your experience on the Google Group, or opening a bug on our Github Issue Tracker.
Note: Concerto 2 reports many production errors back to the development team using Airbrake by default. At the moment this is an opt-out service, you can turn it off in the Dashboard or by deleting Gemfile-reporting. We use this automatic reporting to help identify crashes and errors so we can fix them as quickly as possible. We’ll post a blog with a bit more information on this process soon.
If you’re curious about the technical details, the core of the frontend is a 5 layer cake. I can’t draw a picture of a cake, but I can describe it in words. At the bottom we have the Screen, which is really just used to encapsulate the whole process in one object and provide a standard connection interface to talk back to the Concerto server. On top of the Screen we draw a Template, which right now consists of a huge image background (perhaps it could be HTML-based in the future) and bunch of Positions. Each position represents one block on the screen, you see them in the backend when you’re previewing templates that show where your content will go. Positions have a location to be shown and some styles, but most importantly they have a Field. A field is where the Content ends up getting fetched, rendered, and transitioned into place. They do most of the heavy lifting after the initial HTML scaffolding is setup.
To recap: Screen > Template > Positions > Field > Content.
In Concerto 1 there isn’t really any sort of layered cake in use, it’s much more like a fruitcake. You can kind of see the different bits and pieces if you look really hard, but it’s mainly one big monolithic structure.
What does this mean besides a lot of extra files to manage when you’re working on the frontend? Well for starters it let me refactor the code base to support what we call “mini screens” in about 20 minutes. A mini screen is just that, a small screen that doesn’t take over the entire window. You can see one when you visit http://concerto.rpi.edu right on the homepage, but in V1 that shares a completely different codebase (with an included memory leak for IE users) than the actual screen frontend. Not so in Concerto 2, you can have a lot of screens on the same page without any additional work.
The Fall update to the Google TV brought the Android Market to Google TV devices, allowing developers to write and publish applications for some digital-signage sized screens. If you’re looking to run some digital signage on your Google TV you’re in luck, you can find a Concerto app in the Market today!
Concerto for the Google TV lets you configure and connect to a Concerto server, letting you specify a server URL and customize a MAC address as needed. If you’re interested in tweaking your server slightly, the device will also pass the current screen width and height as parameters in the initial URL. If you’re having trouble sizing the screen manually like traditional Concerto v1 screens, you can use these to automatically set the size of the screen so content will render appropriately.
Don’t have a Concerto server but still want to check out a Concerto player? The app comes pre-configured to connect to automagically connect to a demo server and pull in some dynamic content keeping the information fresh.