Oberon Object Tiler [2021]

Contributions are welcome! Please see CONTRIBUTING.md for guidelines, or open an issue for feature requests and bug reports.

When compared to its contemporaries, the Oberon Tiler was an outlier. The classic Mac OS and Windows championed overlapping windows as an intuitive metaphor for a physical desktop. The RISC OS had a more disciplined approach but still allowed overlap. Even UNIX environments like X11 with twm or fvwm defaulted to overlapping. Only specialized research systems like Plan 9’s rio window manager or the earlier Cedar system explored tiling, but none made it as central or as seamless as Oberon.

C++ backend version achieves ~5–10x speed improvement. Oberon Object Tiler

Despite its elegance, the Object Tiler was not without flaws. The strict tiling could be claustrophobic; there was no way to "minimize" a tile to an icon or temporarily float a dialog box. Some users found the automatic resizing disorienting, especially when opening a new viewer disrupted a carefully arranged layout. Furthermore, the lack of overlapping windows made certain types of spatial comparisons or drag-and-drop operations less intuitive. Finally, Oberon's text-centric nature meant that highly graphical applications—the very ones that would later dominate computing—were awkward to manage within the Tiler's rigid grid.

In the Oberon environment, objects (such as text editors, viewers, and other graphical components) are created and manipulated directly on the screen. As the number of objects increases, arranging them in a useful and aesthetically pleasing manner can become cumbersome. This is where the Oberon Object Tiler comes into play. Contributions are welcome

MODULE TestTiler; IMPORT Views, Containers; VAR main: Containers.Frame; BEGIN (* Initialize tiler with a root container *) main := Containers.New(); ... END TestTiler.

Overdraw (drawing the same pixel multiple times) is the enemy of mobile GPUs and high-framerate rendering. In a naive painter's algorithm, a background object draws a pixel, then a foreground object draws over it. With the Oberon Object Tiler, because per-tile sorting resolves depth early, the renderer can implement at the tile level. Objects that are entirely occluded are never even fetched from memory. The classic Mac OS and Windows championed overlapping

If you clicked on a graphic object, the Tiler recognized it as a graphic. If you clicked on text, it was text. This seamless integration meant that the rigid boundaries between "applications" dissolved. You didn't "open a Photoshop app" to edit an image; you simply navigated to the image object within your text document, and the system activated the tools associated with that object type.