CINXE.COM
cncf-tag-env-sustainability@lists.cncf.io | Topics
<!DOCTYPE html> <html lang="en-US"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="pinterest" content="nopin" /> <meta name="pinterest" content="nohover" /> <meta name="3778517eb4810dfb5d143ed8f1b359b3b5a82923" content="0f56257c3db4a222e91b11bc6871c4df2e263b28" /> <link rel="apple-touch-icon" sizes="57x57" href="/img/org.10/favicons/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/img/org.10/favicons/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/img/org.10/favicons/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/img/org.10/favicons/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/img/org.10/favicons/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/img/org.10/favicons/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/img/org.10/favicons/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/img/org.10/favicons/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/img/org.10/favicons/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="/img/org.10/favicons/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="/img/org.10/favicons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="/img/org.10/favicons/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="/img/org.10/favicons/favicon-16x16.png"> <link rel="manifest" href="/img/org.10/favicons/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="/ms-icon-144x144.png"> <script> /* stubs */ const hapticsImpactHeavy = async () => { }; const hapticsImpactMedium = async () => { }; const hapticsImpactLight = async () => { }; const hapticsVibrate = async () => { }; const hapticsSelectionStart = async () => { }; const hapticsSelectionChanged = async () => { }; const hapticsSelectionEnd = async () => { }; </script> <script> function setPullToRefresh() {} function gotoURL(inurl) { window.location.href = inurl; return; } function contentLoaded(isHTMX, f, caller = "") { console.log("contentLoaded: " + isHTMX + " " + caller); if (isHTMX == true) { document.body.addEventListener('htmx:afterSettle', f, {once: true}); } else { if (document.readyState !== 'loading') { console.log('document is already ready, just execute code here'); f(); } else { console.log('document was not ready, place code here'); document.addEventListener('DOMContentLoaded', f, {once: true}); } } } function HideAppSidebarOnKeyboard() { console.log("In HideAppSidebarOnKeyboard"); } // stub function logError(data, url, linenumber) { console.log(data) return; } var pushSubToken; var ignoreErrors = false; var lastError = ""; window.onerror = function(errorMessage, errorUrl, errorLine, errorColumn, errorObj) { let column; let stack; if (console && console.log) { console.log("msg:", errorMessage); console.log("url:", errorUrl); console.log("line:", errorLine); if (errorColumn !== undefined && errorObj != null) { console.log("column:", errorColumn); column = errorColumn; } if (errorObj !== undefined && errorObj != null) { console.log("stack:", errorObj.stack); stack = errorObj.stack; } console.log("client_id:", "web.web08.5693523.1732393672929042377"); console.log("last_error:", lastError); console.log("stack:", stack); } if (errorUrl == "" || errorUrl === null) { errorUrl = window.location.href; } if (errorMessage.includes("SecurityError:") == true) { ignoreErrors = true; } if (ignoreErrors == true) { console.log("cookies, disabled, ignoring"); lastError = errorMessage; return; } jQuery.ajax({ type: 'POST', url: '/jsclienterror', data: { msg: errorMessage, url: errorUrl, line: errorLine, column: column, stack: stack, last_error: lastError, client_id: "web.web08.5693523.1732393672929042377" }, success: function() { if (console && console.log) { console.log('JS error report successful.'); } lastError = errorMessage; }, error: function() { if (console && console.error) { console.error('JS error report submission failed!'); } lastError = errorMessage; } }); return true; } </script> <script src="/tinymce-5.10.9/tinymce.min.js"></script> <script src="/js/browser-image-compression-2.0.2.min.js"></script> <link href="/css/application-6630163a3be19b6cee26ce35342d0d92.css" rel="stylesheet" id="groupsio-css"> <script src="/js/application-9b2c27b802a13063cf8a712fe566f004.js" id="groupsio-js"></script> <script src="/js/run_prettify.js"></script> <title> cncf-tag-env-sustainability@lists.cncf.io | Topics </title> <link rel="canonical" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?page=2&after=1663630803872600969"> <meta property="og:title" content="Topics" /> <meta property="og:description" content="" /> <meta property="og:image" content="https://lists.cncf.io/g/cncf-tag-env-sustainability/coverphoto" /> <script> htmx.config.scrollBehavior = "instant"; htmx.config.historyCacheSize = 0; htmx.config.defaultSettleDelay = 0; console.log("FULL PAGE LOAD"); </script> </head> <body id="body" class="" hx-headers='{"Accept-Version": "58f989bb651da14c2b1295c4c0447aef4773d1f9"}' hx-ext="preload" hx-boost="false"> <script> if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { document.body.classList.add('dark-mode'); } </script> <div class="navbar navbar-head navbar-fixed-top" role="navigation" id="headerbar"> <div class="container-fluid" style="padding-left:0px;"> <a href="https://lists.cncf.io" class="navbar-left" hx-boost="false" hx-disinherit="*"> <img src="https://lists.cncf.io/img/org.10/mainlogo.png?cachebust" height="50" alt="Groups.io"> </a> <ul class="nav navbar-nav pull-right visible-xs" style="margin-top:5px;margin-bottom:5px;"> <li> <a href="#" data-toggle="modal" data-target="#mobileAccount"> <i class="fa-fw fa fa-bars fa-lg"></i> </a> </li> </ul> <ul class="nav navbar-nav pull-right hidden-xs"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa-fw fa-regular fa-globe"></i> EN <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="https://lists.cncf.io/unsetlang"> EN </a> </li> <li> <a href="https://lists.cncf.io/setlang/de"> DE </a> </li> <li> <a href="https://lists.cncf.io/setlang/es"> ES </a> </li> <li> <a href="https://lists.cncf.io/setlang/fr"> FR </a> </li> <li> <a href="https://lists.cncf.io/setlang/it"> IT </a> </li> <li> <a href="https://lists.cncf.io/setlang/pt"> PT </a> </li> <li> <a href="https://lists.cncf.io/setlang/uk"> UK </a> </li> </ul> </li> <li> <a href="https://lists.cncf.io/helpcenter" target="_blank"> Help </a> </li> <li> <a href="https://lists.cncf.io/login" hx-boost="false" hx-disinherit="*"> <i class="fa fa-sign-in-alt"></i> Log In </a> </li> </ul> </div> </div> <div class="modal fade" id="mobileAccount" role="dialog"> <div class="modal-dialog" style="margin-top:50px;"> <div class="modal-content"> <div class="modal-body"> <ul class="list-group noborderlist"> <li class="noborderitem list-group-item"> <a href="https://lists.cncf.io/login" hx-boost="false" hx-disinherit="*"> <i class="fa fa-sign-in-alt"></i> Log In </a> </li> <li class="noborderitem list-group-item"> <a href="https://lists.cncf.io/helpcenter" target="_blank"> <i class="fa-fw fa fa-question-circle"></i> Help </a> </li> <li class="dropdown noborderitem list-group-item"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa-fw fa-regular fa-globe"></i> EN <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="https://lists.cncf.io/unsetlang"> EN </a> </li> <li> <a href="https://lists.cncf.io/setlang/de"> DE </a> </li> <li> <a href="https://lists.cncf.io/setlang/es"> ES </a> </li> <li> <a href="https://lists.cncf.io/setlang/fr"> FR </a> </li> <li> <a href="https://lists.cncf.io/setlang/it"> IT </a> </li> <li> <a href="https://lists.cncf.io/setlang/pt"> PT </a> </li> <li> <a href="https://lists.cncf.io/setlang/uk"> UK </a> </li> </ul> </li> </ul> </div> </div> </div> </div> <script> var groupnavigatorData = [ ]; </script> <!-- Modal Dialog for Autocomplete --> <div class="modal fade" id="groupnavigatorModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> <input type="text" class="form-control" id="groupnavigatorInput" placeholder="Go to group..." style="margin-bottom:10px"> <div id="groupnavigatorContainer" class="autocompleteResults" style="max-height:250px; overflow-y: auto;"></div> <div class="text-center" style="margin-top:10px; font-size:12px;"><i class="fa-sharp fa-arrow-up-arrow-down"></i> to navigate <i class="fa-sharp fa-arrow-turn-down-left"></i> to use <strong>esc</strong> to dismiss</div> </div> </div> </div> </div> <script> // Keep track of the currently selected index var selectedIndex = -1; // Function to highlight the matched substring function highlightSubstring(str, substring) { var index = str.toLowerCase().indexOf(substring.toLowerCase()); if (index !== -1) { var before = str.substring(0, index); var middle = str.substring(index, index + substring.length); var after = str.substring(index + substring.length); return before + '<span class="autocomplete-highlight">' + middle + '</span>' + after; } return str; } // Function to highlight the selected item and ensure it is visible in the scrollable list function highlightSelectedItem(modalName) { var listContainer = document.getElementById(modalName + 'Container'); var items = document.getElementsByClassName(modalName + '-list-item'); Array.from(items).forEach(function(item, idx) { item.className = idx === selectedIndex ? modalName + '-list-item autocomplete-list-item btn-primary no-hover' : modalName + '-list-item autocomplete-list-item no-hover'; // Apply btn-primary class to the selected item }); if (items.length > 0 && selectedIndex >= 0) { var selectedItem = items[selectedIndex]; var containerTop = listContainer.scrollTop; var containerBottom = containerTop + listContainer.clientHeight; var itemTop = selectedItem.offsetTop; var itemBottom = itemTop + selectedItem.offsetHeight; const fudge = 59; if (selectedIndex > 0 && itemTop > containerBottom) { // If there are items below the selected item and the selected item is not fully visible, scroll down listContainer.scrollTop = itemTop - listContainer.clientHeight + items[selectedIndex - 1].offsetHeight; } else if (selectedIndex < items.length - 1 && (itemTop - fudge) < containerTop) { // If there are items above the selected item and the selected item is not fully visible, scroll up listContainer.scrollTop = itemTop - fudge - items[selectedIndex + 1].offsetHeight; } } } // function to populate the list based on the input function populateList(modalName, data) { var input = document.getElementById(modalName+'Input').value; var listContainer = document.getElementById(modalName+'Container'); listContainer.innerHTML = ''; data.forEach(function(item) { if (item.name.toLowerCase().includes(input.toLowerCase())) { var div = document.createElement('div'); div.innerHTML = highlightSubstring(item.name, input); div.className = modalName+'-list-item autocomplete-list-item no-hover'; // Apply no-hover class div.addEventListener('click', function() { // Navigate to the specified URL when a list item is clicked window.location.href = item.url; }); div.addEventListener('mousemove', function() { // Remove no-hover class from all items when the mouse is moved over any item console.log("mouse move"); var items = document.getElementsByClassName(modalName+'-list-item'); Array.from(items).forEach(function(item) { item.classList.remove('no-hover'); }); }); listContainer.appendChild(div); } }); highlightSelectedItem(modalName); } function InitAutocomplete(modalName, data) { // Focus the input field when the modal is shown and populate the list $('#' + modalName + 'Modal').on('shown.bs.modal', function () { $('#' + modalName + 'Input').focus().val(''); populateList(modalName, data); selectedIndex = 0; highlightSelectedItem(modalName); }); // Event listener for input field typing document.getElementById(modalName + 'Input').addEventListener('input', function() { populateList(modalName, data); selectedIndex = 0; }); // Event listener for arrow keys and enter key document.getElementById(modalName + 'Input').addEventListener('keydown', function(event) { var items = document.getElementsByClassName(modalName + '-list-item'); if (event.key === 'ArrowDown') { event.preventDefault(); if (selectedIndex < items.length - 1) selectedIndex++; highlightSelectedItem(modalName); } else if (event.key === 'ArrowUp') { event.preventDefault(); if (selectedIndex > 0) selectedIndex--; highlightSelectedItem(modalName); } else if (event.key === 'Enter' && selectedIndex >= 0 && selectedIndex < items.length) { event.preventDefault(); items[selectedIndex].click(); } }); } function showAutocompleteModal(modalName) { $('#' + modalName + 'Modal').modal('show'); selectedIndex = -1; } </script> <div id="content" class="container-fluid"> <script> InitAutocomplete("groupnavigator", groupnavigatorData); document.body.addEventListener("showReloadPageDialog", function(evt) { console.log("Forced reload"); location.reload(); }); function ShowBackButton(label) { var logoElement = document.getElementById("logo"); if (logoElement) { html = ` <span style="color:#fff;margin-top:14px;margin-left:12px;float:left !important; height:36px;"> <a onclick="goBack()" style="color:#fff"> <i class="fa-fw fa-solid fa-chevron-left fa-lg"></i> </a></span>`; if (label != "") { html += `<div style="position:absolute;left:50%;transform:translateX(-50%);text-align:center;color:#ecf0f1;margin-top:5px;"><h4>` + label + `</h4></div>`; } logoElement.innerHTML = html; } } function HideBackButton() { var logoElement = document.getElementById("logo"); if (logoElement) { logoElement.innerHTML = ` <a href="https://lists.cncf.io" class="navbar-left"> <img src="https://lists.cncf.io/img/org.10/mainlogo.png?cachebust" height="50" alt="Groups.io"> </a>`; } } function goBack() { history.back(); } // submitEvent acts like .submit(), except it is compatible with the app, by using events instead. function submitEvent(ele) { console.log("in submitEvent"); if (ele.startsWith('#')) { ele = ele.slice(1); } document.getElementById(ele).submit(); return; /* const theEvent = new CustomEvent('submit', { bubbles: true, cancelable: true }); if (typeof ele === 'string' || ele instanceof String) { if (ele.startsWith("#") == true) { ele = ele.slice(1); } if (document.getElementById(ele).dispatchEvent(theEvent) == true) { // if not cancelled, do normal submit console.log("calling submit"); document.getElementById(ele).submit(); } return; } // assume ele is the element if (ele.dispatchEvent(theEvent) == true) { // if not cancelled, do normal submit console.log("calling submit"); ele.submit(); } */ } // gioDestroy is a convenience function for destroy callbacks function gioDestroy(eventCB) { let internalGioDestroy = function(evt) { // do not activate on infinite scroll events if (evt.detail.target !== undefined && evt.detail.target.id != "maincontent-refresh") { console.log("Ignoring infinite scroll event"); return; } console.log("Calling destroy callback"); eventCB(evt); } document.body.addEventListener("htmx:beforeSwap", internalGioDestroy, {once: true}); document.body.addEventListener("htmx:historyCacheMiss", internalGioDestroy, {once: true}); } var drawerCloseFunc = function(evt) { console.log("in drawerCloseFunc"); // Find all elements with the class 'drawer' var drawers = document.querySelectorAll('.drawer'); // Iterate over each element and call closeDrawer() on each drawers.forEach(function(obj) { drawerObj.closeDrawer(obj); }); $('.modal').modal('hide'); } document.body.addEventListener('htmx:beforeSwap', drawerCloseFunc); document.body.addEventListener('htmx:historyCacheMiss', drawerCloseFunc); var keydownFunc = function(event) { var tagName = event.target.tagName.toLowerCase(); if (tagName === 'input' || tagName === 'textarea' || event.target.isContentEditable) { if (event.key === 'Escape') { event.target.blur(); } return; } // check if the viewimages viewer is up let element = document.getElementById('overlay'); if (element && element.classList.contains('visible')) { return; } console.log("HERE: " + event.key + " " + event.ctrlKey + " " + event.shiftKey + " " + event.metaKey); if (event.ctrlKey && event.shiftKey && (event.key === '?' || event.key === '/')) { event.preventDefault(); // Prevent the default action // Show the modal dialog for keyboard shortcuts $('#shortcutModal').modal('show'); return; } $('#shortcutModal').modal('hide'); if (event.key.toLowerCase() === 'g') { // For Windows and Linux if (event.ctrlKey) { event.preventDefault(); showAutocompleteModal("groupnavigator"); return; } } // Check if the pressed key is '/' if ((event.key === 'f' || event.key === 'F') && event.shiftKey) { if (navigator.platform.toUpperCase().indexOf('MAC') >= 0) { if (event.metaKey) { event.preventDefault(); // Prevent the default action // Focus on the search box let box = document.getElementById('searchbox') if (box != null) { document.getElementById('searchbox').focus(); } } } else { // For Windows and Linux if (event.ctrlKey) { event.preventDefault(); // Prevent the default action // Focus on the search box let box = document.getElementById('searchbox') if (box != null) { document.getElementById('searchbox').focus(); } } } } } document.addEventListener('keydown', keydownFunc); var removeDrawerCloseFunc = function(evt) { document.body.removeEventListener('htmx:beforeSwap', drawerCloseFunc); document.body.removeEventListener('htmx:historyCacheMiss', drawerCloseFunc); document.removeEventListener('keydown', keydownFunc); } document.body.addEventListener("htmx:historyCacheMiss", removeDrawerCloseFunc, {once: true}); </script> <!-- Modal Dialog for Keyboard Shortcuts --> <div class="modal fade" id="shortcutModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="myModalLabel">Keyboard Shortcuts</h4> </div> <div class="modal-body"> <div class="row"> <div class="col-xs-3 text-right"><strong>ctrl</strong> + <strong>shift</strong> + <strong>?</strong> :</div> <div class="col-xs-9" style="margin-left: -23px;">Show all keyboard shortcuts</div> </div> <div class="row"> <div class="col-xs-3 text-right"><strong>ctrl</strong> + <strong>g</strong> :</div> <div class="col-xs-9" style="margin-left: -23px;">Navigate to a group</div> </div> <div class="row"> <div class="col-xs-3 text-right"><strong class="ctrlmeta">ctrl</strong> + <strong>shift</strong> + <strong>f</strong> :</div> <div class="col-xs-9" style="margin-left: -23px;">Find</div> </div> <div class="row"> <div class="col-xs-3 text-right"><strong class="ctrlmeta">ctrl</strong> + <strong>/</strong> :</div> <div class="col-xs-9" style="margin-left: -23px;">Quick actions</div> </div> </div> <div class="text-center" style="margin-top:10px; margin-bottom:10px; font-size:12px;"><strong>esc</strong> to dismiss</div> </div> </div> </div> <div id="mainrow" class="row" hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div id="groupsidebar" class="scrollbar hidden-print"> <div class="scrollbar-content"> <div id="accordion" role="tablist" aria-multiselectable="true" style="margin-bottom:20px;"> <div class="list-group noborderlist" style="border:0;margin-bottom:0px"> <a title="Group Home" href="https://lists.cncf.io/g/cncf-tag-env-sustainability" class="list-group-item sidebar-item"> <i class="fa-fw fa fa-home fa-lg"></i> Home </a> <a title="Messages" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?sidebar=true" id="sidebar-archives" class="noborderitem list-group-item sidebar-item sidebar-item-archives active"> <i class="fa-fw fa fa-comments fa-lg"></i> Messages <span id="sidebar-archives-badge" class="badge"></span> </a> <a title="Hashtags" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/hashtags" id="sidebar-hashtags" class="noborderitem list-group-item sidebar-item sidebar-item-hashtags"> <i class="fa-fw fa fa-hashtag fa-lg"></i> Hashtags <span id="sidebar-hashtags-badge" class="badge"></span> </a> <a title="Subgroups" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/subgroups" id="sidebar-subgroups" class="noborderitem list-group-item sidebar-item sidebar-item-subgroups"> <i class="fa-fw fa fa-chart-pie fa-lg"></i> Subgroups <span id="sidebar-subgroups-badge" class="badge"></span> </a> </div> </div> <div class="text-center" style="font-size:13px;margin-bottom:30px"> <div style="padding-bottom:10px;"> <strong>ctrl</strong> + <strong>shift</strong> + <strong>?</strong> for shortcuts </div> <div style="padding-bottom:5px;"> <a href="https://groups.io/static/about"> About </a> · <a href="https://groups.io/static/features"> Features </a> · <a href="https://groups.io/static/pricing"> Pricing </a> </div> <div style="padding-bottom:5px;"> <a rel="nofollow" href="https://groups.io/g/updates/messages?expanded=1"> Updates </a> · <a href="https://groups.io/static/tos"> Terms </a> · <a href="https://groups.io/helpcenter" target="_blank"> Help </a> </div> <div style="padding-bottom:5px;"> © 2024 Groups.io </div> </div> </div> </div> <div id="maincontent" class="groupmaincontent"> <div id="maincontent-refresh"> <div id="maincontent-column" class="col-xs-12 maincontent-column"> <div id="alertdiv"></div> <div class="noticetemplate template"> <div class="alert alert-success alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true"> × </span> </button> <span class="flashmsg"></span> </div> </div> <div class="alerttemplate template"> <div class="alert alert-danger alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true"> × </span> </button> <span class="flashmsg"></span> </div> </div> <div class="alertnoclosetemplate template"> <div class="alert alert-danger" role="alert"> <span class="flashmsg"></span> </div> </div> <script> function dismiss() { console.log("dismiss"); $.get( "/dismissalert"); } var $alerttemplate = $(".alerttemplate"); var $alertnoclosetemplate = $(".alertnoclosetemplate"); var $noticetemplate = $(".noticetemplate"); function createAlert(msg, isError, autoClose, noClose) { if (isError == false) { $newPanel = $noticetemplate.clone(); } else { if (noClose) { $newPanel = $alertnoclosetemplate.clone(); } else { $newPanel = $alerttemplate.clone(); } } $newPanel.find(".flashmsg").html(msg); if (autoClose == true) { $("#alertdiv").append($newPanel.fadeTo(2000, 500).slideUp(500, function(){ $newPanel.slideUp(500); $newPanel.remove(); })); } else { $("#alertdiv").append($newPanel.fadeIn()); } return $newPanel; } </script> <div class="row breadcrumb-row" style="margin-bottom: 10px"> <div class="col-xs-12 col-sm-9"> <span class="hidden-sm hidden-md hidden-lg pull-right" style="padding:8px 15px;"><a data-toggle="modal" data-target="#searchModal"><i class="fa fa-search"></i></a></span> <div class="breadcrumb-container"> <ol class="breadcrumb scroll-breadcrumb"> <li><a href="https://lists.cncf.io/g/cncf-tag-env-sustainability"><i class="fa fa-home"></i> Cncf-Tag-Env-Sustainability</a></li> <li class="active"><i class="fa fa-inbox"></i> Topics</li> </ol> </div> </div> <div class="col-sm-3 hidden-xs" style="padding-right:0px"> <form class="form-inline pull-right" method="get" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/search"> <input type="hidden" name="p" value="recentpostdate/sticky,,,20,2,20,0"> <div class="input-group"> <input id="searchbox" type="text" class="form-control" placeholder="Search" title="Search" name="q" size="20" value="" style="height:37px"> <div class="input-group-btn"> <button class="btn btn-primary" type="submit" style="height:37px;" aria-label="Search"> <span class="fa fa-search"></span> </button> </div> </div> </form> </div> </div> <div class="modal fade" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true"> × </span> <span class="sr-only"> Close </span> </button> <h4 class="modal-title" id="searchModalLabel"> Search </h4> </div> <form class="form-horizontal" method="get" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/search"> <div class="modal-body"> <div class="form-group"> <div class="col-sm-12"> <input type="text" class="form-control" placeholder="Search" title="Search" name="q" value=""> </div> </div> </div> <div class="modal-footer"> <button class="btn btn-primary btn-sm" aria-label="Search"> <i class="fa fa-search"></i> Search </button> <button type="button" class="btn btn-default btn-sm" data-dismiss="modal"> <i class="fa fa-times"></i> Cancel </button> </div> </form> </div> </div> </div> <div class="row"> <div class="col-xs-9 col-sm-6 col-md-6 narrow-padding" style="padding-top:5px;padding-bottom:10px;"> <form class="form-inline" id="searchForm" method="get" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/search"> <div class="form-group button-link-group"> <div class="btn-group" style="display:inline-block"> <button id="wide-messages" type="button" class="dropdown-wide btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-inbox"></i> Topics <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu"> <li> <a title="Messages" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/messages"> <i class="fa fa-comments"></i> Messages </a> </li> <li> <a title="Expanded" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/messages?expanded=1"> <i class="fa fa-comments"></i> Expanded </a> </li> <li> <a title="Polls" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/polls"> <i class="fa fa-chart-bar"></i> Polls </a> </li> </ul> </div> <div class="btn-group"> <a id="narrow-messages" href="javascript:void(0)" class="dropdown-narrow btn btn-sm btn-default " style="margin-left:-4px;" data-drawer-trigger aria-controls="messages-drawer" aria-expanded="false"> <i class="fa fa-inbox"></i> Topics <span class="caret"></span> </a> </div> <section class="drawer drawer-bottom" id="messages-drawer" data-drawer-target> <div class="drawer-overlay" data-drawer-close tabindex="-1"></div> <div class="drawer-wrapper"> <div class="drawer-content"> <div class="list-group"> <a href="#" class="list-group-item disabled" title="Topics"> <i class="fa fa-inbox"></i> Topics </a> <a class="list-group-item" title="Messages" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/messages"> <i class="fa fa-comments"></i> Messages </a> <a class="list-group-item" title="Expanded" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/messages?expanded=1"> <i class="fa fa-comments"></i> Expanded </a> <a class="list-group-item" title="Polls" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/polls"> <i class="fa fa-chart-bar"></i> Polls </a> </div> </div> </div> </section> <script> function modalmessages(target) { drawer = document.getElementById('messages-drawer'); if (drawer != null) { drawerObj.closeDrawer(drawer); } $(target).modal('show'); } </script> <input type="hidden" name="d" id="dates" value=""> <input type="hidden" name="ct" id="ct" value="1"> <input type="hidden" name="ev" value=""> <div class="btn-group"> <button class="btn btn-sm btn-info" type="button" data-toggle="collapse" data-target="#advancedSearch" aria-expanded="false" aria-controls="advancedSearch"> Filter <i class="fa fa-filter"></i> </button> </div> <div class="collapse" id="advancedSearch" style="margin-top:10px;"> <div class="btn-group"> <button type="button" class="btn btn-info btn-sm dropdown-toggle bottom10" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Any Time <span class="caret"></span> </button> <ul class="dropdown-menu"> <li> <a href="javascript:void(0)" onclick="$('#dates').val('0'); submitEvent('#searchForm');"> Any Time </a> </li> <li> <a href="javascript:void(0)" onclick="$('#dates').val('1'); submitEvent('#searchForm');"> Past Hour </a> </li> <li> <a href="javascript:void(0)" onclick="$('#dates').val('2'); submitEvent('#searchForm');"> Past 24 Hours </a> </li> <li> <a href="javascript:void(0)" onclick="$('#dates').val('3'); submitEvent('#searchForm');"> Past Week </a> </li> <li> <a href="javascript:void(0)" onclick="$('#dates').val('4'); submitEvent('#searchForm');"> Past Month </a> </li> <li> <a href="javascript:void(0)" onclick="$('#dates').val('5'); submitEvent('#searchForm');"> Past Year </a> </li> <li role="separator" class="divider"></li> <li> <a href="javascript:void(0)" data-toggle="modal" data-target="#customRangeModal"> Custom range... </a> </li> </ul> </div> </div> <!-- Custom Range Modal --> <div class="modal fade" id="customRangeModal" tabindex="-1" role="dialog" aria-labelledby="customRangeModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true"> × </span> <span class="sr-only"> Close </span> </button> <h4 class="modal-title" id="customRangeModalLabel"> Custom Range </h4> </div> <div class="modal-body"> Between <input name="startdate" id="startdate" class="form-control" type="text" size="10" placeholder="Start" /> and <input name="enddate" id="enddate" class="form-control" type="text" size="10" placeholder="End" /> </div> <div class="modal-footer"> <a class="btn btn-primary btn-sm" href="javascript:void(0);" onclick="$('#dates').val('6'); $('#searchForm').submit()"> <i class="fa fa-check"></i> Go </a> </div> </div> </div> </div> <script> flatpickr("#startdate", { onChange: function(selectedDates, dateStr, instance) { const enddateFp = document.querySelector("#enddate")._flatpickr; const startdate = moment($('#startdate').val(), 'MM/DD/YYYY h:mma'); const enddate = moment($('#enddate').val(), 'MM/DD/YYYY h:mma'); console.log("startdate:"+ startdate) if (enddate.isBefore(startdate) || $('#enddate').val() == "") { // send endTime to t + 1 hour u = moment(startdate).add(1, 'days'); var newenddate = u.format("MM/DD/YYYY"); console.log("newenddate:"+ newenddate) enddateFp.setDate(newenddate); } }, static: true }); flatpickr("#enddate", { onChange: function(selectedDates, dateStr, instance) { const startdateFp = document.querySelector("#startdate")._flatpickr; const startdate = moment($('#startdate').val(), 'MM/DD/YYYY h:mma'); const enddate = moment($('#enddate').val(), 'MM/DD/YYYY h:mma'); if (enddate.isBefore(startdate) || $('#startdate').val() == "") { // send endTime to t + 1 hour u = moment(enddate).add(-1, 'days'); var newstartdate = u.format("MM/DD/YYYY"); console.log("newstartdate:"+ newstartdate) startdateFp.setDate(newstartdate); } }, static: true }); </script> </div> </form> </div> <div class="col-xs-3 col-sm-6 col-md-6 narrow-padding"> <form class="form-inline" method="get" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics"> <div class="pull-right" style="margin-bottom:10px"> <a rel="nofollow" class="button-link" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?dir=asc"> Date <i class="fa fa-xs fa-sort-down"></i> </a> <span class="hidden-xs"> <span class="form-group"> 21 - 39 of 39 </span> <ul class="pagination form-group" style="margin: 0px !important;"> <li> <a href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?before=1662649258010212006"> <i class="fa fa-chevron-left"> <span class="sr-only"> previous page </span> </i> </a> </li> <li class="disabled"> <a href="#"> <i class="fa fa-chevron-right"> <span class="sr-only"> next page </span> </i> </a> </li> </ul> </span> </div> </form> </div> </div> <table id="records" class="table table-condensed table-fixed" hx-disinherit="*"> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/time_sensitive/93230747">[Time Sensitive] Sustainability TAG Proposal PLEASE REVIEW</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">4</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi All, From the meeting today, we have updates to the PR here:https://github.com/cncf/toc/pull/903 I had added two minor things according to suggested wording from Emily Fox that we missed in the meeting, but seem not to be substantive changes to the content. The diffs for these can be found in these commits: https://github.com/cncf/toc/commit/252cc8b72ff5bf4353c2fa8f90f94c27193b6262 https://github.com/cncf/toc/commit/e58337c9ded1a51373b9643245a81cc79533ecdc PLEASE review. We need to have voting on this started by Friday or we will not make KubeCon, so it is to our advantage, by Friday, to get this in. Would appreciate a +1 (or -1) according to sentiment. Many thanks to everyone for all of their work. --Marlow</div> </div> <span class="thread-attribution"> Started by Marlow Weston @ <script id="timedisptopic93230747"> $('#timedisptopic93230747').replaceWith(DisplayShortTime(1661358994248926818, false )); </script> · Most recent @ <script id="timedisptopic-recent93230747"> $('#timedisptopic-recent93230747').replaceWith(DisplayShortTime(1662649258010212006, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/updates_from_environmental/93545254">Updates from Environmental Sustainability</a> </span> <div class="truncate-one-line"> <div tabindex="0">Hello all, a short update from our yesterday meeting. [1] Besides the TAG Proposal [2] which will soon enter the voting period, we have a couple of open discussions[3]. Especially we would like to highlight the discussion on crafting a survey to gather end user feedback [4]. The idea would be to have it ready around KubeCon+CloudNativeCon NA, so that we can promote the survey also during the event. Through the following doodle you can vote for the upcoming working sessions one for US/EU and one for Asia timezones, due to the time pressure I will use next week as reference. - NA/EU Friendly: https://doodle.com/meeting/participate/id/eE9GORme - Asia Friendly: https://doodle.com/meeting/participate/id/dRowYMEe Another interesting discussion is our standpoint and perspective on the Scope 3 and other waste/polution. [5] We frequently have this question within the meetings and I would like to shape this in a good way that we can support his activities aligned with our targets. Most important point here is the Out of Scope Furthermore, we have discussion in slack on the Environmental Sustainability responsibilities as an organization of CNCF. This is far beyond the purpose of this group, however, leading this discussion and bring it up could be fun. We will ping the group of people who are leading this discussion, so we can craft here something relevant. Best Regards Max [1] https://docs.google.com/document/d/1TkmMyXJABC66NfYmivnh7z8Y_vpq9f9foaOuDVQS_Lo/edit# [2] https://github.com/cncf/toc/pull/903 [3] https://github.com/cncf/wg-env-sustainability/discussions [4] https://github.com/cncf/wg-env-sustainability/discussions/33 [5] https://github.com/cncf/wg-env-sustainability/discussions/32 Max Körbächer Associate Partner Liquid Reply Liquid Reply GmbH Sitz/Registered Office: Gütersloh Handelsregister/Register of Companies: Amtsgericht Gütersloh, HRB 11915 Geschäftsführer/Managing Directors: Dr. Thomas Hartmann, Tomislav Zorc</div> </div> <span class="thread-attribution"> Started by Koerbaecher Max @ <script id="timedisptopic93545254"> $('#timedisptopic93545254').replaceWith(DisplayShortTime(1662632382924321908, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/tag_proposal_modification_pr/93181868">TAG Proposal modification PR [TIME SENSITIVE]</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">2</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hello All, In the interest in getting this in before KubeCon, as the TOC has a deadline upcoming to prep for KubeCon and freeze proposals, I have created a PR to address current comments on the proposal here: https://github.com/catblade/toc/pull/3 Please comment/correct ASAP (I'm expecting people to have changes to what I've added/written). I suggest we get in suggestions and address them in a Wednesday meeting during the normal meeting time. Many thanks, --Marlow "Inspiration exists but it has to find you working." --Pablo Picasso</div> </div> <span class="thread-attribution"> Started by Marlow Weston @ <script id="timedisptopic93181868"> $('#timedisptopic93181868').replaceWith(DisplayShortTime(1661177424425020997, false )); </script> · Most recent @ <script id="timedisptopic-recent93181868"> $('#timedisptopic-recent93181868').replaceWith(DisplayShortTime(1661300962160277375, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/time_sensitive/93041811">[Time Sensitive] Sustainability TAG Proposal</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">3</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hello All, With several rounds of reiterations from the group, the sustainability TAG proposal is updated and moved from the HackMD working doc to Github.You can find in Marlow Weston's repo HERE. The plan is to submit this proposal to the TOC on Wed, Aug 17. If you have any further feedback on the proposal, then you will need to submit a pull request by 5pm PST tomorrow, Aug 16. Thanks, Cara</div> </div> <span class="thread-attribution"> Started by Cara Delia @ <script id="timedisptopic93041811"> $('#timedisptopic93041811').replaceWith(DisplayShortTime(1660584832226167794, false )); </script> · Most recent @ <script id="timedisptopic-recent93041811"> $('#timedisptopic-recent93041811').replaceWith(DisplayShortTime(1660684505695753983, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/tag_charter_proposal_outline/92815011">TAG Charter Proposal, Outline</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">3</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi - Based on our conversation on yesterday's call, I've drafted a proposal for an outline. The document includes outlines reflecting the current state of the proposal and an analysis of other TAG charters. Please review, comment and update. The document is available for comment to anyone with the link. Feel free to request write access. Next step is to agree on a proposed outline and update the document accordingly. Cheers, Ariel</div> </div> <span class="thread-attribution"> Started by Ariel Jatib @ <script id="timedisptopic92815011"> $('#timedisptopic92815011').replaceWith(DisplayShortTime(1659625210382513776, false )); </script> · Most recent @ <script id="timedisptopic-recent92815011"> $('#timedisptopic-recent92815011').replaceWith(DisplayShortTime(1659625908008469597, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/follow_up_tag_proposal/92813669">Follow-up TAG proposal meetings</a> <i class="fa fa-paperclip"></i> </span> <div class="truncate-one-line"> <div tabindex="0">Hi Community: We had a great meeting yesterday. Following up with the feedback, we are going to meet in the following events, hopefully convenient to all time zones. Time/Date: For North American time zones: 2–3pm US ET/11AM-12PM US PT/6-7PM UTC, Wednesday, Aug 10, 2022 For Asia Pacific time zones: 1-2AM UTC, Friday Aug 12, 2022 (9-10PM US ET/6-7PM US PT, Thursday, Aug 11) For Europe, Middle East, and Africa time zones: 12PM-1PM UTC/8-9AM US ET, Monday, Aug 15th The meetings are through Google meet. All meetings will be recorded. https://meet.google.com/ehs-xusb-oje Details are attached in the ics file. Cheers! Huamin</div> </div> <span class="thread-attribution"> Started by Huamin Chen @ <script id="timedisptopic92813669"> $('#timedisptopic92813669').replaceWith(DisplayShortTime(1659621297153771065, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/updates_from_today/92797596">Updates from today, 08-03-2022</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">2</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hello All! Agreement: Meet next week to continue working on this doc as we go. Goal: Get TAG Proposal polished/through. Timeline: - August 15th, last day of hackmd. All changes then on go through github PRs. - August 17th: Hopefully finalize doc in the meeting, then decide whether ready to submit it. ARs: - Everyone: If you are involved in this doc, please add your name for credit.- Marlow to try to get today's video on sustainability channel until we have an official place to put these. Can then move these over. Will send a link when this is done. - Huamin Chen to send out invites to meetings. At least 2 next week, one the 15th. Should handle multiple geos. - Leo to put together doodle to potentially move time from current time to accommodate more people. Notes: - Should be looking at other charters. Request to head in the direction of increased brevity. Reviews of examples here: https://github.com/cncf/toc/tree/main/tags - This will define the basis for where we go, but we have been informed we can make PRs to the charter later. Special personal note from myself: Thank you everyone for continuing to work on this document. I was cheered by the positive attitudes today in the meeting and hope this energy continues. Please do point out if I left anything major out.. Best wishes, --Marlow "Inspiration exists but it has to find you working." --Pablo Picasso</div> </div> <span class="thread-attribution"> Started by Marlow Weston @ <script id="timedisptopic92797596"> $('#timedisptopic92797596').replaceWith(DisplayShortTime(1659548724688922946, false )); </script> · Most recent @ <script id="timedisptopic-recent92797596"> $('#timedisptopic-recent92797596').replaceWith(DisplayShortTime(1659566105523695584, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/environmental_sustainability/92509129">Environmental Sustainability TAG Proposal</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">4</span> <i class="fa fa-paperclip"></i> </span> <div class="truncate-one-line"> <div tabindex="0">Hello all, For those needing context, the ToC has stepped in and said that the WG is being dissolved and we are to start a TAG instead. With that in mind, we need a proposal for this. I have taken the initiative and begun a TAG Proposal here borrowing heavily from content on the current charter and mimicking much of what TAG Security included within their own proposal: https://github.com/catblade/wg-env-sustainability/blob/TAG-env-sustainability-proposal/documentation/EnvironmentalSustainabilityTAGProposal.md We also have this in the hackmd.io sustainability group, so if you would like access there, please email me and I will give you access to that. Feel free to contribute via either avenue. I’ll do my best to resolve any conflicts. Best wishes, --Marlow</div> </div> <span class="thread-attribution"> Started by Weston, Marlow @ <script id="timedisptopic92509129"> $('#timedisptopic92509129').replaceWith(DisplayShortTime(1658336146207340989, false )); </script> · Most recent @ <script id="timedisptopic-recent92509129"> $('#timedisptopic-recent92509129').replaceWith(DisplayShortTime(1659537477116285560, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <div id="msgpayload-49" class="pull-right" style="margin-left:10px;"> <a href="#" onclick="ViewImages(49, 0);return false;" data-image-url="/g/cncf-tag-env-sustainability/attachment/49/0?download=1" data-id="49" data-index="0" data-image-name="Screenshot_20220729-025623.png" data-image-date="07/29/22, 01:06 AM"> <img class="img-rounded" src="/g/cncf-tag-env-sustainability/attachment/49/0?threaddownload=1" style="max-width:100px;max-height:100px;" loading="lazy"> </a> </div> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/cncf_toc/92658201">[cncf-toc] [cncf-wg-env-sustainability] recap of WG meeting</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">7</span> <i class="fa fa-paperclip"></i> </span> <div class="truncate-two-lines"> <div tabindex="0">HI Leonard, Thank you for your input and replying to the mailing list so we can address this issue constructively through an open forum. I want to restate again that the TOC in error should not have greenlit the formalization of the WG. That was on us and we take full responsibility. The model is not supported as we have since updated our charter and process to ensure WG have a home under a TAG. So, after discussion around this we was asked if the WG could belong in a current, already established TAG. Consensus was that Sustainability is a rapidly growing industry and affects multiple parts of the stack, much like security. Therefore, it's a broad enough topic that we foresee multiple projects being proposed and brought to the TAG and eventually the TOC. Could there be separate working groups under the TAG once established, absolutely! To date, the TOC has not approved any leaders or even the TAG charter. Therefore both the scope and leadership has yet to come before a formal vote to the TOC. The TOC liaisons, Richi and myself, are here to help you in the formation of the group and make sure it's done in an open and fair manner. We have no more of a vote than any other TOC member and the process goes through a majority vote. To address your concerns about culture and personal motivations of members, I want to ensure that this is precisely why the TOC has recommended the TAG is to provide the guidance and consistency as well as ensuring any project that comes before the TAG has equal representation regardless of size/company/etc. I hope this helps alleviate your concerns and we can work as a community to get this new TAG up and running! Thanks, Erin</div> </div> <span class="thread-attribution"> Started by Erin Boyd @ <script id="timedisptopic92658201"> $('#timedisptopic92658201').replaceWith(DisplayShortTime(1658954774156900840, false )); </script> · Most recent @ <script id="timedisptopic-recent92658201"> $('#timedisptopic-recent92658201').replaceWith(DisplayShortTime(1659118134494510780, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/recap_of_wg_meeting/92638367">recap of WG meeting</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">8</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi Folks, Just wanted to touch base and reiterate our position in the TOC and see if there are any questions moving forward. The current Environmental Sustainability WG will be disbanded and formalized into a TAG. Many of you may be asking 'why?' Let me attempt to address those concerns here: 1) Currently we don't have a governance or process structure that supports work groups unattached/affiliated with a TAG. We have formalized our documentation to reflect this and recognize our negligence in the formation of the group months ago. 2) Ensure governance, processes, etc... are consistent with the CNCF way & provide an avenue for the TAG to engage with the TOC for support/media/talks/etc... What is next? The TOC is looking to work with the current community to submit a proposal for the TAG along with accepting nominations for 3 leadership co-chair positions. These will be voted on by the TOC. These positions have a 2-year term limit consistent with the other TAG co-chairs. @Richard Hartmann and I are here to help and will be serving as your TOC sponsors! We look forward to working with you. Please let us know how we can help. Thanks, Erin -- Erin A. Boyd Director of Emerging Technologies OCTO Distinguished Engineer Red Hat eboyd@...</div> </div> <span class="thread-attribution"> Started by Erin Boyd @ <script id="timedisptopic92638367"> $('#timedisptopic92638367').replaceWith(DisplayShortTime(1658873419946736609, false )); </script> · Most recent @ <script id="timedisptopic-recent92638367"> $('#timedisptopic-recent92638367').replaceWith(DisplayShortTime(1659003099118211874, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/cncf_toc/92656771">[cncf-toc] [cncf-wg-env-sustainability] recap of WG meeting</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">2</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi folks, I don't know if it helps here but maybe try to think about "projects first". What is the project here and why? This is more important than forming committees (though they too, have a place).</div> </div> <span class="thread-attribution"> Started by Alexis Richardson @ <script id="timedisptopic92656771"> $('#timedisptopic92656771').replaceWith(DisplayShortTime(1658950181323891778, false )); </script> · Most recent @ <script id="timedisptopic-recent92656771"> $('#timedisptopic-recent92656771').replaceWith(DisplayShortTime(1658950944863810541, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/cncf_toc/92656025">[cncf-toc] [cncf-wg-env-sustainability] recap of WG meeting</a> </span> <div class="truncate-one-line"> <div tabindex="0">The chairs can be proposed outside the TAG proposal (per TOC consensus). Erin -- Erin A. Boyd Director of Emerging Technologies OCTO Distinguished Engineer Red Hat eboyd@...</div> </div> <span class="thread-attribution"> Started by Erin Boyd @ <script id="timedisptopic92656025"> $('#timedisptopic92656025').replaceWith(DisplayShortTime(1658948176034698480, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/cncf_toc/92656024">[cncf-toc] [cncf-wg-env-sustainability] recap of WG meeting</a> </span> <div class="truncate-one-line"> <div tabindex="0">Max, I had the notion that we are way past the google doc stage and things need to be codified in github now (like usual business)? Let's please move forward with github. thanks, Dims-- Davanum Srinivas :: https://twitter.com/dims</div> </div> <span class="thread-attribution"> Started by Davanum Srinivas @ <script id="timedisptopic92656024"> $('#timedisptopic92656024').replaceWith(DisplayShortTime(1658948175621345299, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/proposal_leadership_team/92511553">Proposal: Leadership team nomination for the TAG</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">3</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi, I want to propose nominating the leadership team for the upcoming TAG. To make the TAG and CNCF successful, my criteria is along these lines: - Do the nominees have strong tracking records in community management and project maintenance, especially in sustainability and related areas? - Are the nominees committed to work with their best knowledge for the TAG and CNCF for the duration of their tenure (the term is in line with CNCF conventions)? - Does the leadership team represent a balance between research, development, and community management? Having been with CNCF since the first day, I am fortunate to meet and work with some great minds and get their commitment into this sustainability initiative. Hence I am proposing the following leadership team: CNCF TOC Liaison Scott Rigby @WeaveWorks. Scott is a productive CNCF project contributor and maintainer (Helm and Flux). He is also a chair of CNCF App Delivery. He is fluid and transparent, as we all see in the community meetings. Chair (in alphabetical order) - Cara Delia @Red Hat. Cara is a Principal Community Architect within Red Hat’s Office of the CTO contributing to a variety of upstream projects-including software projects, industry consortia, and software foundations focused on sustainability and/or financial services. The elements of sustainability she has most focused on have been carbon tracking and tooling and sustainable finance. - Chen Wang @IBM. Dr. Wang is an IBM research scientist focusing on energy efficiency and workload optimization. She has contributed extensively to Kubernetes SIGs. - Marlow Weston @Intel. Marlow is a Cloud Native Architect at Intel working on resource management and sustainability solutions. I hope the community can review these candidates and share your views. Best, Huamin</div> </div> <span class="thread-attribution"> Started by Huamin Chen @ <script id="timedisptopic92511553"> $('#timedisptopic92511553').replaceWith(DisplayShortTime(1658343303489457282, false )); </script> · Most recent @ <script id="timedisptopic-recent92511553"> $('#timedisptopic-recent92511553').replaceWith(DisplayShortTime(1658345474253396716, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/white_paper_location/92092697">White paper location</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">7</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hi All, I have approval to move material over for the landscape and use cases doc from a document started by Huamin Chen, Niki Manoledaki, and myself. Options: 1) Start in the github under a whitepaper directory using markdown. 2) hackmd with authenticated users editing. 3) Google doc (harder to get credit per user and formatting is hard) 4) Carrier pigeon 5) something else? Please vote on which and I'll get that started before the next meeting. Thank you, --Marlow</div> </div> <span class="thread-attribution"> Started by Marlow Weston @ <script id="timedisptopic92092697"> $('#timedisptopic92092697').replaceWith(DisplayShortTime(1656612578691071300, false )); </script> · Most recent @ <script id="timedisptopic-recent92092697"> $('#timedisptopic-recent92092697').replaceWith(DisplayShortTime(1657119405418174112, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/update_last_community_meeting/91824217">Update last Community Meeting</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">4</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hello everyone! I want to give you some updates from our last community meeting. We are still in the storming and forming phase, receiving significant input and recommendations and slowly setting down our initial guardrails. Chairs & Tech Leads As any good WG we require some people who are willing and able to take the servant leadership role. We aligned in our meeting that we shouldn't rush on this, as most of the people within the group are new and don't know each other. We will open up a nomination period in around 2 weeks - I think a reasonable target would be the 1st of July. Sub-Projects We are currently trying to gather community input and enrich the initial ideas for the sub-projects we have outlined. I believe this is required to prioritize, shape and plan the work that needs to be done. You can find the collection at a public Miro board (https://miro.com/app/board/uXjVOwMJ6nw=/?share_link_id=688986803496), this will be later migrated to GitHub issues on a project board. Way of working We discussed the best way to set up our way of working. It should be asynchronously and persistent. The current idea is as follows: GitHub Discussions are used to discuss topics from setting up new projects, new ideas etc. GitHub Issues & Project Board will be used to manage actual work items and track the progress. Mailing list & Slack are for the communication, pointing to current discussions, work items, PRs and so on. Please find the meeting notes here: https://docs.google.com/document/d/1TkmMyXJABC66NfYmivnh7z8Y_vpq9f9foaOuDVQS_Lo Best Max Liquid Reply GmbH Sitz/Registered Office: Gütersloh Handelsregister/Register of Companies: Amtsgericht Gütersloh, HRB 11915 Geschäftsführer/Managing Directors: Dr. Thomas Hartmann, Tomislav Zorc</div> </div> <span class="thread-attribution"> Started by Koerbaecher Max @ <script id="timedisptopic91824217"> $('#timedisptopic91824217').replaceWith(DisplayShortTime(1655481200096635762, false )); </script> · Most recent @ <script id="timedisptopic-recent91824217"> $('#timedisptopic-recent91824217').replaceWith(DisplayShortTime(1656415200856712576, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/environment_sustainability/91507720">Environment sustainability and autoscaling</a> </span> <div class="truncate-one-line"> <div tabindex="0">Hi, My name is Tom Kerkhove and I'm one of the maintainers of Kubernetes Event-driven Autoscaling (KEDA) that allows end-users to efficiently scale workloads. We have a strong focus on scaling applications with low footprint and have started a thread in Slack earlier this week. While we are not committing to anything, I'm very curious to hear feedback from sustainability experts to see how we can help as an autoscaler to reduce the impact on our environment. One idea in the thread is to introduce a carbon scaler that will only allow you to scale out if the carbon impact is not too high. Another idea I personally have is to see if we can help with the scheduling process to go with spot instances when available over more beefy ones to reduce compute waste. PS: For those interested, there was a very nice talk at KubeCon NA last year that talked about using KEDA to reduce environmental impact. So in short - How can we help reduce the impact on the environment as an autoscaler? Let your wildest ideas become a reality (if we can make it happen). Kind regards, Tom Kerkhove Software Engineer at Microsoft – CNCF Ambassador - Ex-Azure MVP & GitHub Star - AZUG Crew Member Blog - blog.tomkerkhove.be Twitter - @TomKerkhove</div> </div> <span class="thread-attribution"> Started by Tom Kerkhove @ <script id="timedisptopic91507720"> $('#timedisptopic91507720').replaceWith(DisplayShortTime(1654199786604853398, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/saw_the_announcement/91479410">Saw the announcement!</a> </span> <div class="truncate-one-line"> <div tabindex="0">Hello: I just saw the post about the group on the CNCF blog, and decided to join. In my "day job" I work for a company that provides distributed energy resources behind the meter, and automates management of those resources for optimal usage. We use CNCF projects extensively. I'm also passionate about sustainability and stewardship generally. I'm looking forward to finding opportunities to get engaged. :Daniel</div> </div> <span class="thread-attribution"> Started by Daniel Shown @ <script id="timedisptopic91479410"> $('#timedisptopic91479410').replaceWith(DisplayShortTime(1654098348971500649, false )); </script> </span> </div> </div> </div> </td> </tr> <tr > <td hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="margin-top:3px;margin-bottom:3px;"> <div class="row"> <div class="col-xs-12"> <span class="subject"> <a class="showvisited subject" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topic/valencia_informal_get/91135990">Valencia informal get together</a> <span class="hashtag-position label label-primary" style="font-size:11.25px;">16</span> </span> <div class="truncate-one-line"> <div tabindex="0">Hey all, while our mailing list and group keep growing, I would like to propose an informal get-together on the KubeCon+CloudNativeCon Valencia. Unluckily due to the less time between the WG approval and the conference we couldn't get a room or anything else for us. Therefore, I would like to propose either meeting on Thursday during one of the coffee breaks maybe right after the Keynotes, or even better during the Lunch break. This gives us time to get around the conference space and identify a good spot to meet. What do you think? Best Max</div> </div> <span class="thread-attribution"> Started by Koerbaecher Max @ <script id="timedisptopic91135990"> $('#timedisptopic91135990').replaceWith(DisplayShortTime(1652692642052088703, false )); </script> · Most recent @ <script id="timedisptopic-recent91135990"> $('#timedisptopic-recent91135990').replaceWith(DisplayShortTime(1653229372445099781, false )); </script> </span> </div> </div> </div> </td> </tr> </table> <form class="form" method="POST" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/domerge"> <input type="hidden" name="threadid" id="threadid" value="0"> <!-- Verify Merge Modal --> <div class="modal fade" id="mergeThreadModal" tabindex="-1" role="dialog" aria-labelledby="mergeThreadModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true"> × </span> <span class="sr-only"> Close </span> </button> <h4 class="modal-title" id="mergeThreadModalLabel"> Verify Merge </h4> </div> <div class="modal-body"> Are you sure you wish to merge the topic '' into the topic '<span id="subject">Action</span>'? </div> <div class="modal-footer"> <button type="button" class="btn btn-default btn-sm" data-dismiss="modal"> <i class="fa fa-times"></i> Cancel </button> <button class="btn btn-primary btn-sm" name="merge" value="1"> <i class="fa fa-compress"></i> Yes </button> </div> </div> </div> </div> </form> <div class="row" style="margin-bottom:20px;"> <div class="col-xs-12"> <div class="pull-right form-inline"> <span class="form-group"> 21 - 39 of 39 </span> <ul class="pagination form-group" style="margin: 0px !important;vertical-align:middle;"> <li> <a href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?before=1662649258010212006"> <i class="fa fa-chevron-left"> <span class="sr-only"> previous page </span> </i> </a> </li> <li class="hidden-xs"> <a rel="nofollow" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics"> 1 </a> </li> <li class="hidden-xs disabled"> <a class="currentpage" href="#"> 2 </a> </li> <li class="disabled"> <a href="#"> <i class="fa fa-chevron-right"> <span class="sr-only"> next page </span> </i> </a> </li> </ul> </div> </div> </div> <!-- Verify Remove Modal --> <form class="form-horizontal" id="delModalForm" method="POST" action="https://lists.cncf.io/g/cncf-tag-env-sustainability/editthread"> <input type="hidden" name="tid" id="delthreadid" value=""> <div class="modal fade" id="deleteThreadModal" tabindex="-1" role="dialog" aria-labelledby="deleteThreadModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true"> × </span> <span class="sr-only"> Close </span> </button> <h4 class="modal-title" id="deleteThreadModalLabel"> Verify Delete </h4> </div> <div class="modal-body"> Are you sure you wish to delete this topic? This cannot be undone. </div> <div class="modal-footer"> <button type="button" class="btn btn-default btn-sm" data-dismiss="modal"> <i class="fa fa-times"></i> Cancel </button> <button class="btn btn-danger btn-sm" name="delthread" value="1"> <i class="fa fa-trash-alt"></i> Yes </button> </div> </div> </div> </div> </form> <!-- View Image Modal --> <div class="viewer-overlay" id="overlay"> <div class="viewer-overlay-controls"> <i class="fa-regular fa-2x fa-arrow-down-to-line" id="downloadImage" style="margin-left: 20px;color: #FFF;cursor: pointer;"></i> <i class="fa-regular fa-2x fa-times" id="closeOverlay" style="margin-left: 20px;color: #FFF;cursor: pointer;"></i> </div> <div class="viewer-image-container"> <i class="fa-regular fa-2x fa-chevron-left viewer-arrow" id="prevImage" style="left:-35px;color: #FFF;cursor: pointer;"></i> <img id="currentImage" src="" alt="Current Image"> <i class="fa-regular fa-2x fa-chevron-right viewer-arrow" id="nextImage" style="right:-35px;color: #FFF;cursor: pointer;"></i> </div> <div class="viewer-image-info"> <b>Image Name</b><br> Sat 8:39am </div> <div class="viewer-thumbnail-outer-container" id="thumbnailOuterContainer"> <div class="viewer-thumbnail-container" id="thumbnailContainer"></div> </div> </div> <script> contentLoaded(false, function() { UpdateSidebar("archives"); const ViewImages = (function() { // Private variables let imageURLs = []; let currentImageIndex = 0; // Private functions function updateImage() { const currentImage = imageURLs[currentImageIndex]; document.getElementById('currentImage').src = currentImage.url; const imageInfo = document.querySelector('.viewer-image-info'); imageInfo.innerHTML = `<b>${currentImage.name}</b><br>${currentImage.date}`; document.querySelectorAll('.viewer-thumbnail').forEach(function(thumb, index) { thumb.classList.remove('selected'); if (index === currentImageIndex) { thumb.classList.add('selected'); } }); scrollThumbnailsToCenter(); } function scrollThumbnailsToCenter() { const outerContainer = document.getElementById('thumbnailOuterContainer'); const container = document.getElementById('thumbnailContainer'); const selectedThumb = document.querySelector('.viewer-thumbnail.selected'); const scrollLeft = -1*(selectedThumb.offsetLeft - outerContainer.offsetWidth / 2 + selectedThumb.offsetWidth / 2); console.log("offset: " + selectedThumb.offsetLeft); console.log("outerContainer width: " + outerContainer.offsetWidth); console.log("container width: " + container.offsetWidth); console.log("image width: " + selectedThumb.offsetWidth); scroll = scrollLeft + "px" console.log("scrollLeft: " + scroll); $('#thumbnailContainer').css({left:scroll}).animate({'left': scroll}, 500); } let viewerTouchStartX = 0; let viewerTouchEndX = 0; function viewerHandleTouchStart(event) { console.log("viewerHandleTouchStart"); viewerTouchStartX = event.changedTouches[0].clientX; } function viewerHandleTouchEnd(event) { console.log("viewerHandleTouchEnd"); viewerTouchEndX = event.changedTouches[0].clientX; handleSwipe(); } function handleSwipe() { if (viewerTouchEndX < viewerTouchStartX) { // Swipe left if (currentImageIndex < imageURLs.length - 1) { currentImageIndex = currentImageIndex + 1; updateImage(); } } if (viewerTouchEndX > viewerTouchStartX) { // Swipe right if (currentImageIndex > 0) { currentImageIndex = currentImageIndex - 1; updateImage(); } } } // Public functions function View(dataId, index) { event.preventDefault(); // Stop the default action // Find the parent msgpayload element using the data-id let msgPayloadElement = document.getElementById(`msgpayload-${dataId}`); // Find all image elements within the msgpayload element imageURLs = []; currentImageIndex = index; // Loop through each image element and push its src attribute to the imageURLs array let imageElements = msgPayloadElement.querySelectorAll('[data-image-url]'); imageElements.forEach(function(img) { let imgObj = new Object; imgObj.url = img.getAttribute('data-image-url'); imgObj.name = img.getAttribute('data-image-name'); imgObj.date = img.getAttribute('data-image-date'); imageURLs.push(imgObj); }); const thumbnailContainer = document.getElementById('thumbnailContainer'); thumbnailContainer.innerHTML = ''; imageURLs.forEach((image, i) => { const thumbnail = document.createElement('img'); thumbnail.className = 'viewer-thumbnail thumbnail'; thumbnail.src = image.url; thumbnail.style.display = "inline-table"; thumbnail.addEventListener('click', function() { currentImageIndex = i; updateImage(); }); thumbnailContainer.appendChild(thumbnail); }); if (imageURLs.length == 1) { // hide arrows document.getElementById('prevImage').style.display = 'none'; document.getElementById('nextImage').style.display = 'none'; } document.getElementById('overlay').classList.add('visible'); updateImage(); // Now you have an array of image URLs console.log(imageURLs); } function Destroy() { // Cleanup code, remove event listeners, etc. console.log("ViewImages destroy"); let ele = document.getElementById('downloadImage') if (ele == null) { return; } ele.removeEventListener('click', downloadImageClickHandler); document.getElementById('closeOverlay').removeEventListener('click', closeOverlayClickHandler); document.getElementById('nextImage').removeEventListener('click', nextImageClickHandler); document.getElementById('prevImage').removeEventListener('click', prevImageClickHandler); document.getElementById('currentImage').removeEventListener('touchstart', viewerHandleTouchStart); document.getElementById('currentImage').removeEventListener('touchend', viewerHandleTouchEnd); document.removeEventListener('keyup', keyupHandler); document.getElementById('prevImage').style.display = 'block'; document.getElementById('nextImage').style.display = 'block'; } // Initialize event listeners document.getElementById('downloadImage').addEventListener('click', downloadImageClickHandler); function downloadImageClickHandler() { saveImage(); } async function saveImage() { // Get the image element const imageElement = document.getElementById('myImage'); // Fetch the image const response = await fetch(imageURLs[currentImageIndex].url); const blob = await response.blob(); // Create an anchor element const a = document.createElement('a'); // Create a URL for the blob const url = URL.createObjectURL(blob); // Set the href attribute to the blob URL a.href = url; // Set the download attribute to specify the file name a.download = imageURLs[currentImageIndex].name; // Append the anchor to the DOM (this part is necessary for Firefox) document.body.appendChild(a); // Trigger the download a.click(); // Release the blob URL URL.revokeObjectURL(url); // Remove the anchor from the DOM document.body.removeChild(a); } document.getElementById('closeOverlay').addEventListener('click', closeOverlayClickHandler); function closeOverlayClickHandler() { document.getElementById('overlay').classList.remove('visible'); } document.getElementById('nextImage').addEventListener('click', nextImageClickHandler); function nextImageClickHandler() { currentImageIndex = (currentImageIndex + 1) % imageURLs.length; updateImage(); } document.getElementById('prevImage').addEventListener('click', prevImageClickHandler); function prevImageClickHandler() { currentImageIndex = (currentImageIndex - 1 + imageURLs.length) % imageURLs.length; updateImage(); } document.addEventListener('keyup', keyupHandler); function keyupHandler(e) { if (e.key === 'Escape') { let ele = document.getElementById('overlay'); if (ele != null) { ele.classList.remove('visible'); } } } // Attach touch events document.getElementById('currentImage').addEventListener('touchstart', viewerHandleTouchStart); document.getElementById('currentImage').addEventListener('touchend', viewerHandleTouchEnd); return { View, Destroy }; })(); window.ViewImages = ViewImages.View; gioDestroy(function(evt) { window.ViewImages = null; ViewImages.Destroy(); }); $('.hashtagcheckbox').change(function() { let el = $(this); switch(el.data('checked')) { // checked, going indeterminate case 0: console.log("case 0"); el.data('checked',1); el.prop('indeterminate',true); break; // indeterminate, going unchecked case 1: console.log("case 1"); el.data('checked',2); el.prop('indeterminate',false); el.prop('checked',false); break; // checked, going unchecked default: console.log("case default"); el.data('checked',0); el.prop('indeterminate',false); el.prop('checked',true); } }); // prevent dropdown closure on clicking checkbox labels $('#hashtagFilterMenu').on('click', function (e) { e.stopPropagation(); }); $('#filterdropdown').on('hide.bs.dropdown', function (e) { console.log("HIDE DROPDOWN!"); }); $(".modal").on('shown.bs.modal', function () { $(this).find("input:visible:first").focus(); }); $("[data-toggle='tooltip']").tooltip(); setPullToRefresh(); }) function searchHashtags() { var cbs = document.getElementsByTagName('input'); for(var i=0; i < cbs.length; i++) { if(cbs[i].indeterminate == true) { $('<input>').attr({ type: 'hidden', name: 'exclude', value: cbs[i].value, }).appendTo('#searchForm'); } } submitEvent('#searchForm'); } function setupInto(threadid, subject) { $("#subject").replaceWith("<span id=\"subject\">" + subject + "</span>"); $('#threadid').val(threadid); } $('#mergeThreadModal').on('show.bs.modal', function(event) { var button = $(event.relatedTarget) // Button that triggered the modal var subject = button.data('subject') // Extract info from data-* attributes var threadid = button.data('threadid') // Extract info from data-* attributes $("#subject").replaceWith("<span id=\"subject\">" + subject + "</span>"); $('#threadid').val(threadid); }) $('#deleteThreadModal').on('show.bs.modal', function(event) { var button = $(event.relatedTarget) // Button that triggered the modal var threadid = button.data('threadid') // Extract info from data-* attributes $('#delthreadid').val(threadid); }) function setupDeleteModal(threadid) { console.log("in setupDeleteModal") } function showElement(isTruncated) { this.style.display = 'block'; } </script> </div> </div> </div> </div> <div class="row hidden-print" id="mobileSidebar" hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div id="mobileSidebarSub" class="col-xs-12 hidden-md hidden-lg"> <div class="navbar navbar-default navbar-fixed-bottom"> <div class="container" style="display: flex; justify-content: space-around;"> <div id="mobilesidebar-archives" class="mobilesidebar-item" style="margin-top:10px; padding-bottom:20px; flex: 1; text-align: center;" hx-get="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?sidebar=true" hx-boost="true" hx-target="#maincontent-refresh" hx-push-url="true" hx-history="false" hx-on::after-request="document.getElementById('maincontent').scrollTo({top: 0, behavior: 'instant'})" > <div style="display: inline-block; position: relative;"> <div style="position: relative;display: inline-block;"> <i class="fa-fw fa-solid fa-comments fa-2x"></i> </div><br> <span style="font-size:12px;">Messages</span> </div> </div> <div style="flex: 1; text-align: center;margin-top:10px" data-drawer-trigger aria-controls="drawer-name" aria-expanded="false"> <i class="fa-fw fa-light fa-bars fa-2x"></i><br> <span style="font-size:12px;">More</span> </div> </div> </div> <section class="drawer drawer-left" id="drawer-name" data-drawer-target> <div class="drawer-overlay" data-drawer-close tabindex="-1"></div> <div class="drawer-wrapper drawer-wrapper-top"> <div class="drawer-header"> <div class="drawer-title"> <i class="fa-fw fa-regular fa-bars fa-3x"></i> <span class="sr-only"> More Options </span> More </div> <button class="drawer-close" data-drawer-close aria-label="Close Drawer"></button> </div> <div class="drawer-content"> <div class="list-group noborderlist"> <a title="Group Home" href="https://lists.cncf.io/g/cncf-tag-env-sustainability" class="list-group-item sidebar-item"> <i class="fa-fw fa fa-home fa-lg"></i> Home </a> <a title="Messages" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/topics?sidebar=true" id="sidebar-archives-mobile" class="noborderitem list-group-item sidebar-item sidebar-item-archives active"> <i class="fa-fw fa fa-comments fa-lg"></i> Messages <span id="sidebar-archives-mobile-badge" class="badge"></span> </a> <a title="Hashtags" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/hashtags" id="sidebar-hashtags-mobile" class="noborderitem list-group-item sidebar-item sidebar-item-hashtags"> <i class="fa-fw fa fa-hashtag fa-lg"></i> Hashtags <span id="sidebar-hashtags-mobile-badge" class="badge"></span> </a> <a title="Subgroups" href="https://lists.cncf.io/g/cncf-tag-env-sustainability/subgroups" id="sidebar-subgroups-mobile" class="noborderitem list-group-item sidebar-item sidebar-item-subgroups"> <i class="fa-fw fa fa-chart-pie fa-lg"></i> Subgroups <span id="sidebar-subgroups-mobile-badge" class="badge"></span> </a> <a class="noborderitem list-group-item sidebar-item" href="https://groups.io/static/tos" target="_blank"> <i class="fa-fw fal fa-newspaper fa-lg"></i> Terms </a> </div> </div> </div> </section> </div> </div> <!-- Modal Dialog for Autocomplete --> <div class="modal fade" id="quickActionsModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> <input type="text" class="form-control" id="quickActionsInput" placeholder="Go to page..." style="margin-bottom:10px"> <div id="quickActionsContainer" class="autocompleteResults" style="max-height:250px; overflow-y: auto;"></div> <div class="text-center" style="margin-top:10px; font-size:12px;"><i class="fa-sharp fa-arrow-up-arrow-down"></i> to navigate <i class="fa-sharp fa-arrow-turn-down-left"></i> to use <strong>esc</strong> to dismiss</div> </div> </div> </div> </div> <script> var quickActionsData = [ {name: "Group Home", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability"}, {name: "Topics", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/topics"}, {name: "Messages", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/messages"}, {name: "Expanded Messages", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/messages?expanded=1"}, {name: "Polls", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/polls"}, {name: "Hashtags", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/hashtags"}, {name: "Subgroups", url: "https://lists.cncf.io/g/cncf-tag-env-sustainability/subgroups"}, /* other pages */ {name: "Help", url: "/helpcenter"}, {name: "Feed", url: "/feed"}, {name: "Your Groups", url: "/groups"}, {name: "Your Calendar", url: "/calendar"}, {name: "Your Activity", url: "/activity"}, {name: "Your Pending Messages", url: "/pendingmsgs"}, {name: "Account Login", url: "/account"}, {name: "Account Preferences", url: "/account?page=prefs"}, {name: "Account Security", url: "/account?page=security"}, {name: "Account Identity", url: "/account?page=profile&member_info_id=0"}, {name: "Account Notifications", url: "/account?page=notifications"}, {name: "Account Other Services", url: "/account?page=oauth"}, {name: "Account Bounces", url: "/account?page=bounces"}, {name: "Account Billing", url: "/account?page=billing"}, {name: "Find a Group", url: "/search?p=SubsCount,,,20,2,0,0"}, ]; InitAutocomplete("quickActions", quickActionsData); document.addEventListener('keydown', function(event) { var tagName = event.target.tagName.toLowerCase(); if (tagName === 'input' || tagName === 'textarea' || event.target.isContentEditable) { return; } // check if the viewimages viewer is up let element = document.getElementById('overlay'); if (element && element.classList.contains('visible')) { return; } if (event.key.toLowerCase() === '/') { if (navigator.platform.toUpperCase().indexOf('MAC') >= 0) { // For Mac // Check if Command (event.metaKey) is pressed, and either Option (event.altKey) is pressed or not if (event.metaKey) { event.preventDefault(); showAutocompleteModal("quickActions"); return; } } else { // For Windows and Linux if (event.ctrlKey) { event.preventDefault(); showAutocompleteModal("quickActions"); return; } } } }); function UpdateSidebar(id) { console.log(id + " was clicked"); var sidebarItems = document.querySelectorAll('.mobilesidebar-item'); sidebarItems.forEach(function(item) { var iElement = item.getElementsByTagName('div')[0].getElementsByTagName('i')[0]; if (item.id == "mobilesidebar-" + id) { console.log("making solid " + id) iElement.classList.add('fa-solid'); iElement.classList.remove('fa-light'); } else { iElement.classList.remove('fa-solid'); iElement.classList.add('fa-light'); } }); var sidebarItems = document.querySelectorAll('.sidebar-item'); // remove 'active' class from all 'sidebar-item' elements sidebarItems.forEach(function(item) { if (item.id == "sidebar-" + id) { console.log("making active " + id) item.classList.add('active'); } else { item.classList.remove('active'); } }); } </script> </div> <div id="scroll-top-outer"> <div id="scroll-top" class="scroll-top-wrapper hidden-xs"> <span class="scroll-top-inner"> <i class="fa fa-arrow-circle-up fa-fw fa-2x"></i> </span> </div> </div> <script> $(function() { $(document).on('scroll', function() { if ($(window).scrollTop() > 100) { $('.scroll-top-wrapper').addClass('show'); } else { $('.scroll-top-wrapper').removeClass('show'); } }); $('.scroll-top-wrapper').on('click', scrollToTop); }); function scrollToTop() { verticalOffset = typeof(verticalOffset) != 'undefined' ? verticalOffset : 0; element = $('body'); offset = element.offset(); offsetTop = offset.top; $('html, body').animate({ scrollTop: offsetTop }, 100, 'linear'); } if (navigator.platform.toUpperCase().indexOf('MAC') >= 0) { let elements = document.querySelectorAll('strong.ctrlmeta'); elements.forEach((element) => { // Check if the innerText is "ctrl" if (element.innerText === 'ctrl') { // Create a new "i" element let newElement = document.createElement('i'); newElement.classList.add('fa-solid', 'fa-command'); // Replace the old "strong" element with the new "i" element element.parentNode.replaceChild(newElement, element); } }); } </script> </body> </html>