A file implements interface .X
A file implements interface
if it has a direct child named
or the app referenced by its type implements the
Built-in apps and engines also implement some interfaces as defined in their documentation.
An absolute path
is a path that includes a domain component. It contains a list of filenames separated by slashes (
In object oriented programming, an accept rule would be called an interface. It is a set of methods a file has to implement to be accepted in a bucket.
For each file, accept rules define what files may be accepted in each of its buckets. A file's accept rules are stored in a file named
A Boomla account
is created by signing up on boomla.com
Usually, when a user's profile image or name is displayed, it is a link to the user's account website, which is the primary Boomla website of an account.
Active state of branch
The current snapshot of a branch.
In the context of Boomla, agent means the user agent, typically a browser, identified by an agent cookie. If the agent cookie is not returned in subsequent calls, the requests are considered to be coming from different agents.
An anonymous filesystem is a filesystem that is not bound to a domain. Even anonymous filesystems have a domain that can be used to print the absolute path of its files, but you can't use that domain from outside the anonymous filesystem to access it.
It is a temporary filesystem that only exists for the duration of a transaction.
An alternative way of thinking is that an anonymous filesystem is not mounted anywhere. As soon as you mount it to a non-anonymous filesystem, it will stop being both anonymous and temporary.
The anonymous toolchain is a frontend toolchain variant shown to agents that are not signed in to the Boomla Platform.
A visitor is said to be an Anonymous user when the visitor is not logged in onto the Boomla platform.
An app (application) is the Boomla equivalent of classes in object oriented programming. A user space app is implemented on top of Boomla, it is stored in a file.
An app instance is a file that's type points to an app. Similar to class instances in object oriented programming.
Application call stack
Applications may run other applications, forming an application call stack. It's similar to the stack in programming, except only application calls are added to the application call stack.
Application call stack level
Depth of the application call stack. Stack level
0 belongs to the original application call, level
1 to the next level, etc.
An attribute hash is the hash of a file's attributes.
Attribute size is the size of all file attributes after serializing. Data deduplication does not apply here.
File attributes are strongly typed. For example, they may be of type string or int32.
The authentication server is used by agents for single sign-on across the Boomla Platform.
Automatic package update
Packages can be updated manually or automatically as updates are released.
See: registration status.
Block editing mode
Block editing mode is an editing mode provided by the owner toolchain that enables file-level operations. Files on the page can be selected, copied, moved, deleted, created. One can open the contextmenu on files.
A body hash is the hash of a file's body.
Body size is the size of the file body after serializing. Data deduplication does not apply here.
The Boomla Cloud
is the managed Boomla service accessible via boomla.com
A branch is a line of development. The branch created first is the master branch while the rest are secondary branches. A new branch can be created by cloning an existing branch. Each branch is accessible on its individual domain. Unlike in Git, all branches are accessible simultaneously.
Files may contain other files. Children of a file are stored in one of 256 separate containers called buckets. These buckets are identified by their BucketIds, which range from
A built-in type is a file type that is recognized by the Boomla Platform. It may identify a built-in application, an engine, or have any special behavior attached.
Check out a commit
Start a new branch from a specific commit state.
A children hash is the hash of a file's children.
Children size is the storage space required for storing a file's children and their subtrees without data deduplication. Effectively, it's the sum of the children's file sizes plus a little overhead.
Clone a branch
Create a deep copy of a branch on a new domain, including its story.
Clone a website
Synonym for cloning a branch.
A collection is an ordered list of files, possibly with duplicates.
As a noun: a commit
is a saved version of a branch.
As a verb: commiting is the act of saving the current version of a branch.
The community domain
under which anyone can create websites for free.
An example domain for a website created under the community domain:
In the context of Boomla filesystems, compressed size is a synonym for deduplicated size.
A file is said to be a content if it implements the
The context menu is part of the frontend toolchain. It is a list of actions that can be triggered on a specific file, shown as a menu. It can be accessed in block editing mode by right-clicking a file on Windows or control-clicking on Mac.
If you have multiple copies of the same file, Boomla will figure this out and only actually store it once with multiple references. This is called data deduplication as the process "removes duplicates" from storage.
If we make 1000 copies of a 10MB image, we still end up with a deduplicated size of just over 10MB.
Deduplicated size is the storage space required for storing a file and its entire subtree on disk, with data deduplication applied. Data deduplication is automatically applied by Boomla.
The deduplicated size has to be individually calculated for files, thus you can't just look it up, it is an expensive operation.
The drop guide is shown during file placement operations (drag-and-drop, paste) to provide feedback about the placement. In particular, it highlights the target file and shows 3 placement directions: before, append, after. The color of the drop guide indicates whether the operation is allowed (typesafe) or not.
Any link that is not a static link is called a dynamic link. For example, path links do not mount another volume, simply point to another file by an internal path. The link may be broken, as the referenced file may not exist.
is a program that executes code written in a programming language. Used as a catch-all term for interpreters and virtual machines.
is an object for storing data, similar to the traditional concept of a file, with some differences:
- Boomla files may contain other files; there is no separate concept for directories.
- Boomla files are order and you can sort them.
- Boomla files can store structured data, so you can use the Boomla Filesystem as a database.
- Boomla files are typed; they have a dedicated type property instead of using file extensions.
- Boomla files have a link property which lets you create various file links.
File attributes are (key, value) pairs defined in user space. File attributes are strongly typed. One can store data in file attributes that one would traditionally store in database rows.
A file hash is the hash of a file including its entire subtree. The file hash identifies an exact version of the file and its subtree. Changing the file or any part of its subtree will result in a new file hash.
File is accepted
See: accept rules.
A file link is a pointer to another file.
- Depending on the link type, the link may be automatically followed for certain file operations. For other types, it may be followed as needed.
- The link property is ALWAYS accessed on the LINKING file.
- There are different kinds of file link types.
- File links are either static or dynamic.
- Some file link types are used to mount sub-volumes.
package example.com 01ed8bb7a8ad5500c8885da1575f77068d0777606d
The file panel is a panel on some variants of the frontend toolchain showing the filesystem tree of the current website.
File properties are system defined (key, value) pairs storing file metadata. Examples include the file link, type, title, status code, creation and modification times, etc.
is the storage space required for storing a file and its entire subtree without data deduplication
See compressed size for the actual space required for storing a file or a website.
Effectively, it's the sum of the file's:
- property size,
- attribute size,
- body size,
- children size,
- linked file size for static links,
- plus a little serialization overhead.
The file size adds up along the tree, thus it is easy to calculate.
File status code
File status code is a number stored in the status code property of files. A special case is
0, which indicates success, other status codes are used as in the HTTP specification. For example,
5xx status codes represent errors.
A file title
is a description of the file, which may be used for any purpose. It may contain almost any chars with some exceptions. The file's name may be generated from its title.
This is a file title! :)
The file type is a file property, holding a built-in type or an internal path to a file. Relative paths not starting with
.. are resolved relative to the
/sys/packages file. For example, the type
gallery.boomla.net/gallery would resolve to
A fileId is a unique identifier for a file within a filesystem. When a file is moved within the same volume, its fileId won't change.
Filename or file name
is a string uniquely identifying a file among its siblings. There are strict rules for its syntax. It's not part of the file, but its address: changing the file's name won't change its file hash. The domain of a branch is considered to be the root file's name.
Filenames usually match URL path segments.
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.
Filesystem scopes are used within packages to follow file links and types correctly.
Internal paths within a package shall be resolved relative to the package root. A filesystem scope specifies the root file to be used for such path resolutions. 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.
Follow a link
To follow a link is to get the linked file - if it exists.
The frontend toolchain
There are separate variants: Owner Toolchain, Visitor Toolchain, Anonymous Toolchain, IDE Toolchain.
In the context of Boomla, a hash
is a unique identifier of an object.
Hash change propagation
The hash of a file is calculated from its properties, attributes, body and children. If a file changes, it will cause the hash of its parent file to be recalculated and so on upwards in the tree. This is called hash change propagation.
is an Integrated Development Environment that is accessible at ide.boomla.com
. It can be used to edit and program Boomla websites. It includes a filesystem navigation tool and an editor for code, file properties and file attributes.
The IDE toolchain is a frontend toolchain variant shown on the IDE website.
Ignore filesystem scope
Some filesystem operations may ignore the filesystem scope
For example a package link that mounts a package filesystem establishes a new filesystem scope. Consequently, within the package, the root file refers to the package root. When ignoring the filesystem scope, the root file refers to the root of the outer filesystem.
Also, the parent file (
..) of a package root file does not exist when respecting the filesystem scope. It does exist when the filesystem scope is ignored.
Immutable means not mutable, or unchangeable. For example, Boomla filesystem snapshots (versions) are immutable. Whenever you "make a change" to a filesystem, in reality, a new filesystem is created - the previous snapshot (version) remains unchanged.
A web page may be divided into individual logical components. In Boomla, these components are usually stored in individual files. We can get the HTML code for each component by calling its inline method. The code is stored in a method file named
Installing a package
Installing the package
example.com creates the file
/sys/packages/example.com and mounts a clone of its filesystem to this file via a package link.
Integrity checking a filesystem is the act of validating all its data structures. If the integrity check passes, all data is accessible and intact, no single bit has been damaged.
An internal path is a local path or a relative path.
Boomla is a platform, it provides a Filesystem, an execution model, etc. Kernel space
refers to the platform. There are things kernel space code can do which is impossible in user space. For example, setting up a package link requires access to the package filesystem before it is mounted. That's only accessible in kernel space.
See also: user space.
The file link type
defines how Boomla treats links during file operations.
Available link types and their main properties:
||Static / Dynamic
Local Boomla instance
A local Boomla installation on a Boomla user's computer.
A local path
is a path relative to a filesystem root file. It does not include a domain component but starts with a slash ("/"). It contains a list of filenames separated by slashes (
is the user identity used for making changes to a filesystem.
Think of using a colored marker when writing on a paper. Each user has a different color. The colors on the paper identify the markers, which in turn identify the users who made those changes.
The master branch is the first branch of a project. It can not be removed.
In object oriented programming, there are classes and methods; in Boomla, there are apps and methods. These methods are stored in individual files called method files within the app files, and they are executed when the method is called on an app instance. For example, when a request hits a website, the
.Request method is executed on the requested file. System defined methods start with an uppercase letter after the dot, user defined methods start with a lowercase letter after the dot.
Mounting is linking another volume from a file so that the linked volume becomes accessible as its subtree.
Namespaced request parameter
HTTP request parameters may conflict if multiple components on a page expect identically named parameters. This can happen for example when there are 2 instances of the same type on a page. To avoid this, request parameters shall be namespaced. Namespacing works by adding a unique prefix to parameter names, so for example
param could become
n57B81 is the namespace.
The new panel is a panel on some variants of the frontend toolchain. It shows a collection of files that can be used as building blocks for a website.
Not registered user
See: registration status.
If a branch is open source then anyone can read and clone its filesystem.
The owner toolchain is a frontend toolchain variant shown to the owner of a website when logged in.
A package hash is the root hash of a package filesystem.
A package link is a file link mounting a package by its hash. The package link is a static link, it will become part of the website and remain there even if the original package website is removed.
package example.com 01ed8bb7a8ad5500c8885da1575f77068d0777606d
A package website is a website that is intended to be installed as a package.
A file is said to be a page if it implements the
is a string identifying a file in a filesystem. It may be one of:
- Absolute path
- Local path
- Relative path
A path link
is a reference to another file by an internal path. It is not automatically followed. Its only purpose is documenting the relationship between the two files. The path link is a dynamic link.
See: registration status.
A placeholder is a drop zone on the user interface that is routing dropped files to a specific bucket on the filesystem.
When creating, copying or moving files, one has to instruct Boomla how to position the file relative to an existing file. The placement direction is one of
The playground website is a special website that is created (on demand) for each Boomla account to try things. Its state can be easily reset. Do not store important data on it.
The Posix bridge
is a 2-way mapping between the Boomla filesystem and Posix filesystems. Posix filesystems in this context include Windows filesystems.
The Posix bridge allows one to use programs that understand Posix filesystems to manipulate Boomla files.
If a branch is private
, only its owner and white-listed users have access to it.
Note that white-listed users still don't have filesystem level access, unless explicitly granted by the owner.
Synonym for private branch.
A project is a collection of branches.
A property file is a JSON file on the posix side of the posix bridge, suffixed with
~.json. It stores file properties and attributes.
If a branch is public, everyone can visit the website stored on the branch.
Synonym for public branch.
A query string
is an expression used to find matching files.
Redo chain is the opposite of the undo chain used to implement undo/redo functionality.
Registering to a Boomla website
Using one's Boomla account to access another Boomla account's website and create a user on it.
The registration acceptance
mode of a website may be invite only
, or open
- Invite only means only the website owner may initiate the registration of a user.
- Approve means anyone can initiate a registration, but the website owner must approve it.
- Open means anyone can initiate a registration, and it will be automatically approved.
If you have a Boomla account and you are logged in on the Boomla platform, and you visit a website, you may show as one of:
- a not registered user until you initiate a registration,
- a pending user until your registration request is accepted or denied,
- an active user after your registration request is approved,
- a removed user if either you or the website owner removed your registration,
- a banned user if you got banned.
The website can only see your actual identity while you are an active user of the website. A removed user can register again, a banned user can not.
A relative path
is a path relative to any file on a filesystem. It contains a list of filenames, self (
) and parent (
) selectors separated by slashes (
). It starts with either a filename,
See: registration status.
The request file is a file holding the input data when executing a method. It is the root file of an anonymous filesystem.
The request method is executed when a HTTP request hits a website. The target file is located by the request path, then its method file named
.Request is located on its type chain and executed.
Reserved filenames are system filenames white-listed for specific uses. For example, the filename
.Request is reserved for request method files.
The response file is a file that shall be filled with output data during the execution of a method. It is the root file of an anonymous filesystem.
Response status code
Response status code
is used for both the HTTP response status code and the status code property of the response file.
The status code property of the response file is used as the HTTP status code, with one exception
0 is treated as success and thus a HTTP response status code of
200 is returned to the visitor.
A root file is the top-most file of a volume or filesystem.
The root filesystem is the top level filesystem of a branch (website).
A root hash is the file hash of a root file. Either a filesystem root file, or a volume root file.
A root volume is the top-most volume of a filesystem.
The save button is a button on the toolbar which can be used save textual changes in text editing mode.
A secondary branch
is a branch which is not the master branch. Secondary branches are typically holding in-progress modifications which will be eventually merged back into the master branch.
Secondary branches are accessible on subdomains of the master branch. For example, if the master branch is at
example.com, a secondary branch could be at
The sidebar on some variants of the frontend toolchain.
A simple volume is a volume linked via a
A snapshot is a specific version of a filesystem or volume. Snapshots are immutable, identified by a hash.
The source file is the file holding the source code that is being executed.
A static link
mounts another volume by its hash. The mounted volume is part of the filesystem and the link can not break.
Modifying a statically mounted volume causes hash change propagation in the linking volume.
The story is a list of all commits in a branch. It's similar to an immutable version history, except the story can be edited later, thus it can not rightfully be called "history". For example, you can free up space by deleting unnecessary commits from it.
A subtree is a file with all its descendants, crossing volume boundaries.
Subtree size is a synonym for file size, with added emphasis on the fact that it includes the size of its entire subtree.
System filenames are filenames starting with a dot followed by an uppercase letter, for example
.Request. System filenames can only be used if they are among the reserved filenames.
System user, System account
Automated changes like system updates are performed by the System account.
Text editing mode
Text editing mode is an editing mode provided by the owner toolchain that enables text editing on the entire web page. It depends on the used apps whether they support this editing experience or not. Text changes need to be saved by the save button.
A website that is intended to be used as a tool, that is, to be used to make changes to another website. For example, an image editor could be a tool you use for editing images on your website.
The Boomla toolbar that shows up on top of Boomla websites. It is part of the frontend toolchain.
A transaction is a unit of work performed by Boomla. Changes made within a transaction are invisible until the transaction is commited.
Every request creates a new transaction. A transaction may start any number of child transactions. A request thus builds up a tree of transactions.
A link is said to be a transparent link if it lets you transparently read and write the linked file's data except the following:
- file hash,
- subtree size,
The rest are accessed on the LINKED file:
- status code,
- created, createdBy,
- modified, modifiedBy,
- subtreeModified, subtreeModifiedBy.
For example, a
volume link is a transparent link, while a
path link is not.
The type chain of a file is the collection of files you encounter by recursively following a file's type property. All type chains must end in a built-in type. The type chain of a file includes the file itself.
The placement of a file in a specific bucket is typesafe if the file is accepted in that bucket.
Every change made to a website (branch) generates a new snapshot. The previous snapshot is added to a list called the undo chain. Hitting undo restores the last snapshot of the undo chain. The length of the undo chain is limited.
A Boomla user
is created when you register on a Boomla website with your Boomla account. All branches of a project share the same set of users.
Effectively a Boomla user is a Boomla account in the context of a Boomla project.
Sometimes Boomla user is used to refer to a Boomla account.
Boomla is a platform, it provides a Filesystem, an execution model, etc. User space means built on top of that platform, using the provided APIs.
See also: kernel space.
In the context of Boomla, a visit is identified by a visit cookie. A visit is created when an agent is visiting a Boomla website.
The visitor toolchain is a frontend toolchain variant shown to agents that are signed in to the Boomla platform but are not registered on the visited website.
A volume is a tree of files. Two files are on the same volume if you can reach one from the other without following file links. Volumes may be nested via file links.
A volume hash is the root hash of a volume.
A volume link
mounts a volume with no special properties except for being a separate fileNodeId space. It is a transparent, static link.
The attached volume is also called a simple volume.
A website is a collection of resources - HTML pages, images, etc. In Boomla, a project branch typically contains a website.
Refers to the directory outside the Boomla platform, on the host OS, that contains the local Boomla instance. It contains a
.boomla directory among other things.