recursal/MDN huggingface dataset:
Prerender
=========

Prerendering refers to the practice of speculatively prefetching and *rendering* pages that the user is likely to navigate to in the near future (the browser renders the page in the background in what is effectively an invisible separate tab). Prerendering includes downloading a document's subresources and running associated JavaScript.

If the user then chooses to navigate to the page, display of its content can be near instant.

Prerendering might be used, for example, to fetch the page resources linked by a "Next" button, or a link popup that a user hovers over, or the likely page target of the URL being entered into the address bar. The following speculation rules could be included in the head of a document to hint to the browser that it should prerender `next.html` and `next2.html`, as either might reasonably be a target of the next navigation:


```html
<script type="speculationrules">
 {
 "prerender": [
 {
 "source": "list",
 "urls": ["next.html", "next2.html"]
 }
 ]
 }
</script>
```


Prerendering results in faster display time than prefetching and hence a better user experience, at the cost of more resources being consumed.

See also
--------

* Speculative loading
* prefetch
* Prerender pages in Chrome for instant page navigations on developer.chrome.com (2023)
* Speculation Rules API
ISP
===

An ISP (Internet Service Provider) sells Internet access, and sometimes email, web hosting, and voice over IP, either by a dial-up connection over a phone line (formerly more common), or through a broadband connection such as a cable modem or DSL service.

See also
--------

* How the Internet works (explanation for beginners)
* Internet service provider on Wikipedia
Bandwidth
=========

Bandwidth is the measure of how much information can pass through a data connection in a given amount of time. It is usually measured in multiples of bits-per-second (bps), for example megabits-per-second (Mbps) or gigabits-per-second (Gbps).

See also
--------

* Bandwidth on Wikipedia
NNTP
====

**NNTP** (Network News Transfer Protocol) is a protocol used to transfer Usenet messages from client to server or between servers.

See also
--------

* NNTP at Wikipedia
* From the IETF: RFC 3977 about NNTP (2006)
Fork
====

A fork is a copy of an existing software project at some point to add someone's own modifications to the project.

Basically, if the license of the original software allows, you can copy the code to develop your own version of it, with your own additions, which will be a "fork".

Forks are often seen in free and open source software development. This is now a more popular term thanks to contribution model using Git (and/or the GitHub platform).

See also
--------

* Fork on Wikipedia
* How to fork a GitHub repo (fork as in a Git context)
* Fork (Glossary)
* Various "well-known" forks
    + Linux distributions
    + Node.js and io.js (which have been merged together back)
    + LibreOffice, a fork of OpenOffice
Application Context
===================

An **application context** is a top-level browsing context that has a manifest applied to it.

If an application context is created as a result of the user agent being asked to navigate to a deep link, the user agent must immediately navigate to the deep link with replacement enabled. Otherwise, when the application context is created, the user agent must immediately navigate to the start URL with replacement enabled.

Please note that the start URL is not necessarily the value of the start\_url member: the user or user agent could have changed it when the application was added to home-screen or otherwise bookmarked.

See also
--------

* Progressive web apps (PWA)
* `scope`
Payload header
==============

A **payload header** is an HTTP header that describes the payload information related to safe transport and reconstruction of the original resource representation, from one or more messages. This includes information like the length of the message payload, which part of the resource is carried in this payload (for a multi-part message), any encoding applied for transport, message integrity checks, etc.

Payload headers may be present in both HTTP request and response messages (i.e. in any message that is carrying payload data).

The payload headers include: `Content-Length`, `Content-Range`, `Trailer`, and `Transfer-Encoding`.

See also
--------

* List of all HTTP headers
    + `Content-Length`
    + `Content-Range`
    + `Trailer`
    + `Transfer-Encoding`
    + Representation header
* RFC 7231, section 3.3: Payload semantics
Domain
======

A domain is an authority within the internet that controls its own resources. Its "domain name" is a way to address this authority as part of the hierarchy in a URL - usually the most memorable part of it, for instance a brand name.

