Accessing the Filesystem

Browser: click IDE in your toolbar.

Windows: connect via SFTP.

Linux, OS X: we don’t know of any SFTP client that supports SFTP v5, so on Linux and Mac, your only option is the built-in IDE.

POSIX Filesystem Mapping

Although the Boomla filesystem is significantly different from that of Windows, OS X or Linux, it is critical that we can use our existing tools for editing our Boomla files. For that purpose, we need to map the Boomla filesystem onto our host operating systems. While the method to achieve it differs, it is practical to have the same mappings on all operating systems as they are similar enough.

From here on, I’ll call our usual filesystem a POSIX filesystem - Windows is not fully POSIX compatible, but I want to avoid confusing it with the Boomla filesystem.

Differences

Files & directories

The POSIX filesystem differentiates between files and directories. Boomla doesn’t. Thus you can not only store data in a file, it functions as a directory at the same time.

For the reason, when mapping Boomla on a POSIX filesystem, we will need to show a directory to let the user dig down, and a file for editing its data.

File attributes

The filesystem of Boomla is designed to function as a database as well. Just like you can store rows in a DB table, you can store files in other files. The columns of a DB table are mapped to file attributes. It is like a NoSQL database.

To access the file attributes, we will need to show an additional file on the POSIX layer.

File order

Boomla files are ordered. Typically, in a DB, you would find an order_ID field or similar, which is a pain. If you are like me, you don’t like looking up the order_ID of entry K so that you can update the order_ID of entry Q to appear before K. And then increment all order_ID’s from K onwards. Woohoo, lots of fun. In Boomla, when you move a file, you tell the system to move Q before K, period. But then we also need a file in every POSIX directory which stores the order of files.

So, when mapping a Boomla file to the POSIX layer, each file becomes:

  • a directory,
  • a file,
  • an attribute file,
  • and an order file if the file has children.

Example POSIX mapping

Note: you don’t see the order file here (named ..ORDER), as it is stored inside the hello.txt~ directory and only if it has children.

The 3 POSIX files above really behave as one file, because they are just a view on the underlying Boomla file. If you rename any one of them, the Boomla file will be renamed and so all 3 will be renamed on the POSIX layer. If you remove one of the POSIX files, the Boomla file will be deleted, so all 3 POSIX files will be gone. In fact, you can’t delete all 3, because by the time you want to delete the second one, it won’t exist any more!