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 page is a final or near-final product, a unique instance of something generated from a template. This page has an expected URL where it will be accessible in a live environment.
A template is a data-driven reuseable configuration used by certain types of content. A template consists of choosing a set of blocks, a configuration for the blocks, and a configuration for the page options.
Example: all blog posts are generated by the same template.
Related terms: layout.
Related terms: partials, includes, fragments, organisms, molecules.
Example: A gated content form.
Related terms: molecules, modules
A component is conceptually similar to a block, except it's often quite a bit smaller. A component combines elements into a small item with a singular purpose.
Example: A search box is made up of a text input element and a submit button element.
Components 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 component would be to gather the email in a text input and submit that with a button. A component often lacks the context that a module has.
Related terms: atoms
An element is the smallest reuseable thing.
Examples: a button.
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).