A fully qualified domain name (FQDN) contains all necessary parts to look up this authority by name unambiguously using the DNS system of the internet.

For example, in "developer.mozilla.org":

1. "org" is called a top-level domain. They are registered as an internet standard by the IANA. Here, "org" means "organization" which is defined in a top-level *domain registry*.
2. "mozilla" is the domain. If you like to own a domain you have to register it with one of the many registrars who are allowed to do so with a top-level domain registry.
3. "developer" is a "sub-domain", something you as the owner of a domain may define yourself. Many owners choose to have a subdomain "www" to point to their World\_Wide\_Web resource, but that's not required (and has even fallen somewhat out of favor).
See also
--------

* Domain Name on Wikipedia
Representation header
=====================

A **representation header** is an HTTP header that describes the particular *representation* of the resource sent in an HTTP message body.

 Representations are different forms of a particular resource.
 For example, the same data might be formatted as a particular media type such as XML or JSON, localized to a particular written language or geographical region, and/or compressed or otherwise encoded for transmission.
 The underlying resource is the same in each case, but its representation is different.

Clients specify the formats that they prefer to be sent during content negotiation (using `Accept-*` headers), and the representation headers tell the client the format of the *selected representation* they actually received.

 Representation headers may be present in both HTTP request and response messages.
 If sent as a response to a `HEAD` request, they describe the body content that *would* be selected if the resource was actually requested.

Representation headers include: `Content-Type`, `Content-Encoding`, `Content-Language`, and `Content-Location`.

See also
--------

* RFC 9110, section 3.2: Representations
* List of all HTTP headers
* Payload header
* Entity header
* `Digest`/ `Want-Digest`
Flex Item
=========

The direct children of a Flex Container (elements with `display: flex` or `display: inline-flex` set on them) become **flex items**.

Continuous runs of text inside flex containers will also become flex items.

See also
--------

### Property reference

* `align-self`
* `flex-basis`
* `flex-grow`
* `flex-shrink`
* `order`
### Further reading

* CSS Flexbox Guide: *Basic Concepts of Flexbox*
* CSS Flexbox Guide: *Ordering flex items*
* CSS Flexbox Guide: *Controlling Ratios of flex items along the main axis*
Cryptography
============

**Cryptography**, or cryptology, is the science that studies how to encode and transmit messages securely. Cryptography designs and studies algorithms used to encode and decode messages in an insecure environment, and their applications.

More than just **data confidentiality**, cryptography also tackles **identification**, **authentication**, **non-repudiation**, and **data integrity**. Therefore it also studies usage of cryptographic methods in context, **cryptosystems**.

See also
--------

* Cryptography on Wikipedia
* MDN Web Docs Glossary
    + Block cipher mode of operation
    + Cipher
    + Ciphertext
    + Cipher suite
    + Cryptanalysis
    + Decryption
    + Encryption
    + Key
    + Plaintext
    + Public-key cryptography
    + Symmetric-key cryptography
Self-Executing Anonymous Function
=================================

A JavaScript function that runs as soon as it is defined. Also known as an IIFE (Immediately Invoked Function Expression).

See the IIFE glossary page linked above for more information.
UDP (User Datagram Protocol)
============================

**UDP** (User Datagram Protocol) is a long standing protocol used together with IP for sending data when transmission speed and efficiency matter more than security and reliability.

UDP uses a simple connectionless communication model with a minimum of protocol mechanism. UDP provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram. It has no handshaking dialogues, and thus exposes the user's program to any unreliability of the underlying network; There is no guarantee of delivery, ordering, or duplicate protection. If error-correction facilities are needed at the network interface level, an application may use the Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP) which are designed for this purpose.

UDP is suitable for purposes where error checking and correction are either not necessary or are performed in the application; UDP avoids the overhead of such processing in the protocol stack. Time-sensitive applications often use UDP because dropping packets is preferable to waiting for packets delayed due to retransmission, which may not be an option in a real-time system.

See also
--------

* User Datagram Protocol on Wikipedia
* Specification
First contentful paint
======================

