Files contain buckets which may contain other files. You can ignore buckets and access the all the children files of the parent directly, or you can access all the children within a single bucket.
Buckets are defined by apps. Each instance of the app automatically contains all defined buckets. You may also place a file into a bucket without defining it first. In this case the bucket will be used but not defined - it will be an undefined bucket.
Apps may define what methods a file needs to implement in order to be placed into a bucket. Such rules can be circumvented for now.
.Inline
interface.Each website (branch) contains a Static Filesystem and a Dynamic Filesystem. The Dynamic filesystem is used to store unsupervised data, for example collaborative data and logs. Data on the Dynamic Filesystem is typically created in the production environment.
It contains linear, sequential changes.
path /gallery/smile.jpg
package example.com 01ed8bb7a8ad5500c8885da1575f77068d0777606d
volume
scope
dynamic
.
or ..
are resolved relative to the /sys/packages
file. For example, the type gallery.boomla.net/gallery
would resolve to /sys/packages/gallery.boomla.net/gallery
.A fileNodeId is a unique identifier for a file within a volume. When a file is moved within the same volume, its fileNodeId won't change.
A filesystem is a tree of one or more volumes.
The filesystem interface version defines the filesystem schema and any additional behavior on how the Boomla OS shall treat the filesystem / website in context.
Each filesystem scope defines its own filesystem interface version.
The filesystem scope specifies the root file to be used for path resolution. Filesystem scopes are implicitly created by some of the file link types. Filesystem scopes always start at volume roots. A filesystem scope may be local or global.
Filesystem scopes are used within packages to resolve file links and file types correctly.
A hash-based link mounts another volume by its hash. The mounted volume is part of the filesystem and the link can not break.
Modifying a volume mounted via a hash-based link causes hash change propagation in the linking volume.
File links are either hash-based or location-based.
The IDE is an Integrated Development Environment which can be installed on any Boomla website as a package. It provides a filesystem navigation tool and an editor for code, file properties and file attributes.
..
) of a package root file does not exist when respecting the filesystem scope. It does exist when the filesystem scope is ignored.Link type | Address type | Transparent | Filesystem scope | Mounts volume |
package |
hash-based | yes | yes | yes, read-only |
scope |
hash-based | yes | yes | yes, read/write |
volume |
hash-based | yes | no | yes, read/write |
dynamic |
location-based | yes | no | yes, read/write |
path |
location-based | no | no | no |
A location-based link is a reference to another file by its path or other means. The link may be broken as the referenced file may or may not exist.
File links are either hash-based or location-based.
.Page
interface.prepend
, append
, before
or after
.The Posix bridge is a 2-way mapping between the Boomla filesystem and Posix filesystems. Posix filesystems in this context include Windows, Mac and Linux filesystems.
The Posix bridge allows one to use programs that understand Posix filesystems to manipulate Boomla files.
~.json
. It stores file properties and attributes..Request
is reserved for request method files.Each website (branch) contains a Static Filesystem and a Dynamic Filesystem. The Static filesystem is used to store supervised data, for example the website's codebase, pages and blog posts. Data on the Static Filesystem is often version controlled and requires non-linear development (branching, merging). It is a trusted storage area that is read-only in the production environment.
.Request
. System filenames can only be used if they are among the reserved filenames.volume
link is a transparent link, while a path
link is not.