ScalaScript
ScalaScript is the proprietary, event-driven scripting language underlying Scala Inc.'s digital signage authoring tools - a non-procedural format for describing pages, elements, and playback logic rather than a general-purpose programming language
Created by Scala Inc. (originally Digital Vision AS/Scala, Norway; later Scala Inc., Exton, Pennsylvania)
ScalaScript is not a general-purpose programming language in the usual sense - it is the proprietary scripting format that Scala Inc.’s digital signage authoring software uses to save and play back a “show.” When someone builds a slideshow, menu board, or interactive kiosk display in Scala InfoChannel Designer (later renamed Scala Designer), what gets written to disk is a .sca ScalaScript file: a textual description of an object tree of pages, media elements, groups, and events, which the Scala Player reads back and executes. Almost nobody sits down to write ScalaScript from scratch; it exists primarily as the format Designer’s graphical authoring tools generate, with hand-editing reserved for advanced users who need capabilities the point-and-click interface doesn’t expose.
History and Origins
Scala’s roots go back to 1987, when Jon Bøhmer founded Digital Vision AS in Norway, releasing InfoChannel 0.97L for the Commodore Amiga the following year as a video titling and slideshow tool for hotels and cable television systems. The company renamed itself Scala in 1990 and, after the mid-1990s collapse of Commodore and Escom, moved its product line to the MS-DOS/Windows/x86 platform.
The ScalaScript language format specifically underlies Scala InfoChannel Designer, the Windows authoring tool the company’s own retrospectives place at approximately 1999. By the time Scala announced Release 7.3 of the InfoChannel 3 product line in October 2004, the ScalaScript-based authoring format was already a mature, multi-release commercial product used to build and distribute content to networked players. InfoChannel 5 followed in 2006, and in 2008-2009 Scala retired the InfoChannel brand entirely in favor of “Scala5,” restructuring the suite into Designer (authoring), Content Manager (distribution), and Player (playback) - with ScalaScript continuing, unchanged in its basic role, as Designer’s native save format. Scala Enterprise, launched in 2013, added HTML5 and Android player support and new web-service APIs for Content Manager, but Designer still produces ScalaScript underneath.
Scala eventually documented the language properly: by the time of Designer 11.04 in 2017, the company’s online documentation wiki (docs.scala.com) included a dedicated reference, “The ScalaScript Language,” walking through its lexical rules, script structure, event model, and built-in commands, functions, and variables. In 2019, developer Peter Cherna published the first (and so far only) independent tooling for the language - a Visual Studio Code extension for ScalaScript syntax highlighting - explicitly noting he was “not affiliated with scala.com.”
Design Philosophy
Scala’s own documentation is unusually direct about what ScalaScript is not: “the ScalaScript language is not a traditional procedural (imperative) programming language.” A ScalaScript file doesn’t execute top to bottom like a Basic or C program; instead, it describes an object hierarchy - pages, groups, sequences, and events - that the Scala Player traverses, invoking methods on the described objects as playback proceeds. This reflects ScalaScript’s origin as a save format for a GUI authoring tool rather than a language designed for programmers to write directly: its core job is to faithfully represent whatever a non-programmer assembled by dragging pictures, video clips, and text onto a page in Designer.
Where the language does resemble conventional programming is at its edges. Its lexical and comment conventions are borrowed straight from C (// line comments and /* ... */ block comments), and it supports branching between named, labeled blocks via Goto() (which transfers the main execution flow) and Use() (which calls a labeled block as a subroutine without disturbing the calling sequence). For genuinely complex logic beyond what ScalaScript’s own commands support, Scala explicitly hands off to standard Windows scripting engines - VBScript, JavaScript, or Python - callable from within a script, rather than trying to grow ScalaScript itself into a full procedural language.
Key Features
- Object-tree scripts: a ScalaScript file begins with a mandatory
!ScalaScriptidentifier and a main block ({ ... }); the whole document represents a saved object hierarchy rather than a sequential program - Group and Sequence lists: pages are built from a
Group:list (elements playing together) and aSequence:list (a script’s overall page order), the structural backbone highlighted by the language’s syntax tooling - Typed variables: seven variable kinds - Text, Boolean, Integer, Real, Filename, Script, and Resource - each with its own scope (Local, External, or Template) and presentation options for Content Manager’s message-creation UI
- Labeled events and branching: named blocks can be targeted by
Goto()for a full flow transfer orUse()for a subroutine-style call that returns control to the original sequence - Asynchronous notification handling:
OnNotification()lets a script react to a variable changing value (including system variables likeTiming.Secondsor device/player metadata) without interrupting the script’s normal playback sequence - Interoperability with Windows scripting: scripts can invoke VBScript, JavaScript, or Python (via WinScript) for logic beyond ScalaScript’s own command set, and can connect to Flash clips and HTML5 web clips
- Compiled distribution format: an editable
.scaScalaScript source file can be published as a.scbfile, which is not directly editable and may be password-protected
Current Relevance
ScalaScript is not an independent open-source project with its own release cadence; it is inseparable from Scala Inc.’s commercial digital signage product, which remains actively sold and updated (Designer 11.x, with vendor documentation current through 2017-2018). In that sense it is “dormant” only from the perspective of the wider programming-language world: there is no public language specification outside Scala’s own product wiki, no independent compiler or interpreter, and essentially no community beyond Scala’s own customer base and integrators. The one piece of outside interest is Peter Cherna’s 2019 Visual Studio Code syntax-highlighting extension, built and maintained independently of Scala Inc.
Why It Matters
ScalaScript is a useful reminder that not every “programming language” in wide practical use was ever meant to be written by programmers. It exists to make a GUI authoring tool’s internal object model durable and shareable - readable by other copies of the same software, editable in a pinch by an advanced user, and portable between the authoring station and the deployed player - rather than to give humans an expressive general-purpose language. Its explicit hand-off to VBScript, JavaScript, and Python for anything beyond its own event and branching model shows a design philosophy common to embedded scripting layers inside commercial software: do the narrow domain-specific job (here, describing digital signage pages and playback events) well, and borrow a real scripting language for everything else.
Timeline
Notable Uses & Legacy
Scala InfoChannel / Designer digital signage authoring
Every project built in Scala's InfoChannel Designer and its successor Scala Designer is saved as a ScalaScript (.sca) file describing the show's pages, media elements, and playback events, whether or not the author ever opens the file directly
KIA Motors Northern Asia dealership network
A cited Scala case study in which all of KIA Motors Northern Asia's dealerships deployed Scala's digital communication platform to support the automaker's "Red Cube" brand identity, with dealership content authored and scripted through Designer
Quick-service restaurant digital menu boards
Scala markets ScalaScript-driven Designer content for dynamic digital menu boards, kitchen-display, and order-pickup signage in quick-service restaurants, cafes, and convenience stores
Retail, banking, and transit signage networks
Scala positions its Designer/Content Manager/Player stack - and therefore ScalaScript as the underlying script format - for large-scale digital signage in retail stores, bank branches, and transport hubs