{"id":9,"date":"2025-08-03T09:27:32","date_gmt":"2025-08-03T09:27:32","guid":{"rendered":"https:\/\/opensource.lu\/?page_id=9"},"modified":"2026-08-24T21:04:14","modified_gmt":"2026-08-24T19:04:14","slug":"open-source-luxembourg-home-page","status":"publish","type":"page","link":"https:\/\/opensource.lu\/","title":{"rendered":"Open Source Luxembourg home page"},"content":{"rendered":"<h1>Let&#8217;s make things Open<\/h1>\n<div>\n<p>We are preparing this website to share news from the local Open Source ecosystem.<\/p>\n<p>To know more about future plans and to meet the ecosystem of people, companies and institutions that create, deploy and support Open Source software in Luxembourg join us at the Open Source Conference.<\/p>\n<\/div>\n<p><a href=\"https:\/\/conference.opensource.lu\/\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/08\/OSC_2026-with-symbol-white-text-background.png\" alt=\"\"><\/a><br \/>\n[mastodon]<\/p>\n<h1>News from the conference<\/h1>\n<div>\n<div class=\"wp-block-group imf-columns\">\n<div class=\"wp-block-group imf-inner\">\n  <script>\n    window.addEventListener(\"load\", () => {\n      mastodonFeedLoad(\n        \"https:\/\/mastodon.opencloud.lu\/api\/v1\/accounts\/114998137877293117\/statuses?limit=4&exclude_replies=true\",\n        \"include-mastodon-feed-6a8ca09c2b340\",\n        {\n          linkTarget: \"_self\",\n          showPreviewCards: false,\n          excludeConversationStarters: true,\n          excludeTags: \"\",\n          content: {\n            hideStatusMeta: false,\n            hideDateTime: true          },\n          images: {\n            preserveImageAspectRatio: true,\n            size: \"preview\",\n            link: \"status\",\n          },\n          text: {\n            boosted: \"boosted \ud83d\ude80\",\n            noStatuses: \"No statuses available\",\n            viewOnInstance: \"view on instance\",\n            showContent: \"Show content\",\n            permalinkPre: \"on\",\n            permalinkPost: \"\",\n            edited: \"(edited)\",\n          },\n          localization: {\n            date: {\n              locale: \"en-US\",\n              options: {},\n            }\n          }\n        }\n      );\n    });\n  <\/script>\n  <div class=\"include-mastodon-feed-wrapper\"><ol class=\"include-mastodon-feed\" id=\"include-mastodon-feed-6a8ca09c2b340\"><li>Loading Mastodon feed...<\/li><\/ol><\/div>\n\n<\/div>\n<\/div>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"padding_top\":\"xsmall\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"Let's make things Open\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_top\":\"xsmall\",\"title_color\":\"primary\",\"title_element\":\"h1\",\"title_style\":\"h1\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>We are preparing this website to share news from the local Open Source ecosystem.<\/p>\n\n\\n\n\n<p>To know more about future plans and to meet the ecosystem of people, companies and institutions that create, deploy and support Open Source software in Luxembourg join us at the Open Source Conference.<\/p>\n\n\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"text_style\":\"lead\"}},{\"type\":\"image\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/08\/OSC_2026-with-symbol-white-text-background.png\",\"image_svg_color\":\"emphasis\",\"link\":\"https:\/\/conference.opensource.lu\/\",\"link_aria_label\":\"Open Source Conference Luxembourg\",\"link_target\":true,\"margin_bottom\":\"default\",\"margin_top\":\"medium\",\"text_align\":\"center\"}}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"padding_bottom\":\"xsmall\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"props\":{\"layout\":\"1-6,5-6|1-5,4-5\",\"margin_bottom\":\"small\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"1-6\",\"width_small\":\"1-5\"},\"children\":[{\"type\":\"icon\",\"props\":{\"icon\":\"mastodon\",\"icon_color\":\"primary\",\"icon_width\":60,\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"text_align\":\"center\"}}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"5-6\",\"width_small\":\"4-5\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"News from the conference\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"text_align\":\"left\",\"title_element\":\"h1\",\"title_style\":\"h2\"}}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"\n\n<div class=\\\"wp-block-group imf-columns\\\">\\n\n\n<div class=\\\"wp-block-group imf-inner\\\">\\n[include-mastodon-feed instance=\\\"mastodon.opencloud.lu\\\" account=\\\"114998137877293117\\\" limit=\\\"4\\\" excludeReplies=\\\"true\\\" excludeConversationStarters=\\\"true\\\" preserveImageAspectRatio=\\\"true\\\" imageSize=\\\"preview\\\" imageLink=\\\"status\\\" showPreviewCards=\\\"false\\\" hideStatusMeta=\\\"false\\\" hideDateTime=\\\"true\\\"]\\n<\/div>\n\n<\/div>\n\n\",\"css\":\"\/***\\n* IMF Columns; Image focused column styling for Include Mastodon Feed shortcode.\\n* 1.1.1: Added support for video and limited long hashtags\\n* Adjust the following settings to fit you theme.\\n***\/\\n\\n.imf-columns {\\n    --imf-column-width: 36ch;\\n    --imf-column-count: 2;\\n    --imf-column-gap: 2rem;\\n    --imf-clipper-max-height: min(80vh, 60rem);\\n    --imf-inner-rotation: 7deg;\\n    --imf-status-padding: .75rem;\\n    --imf-status-font-size: var(--wp--preset--font-size--small, 0.8rem);\\n    --imf-status-color: #404040;\\n    --imf-status-avatar-height: 1.5rem;\\n    --imf-status-box-shadow: 0.6rem 0.8rem 1rem #0003;\\n    --imf-status-media-hover: contrast(90%) brightness(120%) saturate(80%);\\n    --include-mastodon-feed-border-radius: 1.5rem;\\n    --include-mastodon-feed-bg-light: #fafafa;\\n    --include-mastodon-feed-accent-color: #563acc;\\n}\\n\\n\/***\\n* How to use: In block editor, create 2-3 nested groups with imf classes and shortcode:\\n* 1: Create container group with class imf-columns, this can have background\\n* 2:  Optional: create clipping group with class imf-clipper; recommended width: 90vw\\n* 3:   Create inner group with class imf-inner; recommended width: 1440-1920px\\n* 4:      In that, create heading (optional) and insert Include Mastodon Feed shortcode\\n***\/\\n\\n\\n\/** Include Mastodon Feed **\/\\n\\n\/* Use CSS Columns for the mastodon feed *\/\\n.imf-columns .include-mastodon-feed {\\n    column-width: var(--imf-column-width);\\n    column-count: var(--imf-column-count);\\n    column-gap: var(--imf-column-gap);\\n    margin: 0 0 var(--imf-column-gap);\\n}\\n\\n\\n\/** Status Cards **\/\\n\\n\/* Display as INLINE-grid (safari-fix) for reordering of content and avoid column-breaking \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status {\\n    display: inline-grid;\\n    break-inside: avoid-column;\\n    margin: calc(var(--imf-column-gap)\/2) 0;\\n    border: .5px solid #fff7;\\n    \/* antialiasing*\/\\n    padding: var(--imf-status-padding, 1rem);\\n    color: var(--imf-status-color);\\n    font-size: var(--imf-status-font-size);\\n    overflow-wrap: break-word;\\n    box-shadow: var(--imf-status-box-shadow, unset);\\n}\\n\\n\\n\/* Hide statuses with videos or content warnings or unknown content *\/\\n.imf-columns .include-mastodon-feed .status:has(.audio, .gifv, .contentWarning, .unknown) {\\n    display: none;\\n}\\n\\n\\n\/** Status Card > Content **\/\\n\\n\/* Display as flex for reordering media and collapse ALL content (text nodes without html markup) \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content {\\n    display: flex;\\n    flex-wrap: wrap;\\n    visibility: collapse;\\n    line-height: 0;\\n}\\n\\n\/* Un-collapse proper marked up content (paragraphs, images, links) to make them visible again \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content * {\\n    visibility: visible;\\n    line-height: 1.33;\\n}\\n\\n\/* In the status, show hashtags and mentions links, but hide other arbitrary links *\/\\n.imf-columns .include-mastodon-feed .status .content p a:not(.hashtag, .mention) {\\n    display: none;\\n}\\n\\n\\n\/** Status Card > Content > Media **\/\\n\\n\/* Pull media up to be displayed first on the status \ufe0f (Note; tabindex order will mess up) *\/\\n.imf-columns .include-mastodon-feed .status .content .media {\\n    order: -1;\\n    margin: 0 0 .5em 0;\\n    flex-grow: 1;\\n}\\n\\n\/* And round the corners *\/\\n.imf-columns .include-mastodon-feed .status .content .media :where(a, img, video) {\\n    border-radius: calc(var(--include-mastodon-feed-border-radius) \/ 1.5);\\n\\twidth: 100%;\\n}\\n\\n\/* Use custom image hover filter *\/\\n.imf-columns .include-mastodon-feed .status .content .media a:hover {\\n    filter: var(--imf-status-media-hover);\\n}\\n\\n\/* Unset some video related rules *\/\\n.imf-columns .include-mastodon-feed .status .content .media .video {\\n    margin-top: unset;\\n    font-size: var(--imf-status-font-size);\\n}\\n\\n\/* Hotfix: Remove extra whitespace below some image links *\/\\n.imf-columns .include-mastodon-feed .status .content .media .image a {\\n    aspect-ratio: unset;\\n}\\n\\n\\n\/** Status Card > Content > Text & Tags **\/\\n\\n\/* Paragraphs; show only the first one \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content p:not(:first-of-type) {\\n    display: none;\\n}\\n\\n\/* If status last paragraph has hashtags, then limit first paragraph to 2 lines only \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content p:first-of-type:has(~p:last-of-type>a.hashtag) {\\n    --imf-status-line-clamp: 2;\\n}\\n\\n\/* Paragraphs; show only the first 2-3 lines \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content p:first-of-type {\\n\\tdisplay: -webkit-box;\\n    -webkit-line-clamp: var(--imf-status-line-clamp, 3);\\n    -webkit-box-orient: vertical;\\n    overflow: hidden;\\n}\\n\\n\/* Paragraphs; Remove the margins, keeping this card tight *\/\\n.imf-columns .include-mastodon-feed .status .content p {\\n    margin: unset;\\n}\\n\\n\/* Breaks and blockquotes looks weird on cards, hide them! *\/\\n.imf-columns .include-mastodon-feed .status .content :is(br, blockquote) {\\n    display: none;\\n}\\n\\n\\n\/** Hashtags **\/\\n\\n\/* Make exception to 1 paragraph, but show the last paragraph too if it has hashtags, ... *\/\\n.imf-columns .include-mastodon-feed .status .content p:not(:first-of-type):last-of-type:has(.hashtag) {\\n    display: inline-block;\\n}\\n\\n\/* Display maximum 3 hashtags, hide the rest \u2b50 *\/\\n.imf-columns .include-mastodon-feed .status .content .hashtag:not(:nth-of-type(-n + 3)) {\\n    display: none;\\n}\\n\\n\/* Hashtags; make sure they don't exceed #TheWithOfTheColumnsYouManiacs *\/\\n.imf-columns .include-mastodon-feed .status .content .hashtag span {\\n\\tdisplay: inline-block;\\n\\tmax-width: calc(var(--imf-column-width) - 6ch);\\n}\\n\\n\\n\/** Status Cards > Account Info **\/\\n\\n\/* Order account info below the content *\/\\n.imf-columns .include-mastodon-feed .account {\\n    order: 2;\\n    margin-top: 0.5em;\\n    font-size: var(--imf-status-font-size);\\n    line-height: 1;\\n}\\n\\n\/* Tweak account avatar and name spacing*\/\\n.imf-columns .include-mastodon-feed .account,\\n.imf-columns .include-mastodon-feed .account a {\\n    display: flex;\\n    align-items: flex-end;\\n    gap: .4em;\\n}\\n\\n\/* Make avatar a little larger *\/\\n.imf-columns .include-mastodon-feed .account .avatar {\\n    height: var(--imf-status-avatar-height, 1.5rem);\\n}\\n\\n\\n\/** OPTIONAL; Clipper and rotated Inner container *\/\\n\\n\/* Inner Container; rotate on laptops and larger *\/\\n@media screen and (min-width: 1440px) {\\n\\n    \/* Right align headings and text so it fits nicely when inner is rotated *\/\\n    .imf-columns:has(.imf-clipper) .imf-inner .wp-block-heading {\\n        text-align: right;\\n    }\\n\\n    \/* Rotate inner container *\/\\n    .imf-columns:has(.imf-clipper) .imf-inner {\\n        transform-origin: 46% 21%;\\n        rotate: var(--imf-inner-rotation);\\n    }\\n\\n    \/* Clip overflow that occurs when rotating inner container *\/\\n    .imf-columns .imf-clipper {\\n        height: var(--imf-clipper-max-height);\\n        max-height: var(--imf-clipper-max-height);\\n        overflow: clip;\\n    }\\n\\n    \/* Remove inner padding for that tight tilted section *\/\\n    .imf-columns:has(.imf-clipper) {\\n        padding: 0;\\n    }\\n}\\n\\n\/** OPTIONAL; Limit number of statuses on phones to 6 to avoid excessive scrolling *\/\\n\\n@media (max-width: 768px) {\\n    .imf-columns .include-mastodon-feed .status:not(:nth-of-type(-n + 6)) {\\n        display: none;\\n    }\\n}\\n\\n\\n\/* OPTIONAL; Fade in inner section to reduce layout shifts and because it looks nice. *\/\\n\\n\/* Fade in the entire inner container in .8 seconds (adjust to your site) *\/\\n.imf-columns .imf-inner {\\n    animation: fadeIn 0.8s linear forwards;\\n}\\n\\n\/* 0 opacity (invisible) for half the time, then fade to full opacity *\/\\n@keyframes fadeIn {\\n\\n    0%,\\n    50% {\\n        opacity: 0;\\n    }\\n\\n    100% {\\n        opacity: 1;\\n    }\\n}\",\"margin_top\":\"small\"}}]}]}],\"name\":\"Mastodon posts\"}],\"version\":\"5.0.42\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s make things Open We are preparing this website to share news from the local Open Source ecosystem. To know more about future plans and to meet the ecosystem of people, companies and institutions that create, deploy and support Open Source software in Luxembourg join us at the Open Source Conference. [mastodon] News from the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":12,"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":32,"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/pages\/9\/revisions\/32"}],"wp:attachment":[{"href":"https:\/\/opensource.lu\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}