**First Contentful Paint** (FCP) is when the browser renders the first bit of content from the DOM, providing the first feedback to the user that the page is actually loading. The question "Is it happening?" is "yes" when the first contentful paint completes.

*The First Contentful Paint* timestamp is when the browser first rendered any text, image (including background images), video, canvas that had been drawn into, or non-empty SVG. This excludes any content of iframes, but includes text with pending webfonts. This is the first time users could start consuming page content.

See also
--------

* First paint
* `PerformancePaintTiming`
* Largest Contentful Paint
* First meaningful paint
* First Contentful Paint at web.dev
Validator
=========

A validator is a program that checks for syntax errors in code. Validators can be created for any format or language, but in our context we speak of tools that check HTML, CSS, and XML.

See also
--------

* Validator on Wikipedia
* Short list of validators
Mozilla Firefox
===============

**Mozilla Firefox** is a free open-source browser whose development is overseen by the Mozilla Corporation. Firefox runs on Windows, OS X, Linux, and Android.

First released in November 2004, Firefox is completely customizable with themes, plug-ins, and add-ons. Firefox uses Gecko to render webpages, and implements both current and upcoming Web standards.

See also
--------

* Mozilla Firefox official website
* Firefox developer documentations on MDN
Cipher
======

In cryptography, a **cipher** is an algorithm that can encode Plaintext to make it unreadable, and to decode it back.

Ciphers were common long before the information age (e.g., substitution ciphers, transposition ciphers, and permutation ciphers), but none of them were cryptographically secure except for the one-time pad.

Modern ciphers are designed to withstand attacks discovered by a cryptanalyst. There is no guarantee that all attack methods have been discovered, but each algorithm is judged against known classes of attacks.

Ciphers operate two ways, either as block ciphers on successive blocks, or buffers, of data, or as stream ciphers on a continuous data flow (often of sound or video).

They also are classified according to how their keys are handled:

* symmetric key algorithms use the same key to encode and decode a message. The key also must be sent securely if the message is to stay confidential.
* asymmetric key algorithms use a different key for encryption and decryption.
See also
--------

* Cipher on Wikipedia
* Encryption and Decryption
* MDN Web Docs Glossary
    + Block cipher mode of operation
    + Cipher
    + Ciphertext
    + Cipher suite
    + Cryptanalysis
    + Cryptography
    + Decryption
    + Encryption
    + Key
    + Plaintext
    + Public-key cryptography
    + Symmetric-key cryptography
Accent
======

An **accent** is a typically bright color that contrasts with the more utilitarian background and foreground colors within a color scheme. These are present in the visual style of many platforms (though not all).

On the web, an accent is sometimes used in `<input>` elements for the active portion of the control, for instance, the background of a checked checkbox.

See also
--------

### CSS related to the accent

You can set the color of the accent for a given element by setting the element's CSS `accent-color` property to the appropriate `<color>` value.
Internationalization (i18n)
===========================

**Internationalization**, often shortened to "i18n", is the practice of designing a system in such a way that it can easily be adapted for different target audiences, that may vary in region, language, or culture.

The complementary process of adapting a system for a specific target audience is called Localization.

Among other things, internationalization covers adapting to differences in:

* writing systems
* units of measure (currency, °C/°F, km/miles, etc.)
* time and date formats
* keyboard layouts

The work of the Unicode Consortium is a fundamental part of internationalization. Unicode supports not only variations among the world's writing systems but also cultural variations such as currencies and time/date formats.

See also
--------

* Localization
* W3C Internationalization Activity
* Unicode Consortium
* JavaScript Internationalization API
Modem
=====

A modem ("**modulator-demodulator**") is a device that converts digital information to analog signals and vice versa, for sending data through networks.

Different kinds are used for different networks: DSL modems for telephone wires, Wi-Fi modems for short-range wireless radio signals, 3G modems for cellular data towers, and so on.

Modems are different from routers, but many companies sell modems combined with routers.

See also
--------

* Modem on Wikipedia
MIME type
=========

