From: Arnaud Guéras Date: Wed, 20 Nov 2024 04:44:40 +0000 (+0100) Subject: xen site X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6d92fd92c8d2387cb6d7541b505a653ef070de18;p=www-xenproject-org.git xen site Signed-off-by: Arnaud Guéras --- diff --git a/content/more/xen-summit-2024.md b/content/more/xen-summit-2024.md index 9654909..a4e641a 100644 --- a/content/more/xen-summit-2024.md +++ b/content/more/xen-summit-2024.md @@ -12,8 +12,8 @@ menus: --- -{{
}} -{{}} +{{
}} +{{}} {{
}} diff --git a/content/projects/mirage-os.md b/content/projects/mirage-os.md index 3584249..2fe69f6 100644 --- a/content/projects/mirage-os.md +++ b/content/projects/mirage-os.md @@ -21,7 +21,7 @@ MirageOS is a library operating system that constructs unikernels for secure, hi {{
}} {{
}} -### Our architecture +## Our architecture The MirageOS architecture can be divided into operating system libraries, typed signatures, and a metaprogramming compiler. The operating system libraries implement various functionalities, ranging from low-level network card drivers to full reimplementations of the TLS protocol, as well as the Git protocol to store versioned data. A set of typed signatures ensures that the OS libraries are consistent and work well in conjunction with each other. Most importantly, MirageOS is also a metaprogramming compiler that can input OCaml source code along with its dependencies, and a deployment target description to generate an executable unikernel, i.e., a specialised binary artefact containing only the code needed to run on the target platform. Overall, MirageOS focuses on providing a small, well-defined, typed interface with the system components of the target architecture. {{
}} diff --git a/content/projects/unikraft.md b/content/projects/unikraft.md index e8dcab4..0f62942 100644 --- a/content/projects/unikraft.md +++ b/content/projects/unikraft.md @@ -38,24 +38,33 @@ The high-level goal of Unikraft is to be able to build unikernels targeted at sp {{}} {{}} -{{
}} - {{}} - - title: Library pools - text: Library pools would contain libraries that the user of Unikraft can select from to create the unikernel. From the bottom up, library pools are organized into (1) the architecture library tool, containing libraries specific to a computer architecture (e.g., x86_64, ARM32 or MIPS); (2) the platform tool, where target platforms can be Xen, KVM, bare metal (i.e. no virtualization) and user-space Linux; and (3) the main library pool, containing a rich set of functionality to build the unikernel from. This last library includes drivers (both virtual such as netback/netfront and physical such as ixgbe), filesystems, memory allocators, schedulers, network stacks, standard libs (e.g. libc, openssl, etc.), runtimes (e.g. a Python interpreter, debugging and profiling tools). These pools of libraries constitute a code base for creating unikernels. As shown, a library can be relatively large (e.g libc) or quite small (a scheduler), which should allow for a fair amount of customization for the unikernel. - - title: The Unikraft build tool - text: The Unikraft build tool is in charge of compiling the application and the selected libraries together to create a binary for a specific platform and architecture (e.g., Xen on x86_64). The tool is currently inspired by Linux’s kconfig system and consists of a set of Makefiles. It allows users to select libraries, to configure them, and to warn users when library dependencies are not met. In addition, the tool can also simultaneously generate binaries for multiple platforms. - {{}} -{{
}} +{{
}} +{{}} + ### Library pools + + Library pools would contain libraries that the user of Unikraft can select from to create the unikernel. From the bottom up, library pools are organized into (1) the architecture library tool, containing libraries specific to a computer architecture (e.g., x86_64, ARM32 or MIPS); (2) the platform tool, where target platforms can be Xen, KVM, bare metal (i.e. no virtualization) and user-space Linux; and (3) the main library pool, containing a rich set of functionality to build the unikernel from. This last library includes drivers (both virtual such as netback/netfront and physical such as ixgbe), filesystems, memory allocators, schedulers, network stacks, standard libs (e.g. libc, openssl, etc.), runtimes (e.g. a Python interpreter, debugging and profiling tools). These pools of libraries constitute a code base for creating unikernels. As shown, a library can be relatively large (e.g libc) or quite small (a scheduler), which should allow for a fair amount of customization for the unikernel. +{{}} + -{{
}} +{{}} + ### The Unikraft build tool + + The Unikraft build tool is in charge of compiling the application and the selected libraries together to create a binary for a specific platform and architecture (e.g., Xen on x86_64). The tool is currently inspired by Linux’s kconfig system and consists of a set of Makefiles. It allows users to select libraries, to configure them, and to warn users when library dependencies are not met. In addition, the tool can also simultaneously generate binaries for multiple platforms. +{{}} + +{{}} As an example, imagine a user wanting to generate a network driver domain unikernel. In this case, we would assume the “application” to be the netback driver. To select this application, the user would first run “make menuconfig” from within the netback application folder. The Makefile there would set a variable to indicate what the application is, and would include the main Unikraft Makefiles so that the unikernel can be built (Step 1 in the figure). Using the menu-based system, the user chooses the relevant libraries; for a Xen driver domain, this would include a physical network driver, the netback driver, the libxenplat library and a library from the architecture library pool such as libx86_64arch (Step 2 in the figure). With this in place, the user saves the configuration and types “make” to build the unikernel (Step 3) and “xl create” to run it (Step 4). + A note on the ABI/API exposed to the application: because Unikraft allows for customization of the unikernels, the ABI (or API since there is no kernel) would be custom, that is, defined by the libraries the user selected. Having said that, it would be perfectly possible, for instance, to build POSIX-compliant unikernels with it (e.g. similar to Rump, but in principle with much more specialized OS layers). Finally, it is worth pointing out that we use the term application loosely: another clear target for Unikraft is the building of runtime-specific unikernels (e.g. a unikernel able to run Python or OCaml scripts as is the case with MirageOS). +{{}} - ## Unikraft and Minios +{{}} + ### Unikraft and Minios The Unikraft project also aims to concentrate the various efforts currently going on in the Xen community regarding minimalistic OSes (essentially different variants of MiniOS). We think that splitting the community across these variants is counter-productive and hope that Unikraft will provide a common place for all or most improvements and customizations of minimalistic OSes. The long-term goal is to replace something like MiniOS with a tool that can automatically build such a minimalistic OS. +{{}} {{
}} diff --git a/content/resources/mailing-lists.md b/content/resources/mailing-lists.md index 20ca458..346629c 100644 --- a/content/resources/mailing-lists.md +++ b/content/resources/mailing-lists.md @@ -50,7 +50,7 @@ Xen Project mailing lists have a web as well as an email interface. ## General {{}} -{{}} +{{}} - title: XEN-ANNOUNCE@ tags: - Mailing list @@ -112,7 +112,7 @@ Xen Project mailing lists have a web as well as an email interface. ### Xen Project Hypervisor {{}} -{{}} +{{}} - title: XEN-DEVEL@ tags: - Mailing list @@ -138,7 +138,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Mirage OS {{}} - {{}} + {{}} - title: MIRAGEOS-DEVEL@ tags: - Mailing list @@ -153,7 +153,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Unikraft {{}} - {{}} + {{}} - title: MINIOS-DEVEL@ (INCLUDES UNIKRAFT DEVELOPMENT) tags: - Mailing list @@ -169,7 +169,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### XAPI {{}} - {{}} + {{}} - title: XEN-API@ tags: - Mailing list @@ -187,7 +187,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### XCP-ng {{}} -{{}} +{{}} - title: XCP-NG FORUMS tags: - Forum @@ -218,7 +218,7 @@ Xen Project mailing lists have a web as well as an email interface. {{}} ### Windows PV Drivers {{}} -{{}} +{{}} - title: WIN-PV-DEVEL@ tags: - Mailing list @@ -234,7 +234,7 @@ Xen Project mailing lists have a web as well as an email interface. ## Advisory board {{}} -{{}} +{{}} - title: PREDISCLOSURE-APPLICATIONS@ tags: - Mailing list diff --git a/hugo.yaml b/hugo.yaml index d52194e..de3106e 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -11,6 +11,15 @@ params: blogApiKey: "b047d7f627a90f40798d11dcba" +minify: + disableXML: true + minifyOutput: true + tdewolff: + html: + keepWhitespace: false + keepEndTags: false + keepQuotes: false + keepComments: false module: hugoVersion: extended: true diff --git a/hugo_stats.json b/hugo_stats.json index 033b435..baf27eb 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -47,6 +47,7 @@ ], "classes": [ "active", + "align-flex-start", "ancestor", "animated-home-server", "animated-home-shadow-screen", @@ -171,6 +172,7 @@ "list-column--sublists", "list-no-style", "list-pages", + "m-t-md", "main", "media-block", "media-block--left", @@ -184,6 +186,7 @@ "menu", "menu-toggle", "mg-l-lg", + "mg-l-md", "mg-r-md", "mg-t-lg", "mg-t-md", @@ -194,6 +197,8 @@ "mg-v-xxl", "mob-mg-v-xl", "mt-2", + "mt-md", + "mt-sm", "news-container", "next", "no-mt", @@ -205,6 +210,8 @@ "page-top", "presentation-list", "prev", + "rounded-corners", + "rounded-img", "row", "row-from-list", "search-container", @@ -270,6 +277,7 @@ "join-the-conversation", "lazy-consensus--lazy-voting", "leadership-team-decisions", + "library-pools", "local-decision-making", "main-responsibilities", "maintainer-elections", @@ -315,6 +323,7 @@ "supports-multiple-guest-operating-systems-linux-windows-netbsd-freebsd", "the-hypervisor-teams-openpgp-keys", "the-linux-foundation", + "the-unikraft-build-tool", "trademark-policy", "transparency", "unikraft", diff --git a/themes/xen-project/assets/css/components/images-in-circle.scss b/themes/xen-project/assets/css/components/images-in-circle.scss index 1569352..4c2a73c 100644 --- a/themes/xen-project/assets/css/components/images-in-circle.scss +++ b/themes/xen-project/assets/css/components/images-in-circle.scss @@ -87,7 +87,3 @@ } } } - -.animate .images-in-circle li { - animation: rotate-images 1s ease-out forwards; -} diff --git a/themes/xen-project/assets/css/grid.scss b/themes/xen-project/assets/css/grid.scss index 4799761..340aa63 100644 --- a/themes/xen-project/assets/css/grid.scss +++ b/themes/xen-project/assets/css/grid.scss @@ -78,6 +78,9 @@ section { } } +.row-from-list .card__content { +} + @for $i from 1 through 5 { .cols-#{$i} { --cols: #{$i}; diff --git a/themes/xen-project/assets/css/header/header-mobile.scss b/themes/xen-project/assets/css/header/header-mobile.scss index 1251ddd..59c79ac 100644 --- a/themes/xen-project/assets/css/header/header-mobile.scss +++ b/themes/xen-project/assets/css/header/header-mobile.scss @@ -226,6 +226,6 @@ font-size: 1em; &::before { - right: calc(var(--icon-left) + var(--icon-width) + var(--icon-margin) + 0.2em + var(--padding)); + right: calc(var(--icon-width) + var(--icon-margin) + 0.6em + var(--padding)); } } diff --git a/themes/xen-project/assets/css/main.scss b/themes/xen-project/assets/css/main.scss index ac413b0..244feb8 100644 --- a/themes/xen-project/assets/css/main.scss +++ b/themes/xen-project/assets/css/main.scss @@ -41,5 +41,6 @@ @import "./header/header.scss"; @import "./footer.scss"; @import "./animation/home-animation.scss"; +@import "./utils.scss"; // overrides classes @import "./spaces.scss"; diff --git a/themes/xen-project/assets/css/molecules/buttons.scss b/themes/xen-project/assets/css/molecules/buttons.scss index cb4fb2d..6df6e3f 100644 --- a/themes/xen-project/assets/css/molecules/buttons.scss +++ b/themes/xen-project/assets/css/molecules/buttons.scss @@ -7,7 +7,7 @@ --color-hover: var(--color-action-fill-hover); --color-primary: var(--color-action-fill); --color-secondary: var(--color-action-on-fill); - --icon-left: 0px; + --icon-left: 0em; --icon-margin: 0.375em; display: inline-block; @@ -69,7 +69,8 @@ } &:hover, - &.hover { + &.hover, + body .card:hover & { --color-primary: var(--color-hover); --icon-left: 0.3em; } @@ -107,6 +108,7 @@ padding: var(--padding); background-color: transparent; border: none; + --decal: 0.2em; &:hover { text-decoration: none; @@ -126,18 +128,19 @@ } &:has(.fas) { - --icon-width: 1em; + --icon-width: 0.9em; } &:has(.fa-arrow-right), &:has(.fa-arrow-up-right-from-square) { - --icon-width: 0.75em; + --icon-width: 0.85em; } &:has(.fas)::before { - right: calc(var(--icon-left) + var(--icon-width) + var(--icon-margin) + 0.2em + var(--padding)); + right: calc(var(--icon-width) + var(--icon-margin) + var(--decal) + var(--padding)); } - &:hover::before { + &:hover::before, + body .card:hover &::before { transform: scaleX(1); } } diff --git a/themes/xen-project/assets/css/molecules/card.scss b/themes/xen-project/assets/css/molecules/card.scss index 2af6864..ee404a7 100644 --- a/themes/xen-project/assets/css/molecules/card.scss +++ b/themes/xen-project/assets/css/molecules/card.scss @@ -51,13 +51,6 @@ &__content { flex: 1; line-height: 1.25; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 6; - line-clamp: 6; - overflow: hidden; - text-overflow: ellipsis; - word-break: break-word; } &__link { @@ -154,3 +147,22 @@ line-height: 150%; letter-spacing: -0.025em; } + +.carousel .card__content { + display: block; + -webkit-box-orient: vertical; + -webkit-line-clamp: none; + line-clamp: none; +} + +.card-blog { + .card__content { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 6; + line-clamp: 6; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-word; + } +} diff --git a/themes/xen-project/assets/css/molecules/full-width-image.scss b/themes/xen-project/assets/css/molecules/full-width-image.scss index b151078..9a70ee5 100644 --- a/themes/xen-project/assets/css/molecules/full-width-image.scss +++ b/themes/xen-project/assets/css/molecules/full-width-image.scss @@ -1,7 +1,8 @@ .full-width-image { - max-width: calc(1920px + var(--container-paddings) * 2); - margin-left: calc(var(--container-paddings) * -1); - margin-right: calc(var(--container-paddings) * -1); + --paddings: 40px; + max-width: calc(1920px + var(--paddings) * 2); + //margin-left: calc(var(--container-paddings) * -1); + //margin-right: calc(var(--paddings) * -1); @media (min-width: 2000px) { margin-left: auto; diff --git a/themes/xen-project/assets/css/molecules/hero-block.scss b/themes/xen-project/assets/css/molecules/hero-block.scss index 9062d0c..92ae179 100644 --- a/themes/xen-project/assets/css/molecules/hero-block.scss +++ b/themes/xen-project/assets/css/molecules/hero-block.scss @@ -19,19 +19,26 @@ .title-with-gradient-underline { strong { + --underline-height: 0.07em; display: block; white-space: nowrap; position: relative; - &::after { - display: block; - content: ""; - position: absolute; - bottom: -0.04em; - left: 0; - right: 0; - height: 0.07em; - background: linear-gradient(90deg, #07c 0%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(90deg, #07c 0%, rgba(255, 255, 255, 0) 100%); + background-repeat: no-repeat; + background-size: 0% var(--underline-height); + background-position: bottom left; + padding-bottom: calc(var(--underline-height) - 0.02em); + animation: backgroundSizeAnimation 1s ease-in-out forwards; + animation-delay: 1s; + } + + @keyframes backgroundSizeAnimation { + 0% { + background-size: 0% var(--underline-height); + } + 100% { + background-size: 100% var(--underline-height); } } } diff --git a/themes/xen-project/assets/css/typography.scss b/themes/xen-project/assets/css/typography.scss index d48c217..22dac49 100644 --- a/themes/xen-project/assets/css/typography.scss +++ b/themes/xen-project/assets/css/typography.scss @@ -102,6 +102,7 @@ h1, h2, h3 { strong { + font-weight: inherit; color: var(--color-action-text); } diff --git a/themes/xen-project/assets/css/utils.scss b/themes/xen-project/assets/css/utils.scss new file mode 100644 index 0000000..af160cb --- /dev/null +++ b/themes/xen-project/assets/css/utils.scss @@ -0,0 +1,12 @@ +.align-flex-start { + align-items: flex-start; +} + +.full-width-img { + width: 100%; +} + +img.rounded-corners, +.rounded-corners img { + border-radius: 16px; +} diff --git a/themes/xen-project/assets/js/carousel.js b/themes/xen-project/assets/js/carousel.js index eac90c6..04f4803 100644 --- a/themes/xen-project/assets/js/carousel.js +++ b/themes/xen-project/assets/js/carousel.js @@ -1,5 +1,10 @@ (() => { - const selector = ".carousel-container"; + const /* The `selector` constant is storing a CSS selector string that is used to select elements in + the DOM. In this code snippet, the `selector` constant is set to `".carousel-container"`, + which means it is targeting elements with the class name "carousel-container". This selector + is then used to find and initialize carousel functionality on those elements in the + document. */ + selector = ".carousel-container"; const itemSelector = ".carousel-item"; const itemsBefore = 2; const itemsAfter = 1; @@ -7,7 +12,9 @@ const { debounce } = window.XenSiteUtils; const carousel = async (element) => { - const infiniteLoop = false; + const uniqueid = Math.random().toString(36).substring(2, 15); + element.classList.add("carousel-container-" + uniqueid); + const infiniteLoop = true; const itemsBefore = 2; const itemsAfter = 2; @@ -141,7 +148,7 @@ } rules.push(` - .carousel-container { + .carousel-container-${uniqueid} { --item-width: ${itemWidth}px; --item-position: ${occupiedSpace}px; --height: ${height}px; diff --git a/themes/xen-project/layouts/partials/latest-news.html b/themes/xen-project/layouts/partials/latest-news.html index 2cf72b9..98f6834 100644 --- a/themes/xen-project/layouts/partials/latest-news.html +++ b/themes/xen-project/layouts/partials/latest-news.html @@ -23,7 +23,7 @@ ` : ""}
- + Read more diff --git a/themes/xen-project/layouts/shortcodes/vertical-lists.html b/themes/xen-project/layouts/shortcodes/vertical-lists.html index 4fbc90f..9eb431c 100644 --- a/themes/xen-project/layouts/shortcodes/vertical-lists.html +++ b/themes/xen-project/layouts/shortcodes/vertical-lists.html @@ -3,4 +3,5 @@ {{ $colClass := .Get "col-class" }} {{ $headerLevel := .Get "headerLevel" }} {{ $class := .Get "class" }} + {{ partial "vertical-lists.html" (dict "lists" $yaml "cols" $cols "colClass" $colClass "headerLevel" $headerLevel "class" $class) }}