]> xenbits.xensource.com Git - www-xenproject-org.git/commitdiff
xen site
authorArnaud Guéras <arnaudgs@gmail.com>
Wed, 20 Nov 2024 04:44:40 +0000 (05:44 +0100)
committerArnaud Guéras <arnaudgs@gmail.com>
Wed, 20 Nov 2024 04:44:40 +0000 (05:44 +0100)
Signed-off-by: Arnaud Guéras <arnaudgs@gmail.com>
19 files changed:
content/more/xen-summit-2024.md
content/projects/mirage-os.md
content/projects/unikraft.md
content/resources/mailing-lists.md
hugo.yaml
hugo_stats.json
themes/xen-project/assets/css/components/images-in-circle.scss
themes/xen-project/assets/css/grid.scss
themes/xen-project/assets/css/header/header-mobile.scss
themes/xen-project/assets/css/main.scss
themes/xen-project/assets/css/molecules/buttons.scss
themes/xen-project/assets/css/molecules/card.scss
themes/xen-project/assets/css/molecules/full-width-image.scss
themes/xen-project/assets/css/molecules/hero-block.scss
themes/xen-project/assets/css/typography.scss
themes/xen-project/assets/css/utils.scss [new file with mode: 0644]
themes/xen-project/assets/js/carousel.js
themes/xen-project/layouts/partials/latest-news.html
themes/xen-project/layouts/shortcodes/vertical-lists.html

index 9654909b6808ad2d0254930f160942ee2d5c2bdb..a4e641adec1949137588abfa9ed5b16634116914 100644 (file)
@@ -12,8 +12,8 @@ menus:
 ---
 
 
-{{<section container="full">}}
-{{<full-width-image src="/img/photos/xen-project-2023-group-photo.png" alt="Xen Project 2023 group photo" title="Xen Project 2023 group photo">}}
+{{<section >}}
+{{<full-width-image src="/img/photos/xen-project-2023-group-photo.png" alt="Xen Project 2023 group photo" title="Xen Project 2023 group photo" class="rounded-corners">}}
 {{</section>}}
 
 
index 358424918af27f21c4d87834d523827ff512ac6b..2fe69f680ee457eb768bd2002ad69f61abcecd9f 100644 (file)
@@ -21,7 +21,7 @@ MirageOS is a library operating system that constructs unikernels for secure, hi
 {{</section>}}
 
 {{<section md="true">}}
-### 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.
 {{</section>}}
index e8dcab41574a834c8f44e56c2b7b27bc70417d87..0f62942142267e699ac3a117eac858667f526d6d 100644 (file)
@@ -38,24 +38,33 @@ The high-level goal of Unikraft is to be able to build unikernels targeted at sp
   {{</media-block>}}
 {{</section>}}
 
-{{<section>}}
-  {{<vertical-lists cols="1">}}
-  - 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.
-  {{</vertical-lists>}}
-{{</section>}}
+{{<section >}}
+{{<md class="mg-l-md">}}
+  ### 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.
+{{</md>}}
+  
 
-{{<section md="true">}}
+{{<md class="mg-t-lg mg-l-md">}}
+  ### 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.
+{{</md>}}
+
+{{<md class="mg-t-lg">}}
   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).
+{{</md>}}
 
-  ## Unikraft and Minios
+{{<md class="mg-t-lg mg-l-md">}}
+  ### 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.
+{{</md>}}
 {{</section>}}
 
 
index 20ca45825ae50f83b06a9d75e17d83e67a2c35c6..346629c88488ec5bdf64536555f0deaa519ac402 100644 (file)
@@ -50,7 +50,7 @@ Xen Project mailing lists have a web as well as an email interface.
 ## General
 {{</md>}}
 
