This document is a user's guide and reference manual for Quine libraries. Please read a little about history below to learn about the problem domain for which the libraries were written. The individual libraries' pages provide even more history, background, use-cases and "war stories". Use the navigation bar to the left to navigate between the different topics.
The source code is available at GitHub (QuineFlows).
Quine AS was a startup founded by me (Stian Z. Vrba) and two other co-founders late in 2017 and dissolved mid 2024. We automated manual workflows in movie and series productions, but the solution was a hard sell due to a combination of technical, market and - not the least - social factors. I have been the main architect and developer at Quine and in this repository I have placed the most general-purpose code that I hope others will find a use for. I wrote this documentation as a hobby project to make it easier to study and possibly get started with using the code.
The company's name was borrowed from logician Willard Van Orman Quine. We also (briefly) considered to be brutally honest and name the company "Bug Factory" because all software has bugs somwehere.
In these pages, I present fragments of the company's history from my POV, as the main architect, data-model designer and back-end developer; the other co-founders might present a different view. Because I focus here on technical matters relevant for the released code, I strongly believe that the presented pieces are non-controversial.
We started with "QuineBox", a customized Intel NUC attached to camera, that could upload edit proxies immediately after the recording was finished. It did this by capturing the camera's SDI stream and encoding it to prores or H.264 in real-time. (A side-note: QuineBox ran on embedded Windows edition.) This could have been a great improvement over the "usual" workflows, where recordings are offloaded to "orange disks" and sent to editors by train, taxi or such. (We invented "camera to cloud" before it became an established term!) Unfortunately, QuineBox had some critical problems -- mostly around network connectivity and manufacturing costs -- which forced us to abandon it and focus on a production asset management system (PAM).
Q: Users of QuineBox wondered why uploads to FTP servers on public internet "just worked", but were troublesome towards FTP servers on the local network. A: Because internet is maintained by people who have a clue about networking. (Hard truth that we never told to our users.)
Our PAM system was to be the 3rd step in the evolution of media productions:
Analog recording devices (film reels, audio tapes), manual workflows.
Digital recording devices, manual workflows (assets tracked in Excel, often printed sheets).
Digital recording devices, digital and automated workflows (assets tracked in a searchable database).
After switching our focus to PAM, we developed QuineIngest (QI), an application which automated a number of tasks: secure copying, transcoding, uploading to cloud for sharing, automation triggered by watch folders, etc. The libraries in this repository have been pulled out from QuineIngest and prepared for stand-alone use.
QI was also accompanied by a web application that allowed users to browse and play clips, while editors could make a selection and export a ready-to-edit project for Adobe Premiere or AVID. Shortly before we shut down, the web application also got a feature for automatic transcription (speech-to-text) of recorded material. I did not have much involvement in these segments.
Other areas which I have been involved with are programmatic Azure deployments, authentication and security (based on AzureAD (now EntraId) groups), program licensing and activation. These parts are currently of the scope of the released libraries because they were tailored to QI and thus not very generic.
This section covers the files in the following directories:
Quine.FileTransfer
Quine.Schemas.Core
Quine.Schemas.Graph
Quine.Graph
Quine.FileWatcher
Quine.Samples
Copyright 2024, 2025 Stian Z. Vrba
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at here.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
The documentation (all content in docs branch) is licensed under CC BY-NC-ND 4.0 license.
Initial release.