N9I - 4/1/2010

Written on Sun, 11 Apr 2010 17:42:40 +0000 - Last updated on Sun, 11 Apr 2010 17:47:11 +0000A journal entry in the development of the N9I programming language, dated April 1, 2010

Panthalassa

This note describes a language for building portable user interfaces. Panthalassa (abbreviated pants or P) is the codename for this language.

Goals

Panthalassa aims to be usable with any framework or platform. Where possible, Panthalassa will use the platform's existing widget toolkit to render controls, to minimize dependencies. Panthalassa will have the ability to define blocks of widget code as specific to a specific platform (Windows, Mac, iPhone, etc) or device type (desktop, phone, game console, etc). This allows one user interface item to have multiple appearances while providing equivalent functionality.

Inspiration

Panthalassa will mostly be heavily based off of Mozilla's XUL language, which has a similar purpose. As a declarative XML user interface language, Panthalassa is also similar to Adobe's MXML and Microsoft's XAML.

Event handling

As Panthalassa is platform- and programming-language-neutral, allowing the developer to insert program logic directly into Panthalassa files may not be a good idea (although it is being considered). The most neutral way to handle this, while preserving a seperation between logic and design, is for executing program code to create the Panthalassa UI object and attach event handlers to widgets from there. It may be possible, if the N9I compiler is used for Panthalassa too, to insert arbitrary N9I or NOX into a Panthalassa file. It may also be possible to insert code for specific languages in the UI file.

Name origin

Panthalassa is the name for the "world sea" that was said to surround the supercontinent Pangaea. The name of this UI language is a wordplay: Panthalassa was the global "sea", so the UI language is designed to create user interfaces that could be "seen" universally.

Pre-compiled or Interpreted?

The N9I language will be compiled. This is to ensure that the language can match the performance of native languages and that it can be used in environments where interpreters can't be used. In general, the same is true of Panthalassa. However, there is the possibility that some languages and frameworks may be able to execute Panthalassa markup directly and create a UI element programatically. This might be really useful for dynamic languages like Python or JavaScript.