-{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3">}} 
+{{<row-from-list class="align-flex-start" component="card" component-class="card--bg" titleLevel="2" cols="3">}} 
 - 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
 {{</md>}}
 
-{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md">}} 
+{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md align-flex-start">}} 
 - title: XEN-DEVEL@
   tags:
     - Mailing list
@@ -138,7 +138,7 @@ Xen Project mailing lists have a web as well as an email interface.
   {{<md>}}
   ### Mirage OS
   {{</md>}}
-  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1" class="mg-t-md">}} 
+  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1" class="mg-t-md align-flex-start">}} 
   - title: MIRAGEOS-DEVEL@
     tags:
       - Mailing list
@@ -153,7 +153,7 @@ Xen Project mailing lists have a web as well as an email interface.
   {{<md>}}
   ### Unikraft
   {{</md>}}
-  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1"  class="mg-t-md">}} 
+  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1"  class="mg-t-md align-flex-start">}} 
   - 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.
   {{<md>}}
   ### XAPI
   {{</md>}}
-  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1"  class="mg-t-md">}} 
+  {{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="1"  class="mg-t-md align-flex-start">}} 
   - title: XEN-API@
     tags:
       - Mailing list
@@ -187,7 +187,7 @@ Xen Project mailing lists have a web as well as an email interface.
 {{<md>}}
 ### XCP-ng
 {{</md>}}
-{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md">}} 
+{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md align-flex-start">}} 
 - title: XCP-NG FORUMS
   tags:
     - Forum
@@ -218,7 +218,7 @@ Xen Project mailing lists have a web as well as an email interface.
 {{<md class="mg-t-md">}}
 ### Windows PV Drivers
 {{</md>}}
-{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md">}} 
+{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-t-md align-flex-start">}} 
 - 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
 {{</md>}}
 
-{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-v-md">}} 
+{{<row-from-list component="card" component-class="card--bg" titleLevel="2" cols="3" class="mg-v-md align-flex-start">}} 
 - title: PREDISCLOSURE-APPLICATIONS@
   tags:
     - Mailing list
index d52194e5b6765905a4aac99335a15cffe9d02086..de3106e8b64c108d2cb8371b780280c618bc88b5 100644 (file)
--- 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
index 033b4359fceff648b71617551ba5ab8662795cc1..baf27eb57f2725472a5da27d5ce5a7b58acd903a 100644 (file)
@@ -47,6 +47,7 @@
     ],
     "classes": [
       "active",
+      "align-flex-start",
       "ancestor",
       "animated-home-server",
       "animated-home-shadow-screen",
       "list-column--sublists",
       "list-no-style",
       "list-pages",
+      "m-t-md",
       "main",
       "media-block",
       "media-block--left",
       "menu",
       "menu-toggle",
       "mg-l-lg",
+      "mg-l-md",
       "mg-r-md",
       "mg-t-lg",
       "mg-t-md",
       "mg-v-xxl",
       "mob-mg-v-xl",
       "mt-2",
+      "mt-md",
+      "mt-sm",
       "news-container",
       "next",
       "no-mt",
       "page-top",
       "presentation-list",
       "prev",
+      "rounded-corners",
+      "rounded-img",
       "row",
       "row-from-list",
       "search-container",
       "join-the-conversation",
       "lazy-consensus--lazy-voting",
       "leadership-team-decisions",
+      "library-pools",
       "local-decision-making",
       "main-responsibilities",
       "maintainer-elections",
       "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",
index 15693529ecc3c739877def82f561477e0a64937a..4c2a73caf7b27eb015dec065b2ad0bb066836ddf 100644 (file)
@@ -87,7 +87,3 @@
     }
   }
 }
-
-.animate .images-in-circle li {
-  animation: rotate-images 1s ease-out forwards;
-}
index 47997619122b98a18a5a64d1b96ba40bb269e54c..340aa63f204b6c3c18c4788cb9239851ecb966bf 100644 (file)
@@ -78,6 +78,9 @@ section {
   }
 }
 
+.row-from-list .card__content {
+}
+
 @for $i from 1 through 5 {
   .cols-#{$i} {
     --cols: #{$i};
index 1251ddd53045981550ab69377f9c75941611cbc4..59c79acb661faf8d4c39d24fe6a7b2416be05ec4 100644 (file)
 
   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));
   }
 }
index ac413b0150d0743bc3071077c4125e967fba7d56..244feb8dd04c927e5a199e1ba61d3a3eb8540f37 100644 (file)
@@ -41,5 +41,6 @@
 @import "./header/header.scss";
 @import "./footer.scss";
 @import "./animation/home-animation.scss";
+@import "./utils.scss";
 // overrides classes
 @import "./spaces.scss";
index cb4fb2d3c4763b15b1b9030f0b3873e41203b2ed..6df6e3f0c35f2727cdd9fa82918e0451646e347f 100644 (file)
@@ -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;
   }
     padding: var(--padding);
     background-color: transparent;
     border: none;
+    --decal: 0.2em;
 
     &:hover {
       text-decoration: none;
     }
 
     &: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);
     }
   }
index 2af6864730e1924f84eff0c34640990065ffd671..ee404a7055fd45878f100a0b9c66e9fce72a2cb0 100644 (file)
   &__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 {
   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;
+  }
+}
index b15107808e11120efe0cd757ab4688677c20adb6..9a70ee542cc76acf5130fc941950ef79c7e40b22 100644 (file)
@@ -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;
index 9062d0c2185bc23e7258fd3d94adcb70ca979c39..92ae179318faa2569dd0c29a615643859f440cf1 100644 (file)
 
 .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);
     }
   }
 }
index d48c217d86d3e0c63f33dadf69af6894c8efe8fc..22dac49c6f504b9c5af5552399b9ff686c81b8a4 100644 (file)
@@ -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 (file)
index 0000000..af160cb
--- /dev/null
@@ -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;
+}
index eac90c6e410fe9a583314433efa95944324d9850..04f4803e684ef25e99458dbc2382ae811734f8a5 100644 (file)
@@ -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;
 
       }
 
       rules.push(`
-        .carousel-container {
+        .carousel-container-${uniqueid} {
           --item-width: ${itemWidth}px;
           --item-position: ${occupiedSpace}px;
           --height: ${height}px;
index 2cf72b92445e8583018d1728f545b379d9b525e6..98f68349be8791d16d0443c54de7ae7e1f165398 100644 (file)
@@ -23,7 +23,7 @@
       </div>
       ` : ""}
       <div class="card__actions">
-        <a href="${_.url}" class="join-button">
+        <a href="${_.url}" class="join-button btn btn-tertiary">
           Read more
           <i class="fas fa-arrow-up-right-from-square"></i>
         </a>
index 4fbc90fc939f9a105d99162266991de69d1f2a44..9eb431c6ad5f09d5bf2037ad000bd3fff2f894ca 100644 (file)
@@ -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) }}