The purpose of this page is to present definitions for technical jargon and explanations around related technologies. The intended audiences are people who might not be familiar with development tools and methods nor our unique requirements when working on items like about.gitlab.com.
A layout is a container where elements can be placed. A layout definition often contains default styles, a document grid, a container for the navigation, a container for the footer, and a schema for page options.
Example: A single column layout on a 1200px wide grid with options for SEO configuration.
Related terms: components, fragments, boxes, blocks, organisms, includes, partials.
Example: A gated content form.
Related terms: components
An atom is the smallest reuseable element.
Examples: a button.
Related terms: fragments, includes, partials
A molecule is conceptually similar to a module, except it's often quite a bit smaller. A molecule combines atoms into a small item with a singular purpose.
Example: A search box is made up of a text input atom and a submit button atom.
Molecules and modules differ mostly in size and purpose. The singular purpose of a module might be to get someone to sign up for a newsletter. This might include a description, a title, some graphics, margins, padding, and other elements. The singular purpose of an atom would be to gather the email in a text input and submit that with a button. A molecule often lacks the context that a module has.
A template is a data-driven reuseable configuration used by certain types of content. A template consists of a layout, a set of modules, a configuration for the modules, and a configuration for the page options.
Example: all blog posts are generated by a template.
A CMS (content management system) is used to manage the creation and modification of digital content. Usually a CMS has
A headless CMS is a CMS that abstracts the business logic away from the display logic, usually via two or more separate interfaces. A content editor doesn't need to interact with the programming and a programmer doesn't need to interact with the content. In a non-headless CMS the two interfaces are intertwined.
Also referred to as SSG (static site generation/generator)
A static web page is delivered to the user's web browser exactly as stored, in contrast to dynamic web pages which are generated on-the-fly by a web application after an end-user request for something such as data modification.
Continuous integration means any time a change is merged into a revision controlled branch, it is automatically released live. This is in contrast to a manual release process. This automatic release is dependent upon several additional processes and numerous other parts of the puzzle such as operating system, networking, and server technologies.
A pipeline is a group of tasks that need to be completed in a certain order. Before X can happen, Y also needs to happen. That would be an example of a singular pipeline. Another pipeline can be processed in parallel, assuming that it doesn't need X or Y to happen first. If pipeline A needs Z to happen first, it can be done in the same pipeline as Z or in as a second pipeline that starts after Z.
In order for a build to succeed, we need to ensure the components aren't broken. This means that automated tests have to pass before a build can start. That said, there are also unforeseen circumstances which can cause a build can fail regardless of testing.
Note that automated tests can happen at any time before, during, or after a build or deployment.
Once an item is merged and automation passes, the related code needs to build an application to release to the server. This might be a SSG, it might be a CMS, it might be updates to the server or operating system, or some combination of those things, it could be anything really.
Build times depend on the number of items being changed, how they're being changed, how many things are cached, how many third parties are being polled for resources, how quickly the third parties respond, and how many cloud resources are available.
A build must be deployed to a location, either for testing or for live release.
Deployment times depend on the amount of data being deployed, the data transfer speeds, and the number of deployment destinations.
Just because a build is deployed doesn't mean it's live. Other processes might need to happen. Examples of this include:
An end-user's web-browser is responsible for client-side tasks. Once a server delivers a document to the end-user, it's up to their computer to modify the document on their computer. Alternately they can make a request for the server to modify the document for them server-side.
Anything not done on an end-user's computer often needs to be processed by an invisible web-server. Once processed the server sends a new version of the page to the end-user or routes them to a new location.
A CDN, or content delivery network, is a way to facilitate speedy delivery of applications and resources to someone who might be far away from a server. A CDN caches a local copy of the webpages closer to the physical location of the end-user requesting those pages.
A monorepo (short for mono-repository) uses a single location to store the code of many different projects. It's similar to living in a condominium complex where you can share benefits and responsibilities among several families versus living in separate houses in the countryside and being responsible for everything on your own (20 lawn mowers vs 1 lawn mower, etc).