A **MIME type** (now properly called "media type", but also sometimes "content type") is a string sent along with a file indicating the type of the file (describing the content format, for example, a sound file might be labeled `audio/ogg`, or an image file `image/png`).

 It serves the same purpose as filename extensions traditionally do on Windows.
 The name originates from the MIME standard originally used in email.

See also
--------

* Internet media type on Wikipedia
* List of MIME types
* Properly Configuring Server MIME Types
* Details information about the usage of MIME Types in a Web context.
* Incomplete list of MIME types
* MediaRecorder.mimeType
Port
====

For a computer connected to a network with an IP address, a **port** is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.

For example, the default port for the HTTP protocol is 80 and the default port for the HTTPS protocol is 443, so a HTTP server waits for requests on those ports. Each Internet protocol is associated with a default port: SMTP (25), POP (110), IMAP (143), IRC (194), and so on.

See also
--------

* Port on Wikipedia
TLD
===

A TLD (*top-level domain*) is the most generic domain in the Internet's hierarchical DNS (domain name system). A TLD is the final component of a domain name, for example, "org" in `developer.mozilla.org`.

ICANN (Internet Corporation for Assigned Names and Numbers) designates organizations to manage each TLD. Depending on how strict an administrating organization might be, TLD often serves as a clue to the purpose, ownership, or nationality of a website.

 Consider an example Internet address: `https://developer.mozilla.org`
 Here org is the TLD; mozilla.org is the second-level domain name; and developer is a subdomain name. All together, these constitute a fully-qualified domain name; the addition of https:// makes this a complete URL.

IANA today distinguishes the following groups of top-level domains:

country-code top-level domains (ccTLD)

Two-character domains established for countries or territories. Example: *.us* for United States.

internationalized country code top-level domains (IDN ccTLD)

ccTLDs in non-Latin character sets (e.g., Arabic or Chinese).

generic top-level domains (gTLD)

Top-level domains with three or more characters.

unsponsored top-level domains

Domains that operate directly under policies established by ICANN processes for the global Internet community, for example "com" and "edu".

sponsored top-level domains (sTLD)

These domains are proposed and sponsored by private organizations that decide whether an applicant is eligible to use the TLD, based on community theme concepts.

infrastructure top-level domain

This group consists of one domain, the Address and Routing Parameter Area (ARPA).

See also
--------

* TLD on Wikipedia
* List of top-level domains
Head
====

The **Head** is the part of an HTML document that contains metadata about that document, such as author, description, and links to CSS or JavaScript files that should be applied to the HTML.

See also
--------

* `<head>` element reference on MDN
* The HTML <head> on the MDN Learning Area
Void element
============

A **void element** is an element in HTML that **cannot** have any child nodes (i.e., nested elements or text nodes). Void elements only have a start tag; end tags must not be specified for void elements.

In HTML, a void element must not have an end tag. For example, `<input type="text"></input>` is invalid HTML. In contrast, SVG or MathML elements that cannot have any child nodes may use an end tag instead of XML self-closing-tag syntax in their start tag.

The HTML, SVG, and MathML specifications define very precisely what each element can contain. So, some combinations of tags have no semantic meaning.

Although there is no way to mark up a void element as having any children, child nodes can be added programmatically to the element in the DOM using JavaScript. But that is not a good practice, as the outcome will not be reliable.

The void elements in HTML are as follows:

* `<area>`
* `<base>`
* `<br>`
* `<col>`
* `<embed>`
* `<hr>`
* `<img>`
* `<input>`
* `<link>`
* `<meta>`
* `<param>` 
Deprecated
* `<source>`
* `<track>`
* `<wbr>`
Self-closing tags
-----------------

*Self-closing tags (`<tag />`) do not exist in HTML.*

If a trailing `/` (slash) character is present in the start tag of an HTML element, HTML parsers ignore that slash character. This is important to remember when an element such as `<script>` or `<ul>` does require a closing tag. In this case, adding a trailing slash in the start tag does not close the element.

