Project Overview

Short Description

Finili is a programming language for simple transformations of data.

Status

Design discussions and research are underway, with a formal design process expected to start around January 2011. Current work focuses on collecting a broad, representative set of use cases for using a programming language for simple transformations.

Products
  • A programming language, “Finili,” for describing simple transformations of data. Examples of transformations:
    • Converting an image file from one file format to another.
    • Removing the hue information from a video stream.
    • Computing new variables in a table of data.
    • Upsampling or downsampling an audio stream.
    • Converting a legacy Cobol file to an XML file.
    • Displaying a data table as a graph.
  • A scripting language, “Finscript,” that applies transformations to files. This might also be a component of the Finili language.
  • A runtime environment (RTE) that manages the data files and program files of a Finili project.
  • File formats for use within Finili projects.
  • The ability to add on programs for common tasks, such as converting from and to specific file formats.
  • Documentation for the Finili language and runtime environment.
  • Training materials for the Finili language.
  • Practical demonstrations of the Finili language.

Process and Quality Objectives
  • A newly constructed language that is designed to be easy to teach and easy to read for the narrowly defined purpose of simple transformations of data.
  • A degree of compatibility with the data objects and naming conventions of existing software and standards, including XML, HTML, SQL, relational databases, C, Max, R, and OpenOffice.org.
  • A programming language that can be constructed in both plain text and XML formats, and losslessly converted between the two formats.
  • A streamlined and relatively strict syntax so that the reader or programmer is not responsible for learning many alternate ways of expressing the same actions.
  • Interfaces to appropriate scripting languages, including AppleScript.
  • A project structure that works as a security zone, with limited ability to access files outside of the project directories from within a program.
  • Robust visualization for a running program in the runtime environment.
  • The ability to run on a range of computer platforms, and in foreground or background environments.
  • A clean-room approach to coding to minimize the risk of outside code being copied into the code base. This objective would seem to preclude anonymous code contributions.
  • A public approach to design, so that design ideas and suggestions can be contributed anonymously.