Projects organise notebooks as modules within a package hierarchy, similar to that of a normal Python program. This allows the functionality of a large program to be split among several notebooks in a way familiar to most Python developers.
Ubiquitous Larch can be used to create live, interactive documents. You can create a project that contains a set of pages, that can hyperlink to eachother and can contain interactive, visual content; mix the best rich text, spreadsheet style computation, visuals and Python all in one.
Put Ubiquitous Larch on a server accessible to the internet and invite your friends to join. When you are all looking at the same document, you should all click the LIVE button on the top right to enable live updates. As a consequence, changes made to the code, or actions performed on interactive components generated by the Notebook will be seen by everyone.
You can develop your own Python-based collaborative GUIs with very little additional code (or no additional code at all in many cases) and share them with your collaborators simply and easily.
In addition to the standard text-based output (e.g.
stdout) that is familiar to Python
programmers, output may include:
User actions received by your output will generate events that can be handled by your code, in order to drive updates and add interactivity.
The Ubiquitous Larch programming environment is built from live Python objects; much like Smalltalk, the GUI is built from live objects whose visual presence updates in response to changes. You can inspect an interact with these objects through the GUI they display or with code.
Python objects can define rich, interactive presentations that can include text, GUI controls, and
diagrams (or anything else that the browser can produce)
by defining a
__present__ method; a rich visual equivalent of
in combination with type coercion makes defining a
visual, interactive presentation for an object as easy as writing it out.
The operation of Ubiquitous Larch can be likened to that of Smalltalk; you are interacting with a collection of live objects, whose visual representations update in response to state changes.