However, some code formatters add the trailing slash character to the start tags of void elements to make them XHTML-compatible and more readable. For example, some code formatters will convert `<input type="text">` to `<input type="text" />`.

Self-closing tags are required in void elements in XML, XHTML, and SVG (e.g., `<circle cx="50" cy="50" r="50" />`).

In SVG and MathML, elements that cannot have any child nodes are allowed to be marked as self-closing. In such cases, if an element's start tag is marked as self-closing, the element must not have an end tag.

**Note:** If a trailing `/` (slash) character in a start tag is directly preceded by an unquoted attribute value — with no space between — the slash becomes a part of the attribute value rather than being discarded by the parser. For example, the markup `<img src=http://www.example.com/logo.svg/>` results in the `src` attribute having the value `http://www.example.com/logo.svg/` — which makes the URL wrong.

See also
--------

* Replaced elements
SVN
===

Apache Subversion (**SVN**) is a free source control management (SCM) system. It allows developers to keep a history of text and code modifications. Although SVN can also handle binary files, we do not recommend that you use it for such files.

See also
--------

* Apache Subversion on Wikipedia
* Official website
Regular expression
==================

**Regular expressions** (or *regex*) are rules that govern which sequences of characters come up in a search.

Regular expressions are implemented in various languages, but the best-known implementation is the Perl Implementation, which has given rise to its own ecosystem of implementations called PCRE (*Perl Compatible Regular Expression*). On the Web, JavaScript provides another regex implementation through the `RegExp` object.

See also
--------

* Regular expressions on Wikipedia
* Interactive tutorial
* Visualized Regular Expression
* Writing regular expressions in JavaScript
Time to interactive
===================

**Time to Interactive** (TTI) is a non-standardized web performance 'progress' metric defined as the point in time when the last Long Task finished and was followed by 5 seconds of network and main thread inactivity.

TTI, proposed by the Web Incubator Community Group in 2018, is intended to provide a metric that describes when a page or application contains useful content and the main thread is idle and free to respond to user interactions, including having event handlers registered.

#### Caveat

TTI is derived by leveraging information from the Long Task API. Although available in some performance monitoring tools, TTI is not a part of any official web specification at the time of writing.

See also
--------

* Definition of TTI from Web Incubator Community Group
* Time to Interactive — focusing on human-centric metrics by Radimir Bitsov
* Tracking TTI
HTML5
=====

The term HTML5 is essentially a buzzword that refers to a set of modern web technologies. This includes the HTML Living Standard, along with JavaScript APIs to enhance storage, multimedia, and hardware access.

You may sometimes hear about "new HTML5 elements", or find HTML5 described as a new version of HTML. HTML5 was the successor to previous HTML versions and introduced new elements and capabilities to the language on top of the previous version, HTML 4.01, as well as improving or removing some existing functionality. However, as a Living Standard HTML now has no version. The up-to-date specification can be found at html.spec.whatwg.org/.

Any modern site should use the HTML doctype — this will ensure that you are using the latest version of HTML.

**Note:** Until 2019, the W3C published a competing HTML5 standard with version numbers. Since 28 May 2019, the WHATWG Living Standard was announced by the W3C as the sole version of HTML.

See also
--------

* our HTML documentation
* HTML beginner's learning guides
* Web APIs
Mixin
=====

A *mixin* is a class (interface, in WebAPI spec terms) in which some or all of its methods and/or properties are unimplemented, requiring that another class or interface provide the missing implementations.

The new class or interface then includes both the properties and methods from the mixin as well as those it defines itself. All of the methods and properties are used exactly the same regardless of whether they're implemented in the mixin or the interface or class that implements the mixin.

The advantage of mixins is that they can be used to simplify the design of APIs in which multiple interfaces need to include the same methods and properties.

For example, the `WindowOrWorkerGlobalScope` mixin is used to provide methods and properties that need to be available on both the `Window` and `WorkerGlobalScope` interfaces. The mixin is implemented by both of those interfaces.

See also
--------

* Mixin on Wikipedia